firewalld 单行定义 TCP 和 UDP

firewalld 单行定义 TCP 和 UDP

当然可以在一行中定义端口和协议,但是如何在一行中定义 TCP 和 UDP 协议而不是作为单独的 firewalld 命令呢?

[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

根据手册页,您只能为一个端口指定一种协议,这意味着必须为每个端口运行两个命令。

端口可以​​是单个端口号,也可以是端口范围 portid-portid。协议可以要么是tcp、udp、sctp 或 dccp。

服务在同一端口上同时侦听 TCP 和 UDP 的情况非常罕见。我只知道有一个服务以这种方式运行,它就是 DNS。

要使其成为一个衬垫,您可以使用 shell 函数,例如

ftu() {
    firewall-cmd --permanent --add-port="$1"/TCP
    firewall-cmd --permanent --add-port="$1"/UDP
}

ftu 1000

答案2

一行即可完成

我知道这是一个长期存在的问题,但我注意到没有人提供答案。我已经尝试过一些,最好的解决方案似乎是使用扩展。这可能会变得相当棘手。

# simple
firewall-cmd --add-port={80,443}/tcp

# both protocols
firewall-cmd --add-port={80,443}/{tcp,udp}

# can be a bit complex (notice nested brackets)
firewall-cmd --add-port={{80,443}/{tcp,udp},{110,995}/tcp}

然后检查你做了什么:)

firewall-cmd --list-ports

这只是一个演示,展示如何使用端口和协议来创建组合。

服务更好

我也尝试过--add-services,其名称可以在/etc/services文件中找到。它也可以工作,而且比使用端口更优雅。

名称和端口都在那里,例如

grep -E 'http|imap|pop3|smtp|dns|ftp' /etc/services

我们也可以这样做:

# Simple and readable
firewall-cmd --add-service={http,https}
firewall-cmd --list-services

希望它能展示如何优雅地做到这一点。

相关内容