もちろん、ポートとプロトコルを1行で定義することも可能ですが、TCPとUDPプロトコルを別々のFirewalldコマンドではなく1行にどのように定義しますか?
[root@centos8 /]# firewall-cmd --permanent --add-port=2222/tcp/udp
Error: INVALID_PORT: bad port (most likely missing protocol), correct syntax is portid[-portid]/protocol
[root@centos8 /]# firewall-cmd --permanent --add-port=2222/tcp-udp
Error: INVALID_PROTOCOL: 'tcp-udp' not in {'tcp'|'udp'|'sctp'|'dccp'}
[root@centos8 /]# firewall-cmd --permanent --add-port=2222/tcp|udp
-bash: udp: command not found
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
[root@centos8 /]# firewall-cmd --permanent --add-port=2222/tcp,udp
Error: INVALID_PROTOCOL: 'tcp,udp' not in {'tcp'|'udp'|'sctp'|'dccp'}
[root@centos8 /]# firewall-cmd --permanent --add-port=2222/tcp udp
usage: see firewall-cmd man page
firewall-cmd: error: unrecognized arguments: udp
[root@centos8 /]# firewall-cmd --permanent --add-port=2222/'tcp''udp'
[root@dynatrace /]# firewall-cmd --permanent --add-port=2222/tcp udp
usage: see firewall-cmd man page
最後の出力でわかるように、マニュアルページを確認しましたが、その例を見つけることができませんでした。
ベストアンサー1
マニュアルページによると、ポートには1つのプロトコルしか指定できません。これは、各ポートに対して2つのコマンドを実行する必要があることを意味します。
ポートは単一のポート番号またはポート範囲portid-portidです。契約は次のようにすることができます。どちらかTCP、UDP、sctp、またはdccp。
サービスが同じポートでTCPとUDPの両方をリッスンすることは非常にまれです。私が知っているサービスは、このように動作するサービスがちょうど一つありますが、まさにDNSです。
ライナーにするには、次のシェル機能を使用できます。
ftu() {
firewall-cmd --permanent --add-port="$1"/TCP
firewall-cmd --permanent --add-port="$1"/UDP
}
ftu 1000