目前NAT主机和各个客户端都能够访问任何服务。 我喜欢NAT主机(运行IPTABLES的设备)只能访问HTTP(S),DNS和发送/响应ICMP请求。
我希望$ INTIF后面的内部客户端只能访问HTTP(S)和DNS。 我尝试了多港口,但我运气不大。 我接受其他build议。
*nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE COMMIT *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] -A INPUT -p tcp -i eth1 --dport 22 --sport 1024:65535 -m state --state NEW -j ACCEPT -A INPUT -i "$INTIF" -p udp --dport 53 -j ACCEPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A INPUT -m limit --limit 3/min -j LOG --log-prefix "input denied: " --log-level 7 -A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i "$INTIF" -o "$EXTIF" -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i "$INTIF" -o "$EXTIF" -m multiport -p tcp --dports 80,443 -j ACCEPT -A FORWARD -m limit --limit 3/min -j LOG --log-prefix "forward denied: " --log-level 7 -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "output denied: " --log-level 7 COMMIT
从第二个FORWARD规则中删除“NEW”(这是接受所有传出连接的东西)。
第三条和第四条规则应该是这样的
-A FORWARD -i "$INTIF" -o "$EXTIF" -m multiport -p tcp --dports 80,443,53 -j ACCEPT -A FORWARD -i "$INTIF" -o "$EXTIF" -p udp --dport 53 -j ACCEPT
另外,您的默认INPUT策略是接受,所以在logging“input被拒绝”之后,数据包仍然被接受。