![修改 iptables 规则和默认策略但保留端口转发](https://linux22.com/image/650600/%E4%BF%AE%E6%94%B9%20iptables%20%E8%A7%84%E5%88%99%E5%92%8C%E9%BB%98%E8%AE%A4%E7%AD%96%E7%95%A5%E4%BD%86%E4%BF%9D%E7%95%99%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91.png)
我的防火墙脚本末尾有以下规则和策略:
$IPT=/sbin/iptables
...
$IPT -P FORWARD ACCEPT
$IPT -F FORWARD
# Forward port 2206 to data6
$IPT -A INPUT -i eth1 -s 192.168.1.0/24 -d 6X.XXX.XXX.YY7 -p tcp --destination-port 2206 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 2206 -j DNAT --to-destination 192.168.1.2:22
# accept port 22 for the machine 192.168.1.2
$IPT -A FORWARD -j ACCEPT --protocol tcp --destination 192.168.1.2 --destination-port 22
192.168.1.2
使用这些规则,我可以使用ssh 192.168.1.2
或 使用 直接 ssh 到主机ssh -p 2206 6X.XXX.XXX.YY7
。
我想将默认转发策略从 更改ACCEPT
为DROP
。但是,当我尝试这样做时,我无法访问主机192.168.1.2
。
我应该担心默认接受策略吗?
如何调整规则以适应策略DROP
?
答案1
如果将默认策略更改为 DROP,则需要允许流量从 192.168.1.2:22 通过防火墙返回。
$IPT -A FORWARD -j ACCEPT -m conntrack --ctstate ESTABLISHED
$IPT -A FORWARD -j ACCEPT -p tcp -d 192.168.1.2 --dport 22
可能还需要通过添加以下内容来允许反向 DNS 查找:
$IPT -A FORWARD -j ACCEPT -p udp -s 192.168.1.2 --dport 53
答案2
您可以保留默认策略,只需将其添加$IPT -A FORWARD -j DROP
到脚本末尾即可有效删除之前未匹配的任何内容。