首先祝贺这个网站,我刚刚发现它...猜测....谷歌搜索,呵呵。
其次,由于我是西班牙人,所以我的英语不好,请见谅。
我的问题是关于预路由规则,它在我的 iptable 脚本中不起作用。
其余规则(输入、输出、转发......)都可以正常工作,但这个规则不行:
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 25 -j DNAT --to 192.168.97.4:25
(eth2 是连接到互联网的接口)
我必须说我的脚本以 DROP 开头,如下所示:
iptables -p INPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP
但我没有类似的句子:iptables -P PREROUTING ACCEPT | DROP
由于iptables -L -n
我没有看到任何规则可以将到端口 TCP 25 的流量引入我的 LAN,这让我认为有些不对劲,并且在 Wireshark 中我可以看到外部 MTA(gmail 等)如何尝试连接我的防火墙但只得到了一个 SYN 数据包,实际上是三个数据包。
我已经读过我需要针对此特定端口(25)的后路由规则,但是我有此带有后路由的规则,这对我来说似乎足够了,但不确定,因为我来自 ISA Server,并且它的工作方式与 GUI 不同:
iptables -t nat -A POSTROUTING -s 192.168.97.0/24 -o eth2 -j MASQUERADE
我刚刚写的这个规则(我认为)是关于 NAT 的规则,以便 Linux 服务器可以成为 NAT 服务器。
答案1
根据您所写的内容,您应该添加一条规则,允许来自外部(互联网)的流量到达您的邮件服务器;如下所示:
iptables -A FORWARD -p tcp -d 192.168.97.4 --dport 25
您可以在一定程度上限制此规则,以便只允许 SYN 数据包和相关数据包,但这是基础。一旦此规则奏效,您就可以进一步调整它。
请记住,当您使用 NAT 规则时,您应该编写 FILTER 规则,就好像您的 NAT 规则不存在一样(即,您应该编写好像它们对您来说是透明的)。
此外,我建议您在主链(INPUT、OUTPUT 和 FORWARD)中添加“最后”规则,以便您可以捕获被拒绝的内容,而不是默默地将其丢弃/拒绝。类似这样的内容:
iptables -A INPUT -j LOG --log-prefix "INPUT: "
iptables -A INPUT -j DROP