A 作为日常使用代理,但不能访问某网站。 而 B 流量少,链路差,但可以访问某网站。 需求是 A 作代理访问某网站的 IP 段时(已知),转发至 B.
查到如下全部转发的办法,尝试了下可以正常工作。 iptables -t nat -A PREROUTING -p tcp --dport A 的端口 -j DNAT --to-destination B 的 IP:B 的端口 iptables -t nat -A POSTROUTING -p tcp -d B 的 IP --dport B 的端口 -j SNAT --to-source A 的 IP iptables -t nat -A PREROUTING -p udp --dport A 的端口 -j DNAT --to-destination B 的 IP:B 的端口 iptables -t nat -A POSTROUTING -p udp -d B 的 IP --dport B 的端口 -j SNAT --to-source A 的 IP
前几天刚刚做过类似的配置。 我们的场景是,A 要访问某个主机 C,但是由于某些原因 C 把 A 的流量 block 了,于是需要用 B 中转。
B 机 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source B 机 IP iptables -A FORWARD -i eth0 -o eth0 -s A 机 IP -j ACCEPT iptables -A FORWARD -i eth0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
A 机 ip r add C 机 IP/32 dev eth0 via B 机 IP
当然我们是内网环境,所以没有加额外的保护,你用的话应该要加上 IP 限定。 但是反正就是 SNAT 的事情。