when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.
在 Debian 系统中,可以使用 iptables 管理入站防火墙规则,并通过 iptables-persistent / netfilter-persistent 将规则持久化,避免系统重启后丢失。
本文以开放 TCP 443 入站端口为例,分别记录命令行添加规则和直接编辑 /etc/iptables/rules.v4 两种方式。
iptables 命令添加,再保存1 | sudo iptables -L INPUT -n -v --line-numbers |
或者:
1 | sudo iptables -S INPUT |
假设已经有:
1 | -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT |
如果采用状态防火墙风格:
1 | sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT |
不过要注意:如果后面已经有 DROP / REJECT,不能简单 -A 到最后。
例如当前是:
1 | 1 RELATED,ESTABLISHED ACCEPT |
那应该插到 DROP 前面,例如:
1 | sudo iptables -I INPUT 3 -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT |
检查:
1 | sudo iptables -L INPUT -n -v --line-numbers |
rules.v41 | sudo netfilter-persistent save |
它会把当前 IPv4 规则保存到:
1 | /etc/iptables/rules.v4 |
但它也会出发 IPv6 规则的保存,只是由于本文命令行用的是 iptables 而不是 ip6tables,所以仅新增 IPv4 规则
1 | sudo grep 443 /etc/iptables/rules.v4 |
应该能看到类似:
1 | -A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT |
注意 iptables-save 输出里可能自动出现:
1 | -m tcp |
/etc/iptables/rules.v4这种方式不先改当前内核规则,而是直接修改持久化配置。
建议先:
1 | sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak |
1 | sudo nano /etc/iptables/rules.v4 |
假设原来:
1 | *filter |
加入:
1 | -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT |
结果:
1 | *filter |
这个步骤很推荐:
1 | sudo iptables-restore --test /etc/iptables/rules.v4 |
没有输出通常就是通过。
可以直接:
1 | sudo iptables-restore < /etc/iptables/rules.v4 |
或者让 netfilter-persistent 加载:
1 | sudo netfilter-persistent reload |
1 | sudo iptables -L INPUT -n -v --line-numbers |
或者:
1 | sudo iptables -S INPUT |
命令方式:
1 | iptables 命令 |
这种方式更推荐,尤其是在远程 SSH 服务器上,因为可以先确认规则有效,再固化。
直接编辑方式:
1 | 编辑 rules.v4 |
更适合规则比较多、想整体整理配置的时候。
be slow to promise and quick to perform.