我在两个不同的地理位置有两个linux服务器,一个服务器A( IP 1.1.1.1 ),一个服务器B( IP 2.2.2.2 )。我希望将到达服务器B上特定TCP端口(5678)的所有数据转发给服务器A。
我尝试过使用rinetd将数据从服务器B转发到服务器A。它工作得很好,但是在服务器A接收到的源IP正在更改为服务器B的IP地址。我希望服务器B充当一个简单的透明中继,源IP与原始客户端IP相同。
有什么办法完成这个任务吗?
发布于 2015-09-14 21:08:57
Iptable,这是一个用于配置netfilter防火墙的实用程序。
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -A PREROUTING -p tcp --dport 5678 -j DNAT --to-destination 2.2.2.2:5678
iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 5678 -j SNAT --to-source 1.1.1.1 Iptables是一个非常强大的工具,所以习惯它是必须的(http://linux.die.net/man/8/iptables或者谷歌一些教程)
但是,如果您使用nginx (http://nginx.org/en/docs/http/ngx_http_代理_module.html#proxy_经过)代理HTTP协议,则要容易得多
https://networkengineering.stackexchange.com/questions/22474
复制相似问题