![iptables:允许某些端口转发到互联网](https://linux22.com/image/599710/iptables%EF%BC%9A%E5%85%81%E8%AE%B8%E6%9F%90%E4%BA%9B%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E5%88%B0%E4%BA%92%E8%81%94%E7%BD%91.png)
这是我们的网络:
WAN <--> Router <--192.168.2.X--> [(eth0) firewall (eth1)] <--192.168.0.X--> LAN
我们需要阻止 LAN 客户端访问 Internet 上的所有内容除了连接到某些端口,如 SMTP、IMAP 和 POP。我尝试了以下规则,但无法连接到我们想要允许的任何端口。
iptables -F
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport smtp -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport pop3 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport imap -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
按照这些规则,以下测试将失败:
telnet smtp.gmail.com 25
如果我刷新规则,上述测试就会成功。
我的规则有问题吗?我遗漏了什么吗?
答案1
DNS 的配置是什么?如果 DNS 在外部区域,则需要打开 DNS 查询端口(53-udp 和 tcp)