CentOS 7 为 firewalld 添加开放端口及相关资料
1, 运行, 停止, 禁用 firewalld
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd --state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
查看 firewall 是否运行, 下面两个命令都可以
- systemctl status firewalld.service
- firewall-cmd --state
查看 default zone 和 active zone
我们还没有做任何配置, default zone 和 active zone 都应该是 public
- firewall-cmd --get-default-zone
- firewall-cmd --get-active-zones
查看当前开了哪些端口
其实一个服务对应一个端口, 每个服务对应 / usr/lib/firewalld/services 下面一个 xml 文件.
firewall-cmd --list-services
查看还有哪些服务可以打开
firewall-cmd --get-services
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
更新防火墙规则:
firewall-cmd --reload
添加一个服务到 firewalld
firewall-cmd --add-service=http //http 换成想要开放的 service
这样添加的 service 当前立刻生效, 但系统下次启动就失效, 可以测试使用. 要永久开发一个 service, 加上 --permanent
firewall-cmd --permanent --add-service=http
如果要添加的端口并没有服务对应
就要新建一个服务, 在 / usr/lib/firewalld/services, 随便拷贝一个 xml 文件到一个新名字, 比如 myservice.xml, 把里面的
- <?xml version="1.0" encoding="utf-8"?>
- <service>
- <short>Transmission-client</short>
- <description>Transmission is a lightweight GTK+ BitTorrent client.</description>
- <port protocol="tcp" port="51413"/>
- </service>
short 改为想要名字 (这个名字只是为了人来阅读, 没有实际影响. 重要的是修改 protocol 和 port. 修改完保存. 我的经验是这是要重启 firewalld 服务, systemctl restart firewalld.service, 否则可能提示找不到刚才新建的 service. 然后把新建的 service 添加到
- firewalld
- firewall-cmd --permanent --add-service=myservice
重启 firewalld 生效
来源: http://www.bubuko.com/infodetail-3103116.html