我遇到一种情况需要帮助。我的客户端需要将流量重新路由到远程服务器上的特定端口,我想使用 iptables 帮我重定向。
配置如下:
客户端使用 smtpout.secureserver.net 进行 SMTP 通信。服务器将接受端口 80 或端口 3535 上的 SMTP 通信。问题是我已经将发往端口 80 的出站通信重定向到端口 8080 上的透明代理。当客户端尝试发送电子邮件时,连接超时。
我想要做的是构建一个 iptables 规则,将发往 smtpout.secureserver.net:80 的流量重定向到 smtpout.secureserver.net:3535。
这是我目前所拥有的,但它似乎没有按照我期望的方式工作:
-A PREROUTING -i eth1 -d 72.167.82.80/32 -p tcp --dport 80 -j DNAT --to-destination 72.167.82.80:3535
-A POSTROUTING -j MASQUERADE
答案1
假设您不想将客户端配置为使用 3535,这似乎是这种相当奇怪的设置最合乎逻辑的做法。
您的 iptables 命令缺少表部分,因此您需要在开头添加“-t nat”。
您正在将规则“附加”(“-A”)到现有的预路由链;所有先前存在的规则将首先执行。如果透明代理规则也在其中,它将首先执行并处理流量,您的规则永远不会匹配/执行。
尝试将其插入(-I)在顶部(第一个位置)或将其添加到特定位置(-I PREROUTING 5 用于第五条规则)。
如果这不起作用,我相信我们没有足够的信息;请考虑查看(在路由器的 wan 接口上)流量实际使用 tcpdump 的位置,并发布完整的规则集。