eth0 (192.168.1.0/24) --> wan
eth2 (192.168.10.0/24) --> lan0
我使用这些规则在我的 Linux 网关上启用 NAT:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
为什么我在一些在线指南中读到这样的规则?
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.10.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -d 192.168.10.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.10.0/24 -j ACCEPT
答案1
如果您使用这两行:
iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.10.0/24 -j ACCEPT
那么就安全性而言,这两个没有任何价值:
iptables -A FORWARD -s 192.168.10.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -d 192.168.10.0/24 -j ACCEPT
首先iptables -A FORWARD -s 192.168.10.0/24 -d 0/0 -j ACCEPT
,这将使iptables
来自192.168.10.0/24
子网的数据包转发到0/0
所有其他网络。后来你又明白了iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
,实际上这两条规则的含义是一样的。
仅当数据包源自或源时, Foriptables -A FORWARD -m state --state ESTABLISHED,RELATED -d 192.168.10.0/24 -j ACCEPT
才会iptables
接受并转发任何发往 的数据包。稍后,您会遇到一些冲突的规则,该规则将转发任何旨在使第一个规则无用的数据包,因为任何发往 的数据包将与第一个规则不匹配,但无论如何都会转发该数据包。192.168.10.0/24
ESTABLISHED
RELATED
iptables -A FORWARD -d 192.168.10.0/24 -j ACCEPT
192.168.10.0/24
192.168.10.0/24