我需要在 CentOS 机器上打开多个不同的端口(不在范围内)。
我知道如何使用 打开端口firewall-cmd
,但打开 40 个或更多端口会很麻烦。
是否有一个配置文件,让我可以在一个地方定义所有开放端口?遗憾的是,我没有找到任何相关信息。
答案1
您可以从包含所有所需端口的 xml 文件中定义服务,从中添加服务然后启用它。创建 service.xml 文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<service>
<port port="port1" protocol="proto1"/>
<port port="port2" protocol="proto2"/>
<port port="port3" protocol="proto3"/>
<port port="port4" protocol="proto4"/>
</service>
添加新服务:
# firewall-offline-cmd --new-service-from-file=service.xml --name=My_Service
重新加载防火墙-cmd:
# firewall-cmd --reload
然后添加您的服务:
# firewall-cmd --add-service My_Service
答案2
firewall-cmd --permanent --add-port={80/tcp,443/tcp,9200/tcp,5601/tcp,5044/tcp}
firewall-cmd --reload
答案3
您可以随时制作一个小脚本/单行代码:
#!/bin/bash
for i in 80 443 22 123 21 1337 31337
do
firewall-cmd --zone=public --add-port=${i}/tcp
done
答案4
尽管这是一个非常古老的问题,但它确实“有趣”,所以我认为我应该回答它。
所有可能的端口都在一行中
# simple
firewall-cmd --add-port={80,443}/tcp
# Both protocols
firewall-cmd --add-port={80,443}/{tcp,udp}
# can be a bit complex and note the nested parentheses
firewall-cmd --add-port={{80,443}/{tcp,udp},{110,995}/tcp}
然后输入以下命令查看你做了什么:)
firewall-cmd --list-ports
但服务更好
我也尝试过--add-services', whose names can be found in
/etc/services。它甚至比使用端口更好。名称和端口都在该文件中,因此您可以列出其中一些:
grep -E 'http|imap|pop3|smtp|dns|ftp' /etc/services
我们可以通过输入以下内容来打开端口:“:
# readable
firewall-cmd --add-service={http,https}
firewall-cmd --list-services
暂时就这样。