我有 2 个 linux 服务器,服务器 A 的 IP 为 1.1.1.1,服务器 B 的 IP 为 2.2.2.2,位于 2 个不同的地理位置。我希望所有到达服务器 B 上特定 TCP 端口 (5678) 的数据都转发到服务器 A。
我曾尝试使用 rinetd 将数据从服务器 B 转发到服务器 A。它工作正常,但是在服务器 A 接收到的源 IP 正在更改为服务器 B 的 IP 地址。我希望服务器 B 作为一个简单的透明中继和源 IP 与原始客户端 IP 相同。
有没有办法完成这个任务?
我有 2 个 linux 服务器,服务器 A 的 IP 为 1.1.1.1,服务器 B 的 IP 为 2.2.2.2,位于 2 个不同的地理位置。我希望所有到达服务器 B 上特定 TCP 端口 (5678) 的数据都转发到服务器 A。
我曾尝试使用 rinetd 将数据从服务器 B 转发到服务器 A。它工作正常,但是在服务器 A 接收到的源 IP 正在更改为服务器 B 的 IP 地址。我希望服务器 B 作为一个简单的透明中继和源 IP 与原始客户端 IP 相同。
有没有办法完成这个任务?
iptables 是一个用于配置 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或只是谷歌一些教程)
但是,如果您使用代理 HTTP 协议 - 使用 nginx ( http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass ) 会容易得多