我有两个问题。
问题 1:我的 Debian 机器有接口 eth3,IP 为 192.168.57.28。如果有人尝试连接到 192.168.57.28:1234,我该如何将请求重定向到另一台机器:192.168.57.25:80?
问题 2:如果我的 Debian 机器有两个接口:eth3 为 192.168.57.28,ppp0 为某个动态 IP,并且有人尝试通过端口 1234 上的 ppp0 进行连接,我该如何将请求重定向到 192.168.57.25:80?
我尝试过这个:
iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 192.168.57.25:80
echo 1 > /proc/sys/net/ipv4/ip_forward
但它不起作用。
答案1
好的,规则看起来不错,但您必须记住,该机器中生成的数据包不会经过 PREROUTING。如果持有相关 iptables 的机器也需要以相同的方式重定向其自己的流量,则需要将相同的规则放入 OUTPUT。请参阅 iptables-extensions DNAT,它在 OUTPUT 和 PREROUTING 中都有效。
另一个可能引起问题的是过滤。请确保您还允许上述流量双向通过机器。
第三件事是,您可能还需要在 POSTROUTING 中伪装到该目的地的流量,以便找到回家的路线。
根据目前的信息,我无法判断数据包丢失的位置。使用 tcpdump 查看数据包飞到了哪里。