刚开始用的时候,觉得 Firewalld 真的好难用的说,完全不懂为什么 firewall-cmd
只能在 firewalld 启动的时候才能使用嘛。。
记得第一次用的时候,直接把 ssh 端口给禁用了,这可惨了。。
停用 firewalld
-> 修正不了错误的配置,启用 firewalld
,ssh 连不上,还是修正不了错误的配置。
明明就是写文件嘛!干嘛弄得这么麻烦 o(╥﹏╥)o
找了好久,挂载救援模式,cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
,然后修改这个文件的 ssh 对应端口号为正常端口号,重新启动至正常模式,大概才可以。
然后后来知道了可以用 firewall-offline-cmd
在 firewalld 离线的时候使用。
firewall-cmd --reload # 采用磁盘上的配置文件
firewall-cmd --runtime-to-permanent # 采用内存中的配置并写入磁盘
firewall-cmd --list-all-zones # 查看当前所有的魔法
firewall-cmd --permanent --zone=trusted --change-interface=docker0 # 把 Docker 的 adaptar 添加到信任列表
一个可能的 rich rule
, rich rule 2
:
(事实证明这个东西并没有什么用,管理起来还麻烦)
firewall-cmd --add-rich-rule='rule family="ipv4" destination address="[ip4]" forward-port port="80" protocol="tcp" to-port="8080" to-addr="127.0.0.1"'
不管怎么说,下面的 服务 似乎更好用一点:
默认服务在 /usr/lib/firewalld/services
自定义服务放在 /etc/firewalld/services
里面然后 firewall-cmd --add-service=<name>
就可以了。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>www</short>
<description>HTTP and HTTPS nginx service</description>
<port protocol="tcp" port="80"/>
<port protocol="tcp" port="443"/>
<port protocol="udp" port="443"/>
<destination ipv4="[ip4]" ipv6="[ip6]"/>
</service>
← VPS 的初始配置 BBR 拥塞控制算法 →