使用 Iptables 转发 TCP 连接

使用 Iptables 转发 TCP 连接

我从多个 IP 地址接收到我的服务器的连接,我想像 rinetd 一样路由这些连接,但要基于连接来自的 IP 来连接到指定的主机。

像这样:

IP 10.10.12.1    => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 82.12.12.1
IP 10.10.12.2    => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 81.121.12.10

ETC

是否有可能或者我需要编写自己的守护进程来实现此功能?

答案1

iptables可以这样做:

sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -j DNAT --to 82.12.12.1
sudo iptables -t nat -A POSTROUTING -s 10.10.12.1 -d 82.12.12.1 -j MASQUERADE

第一个命令更改数据包的目标地址,将其重定向到外部主机。第二个命令更改源地址,因此外部主机可以向您的服务器发送回复。

可能你只想重定向发往特定端口的数据包,例如,如果 10.10.12.1 仅通过 TCP 端口 80 和 1234 与 82.12.12.1 通信,则第一个iptables命令将是:

sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -p tcp -m multiport --destination-ports 80,1234 -j DNAT --to 82.12.12.1

相关内容