将一个适配器上的传入连接转发到另一个适配器?

将一个适配器上的传入连接转发到另一个适配器?

我在服务器上有两个适配器。

为了本例,我们将它们称为 ad1 和 ad2。

 ad1, ip = xxx.xxx.x.x (internet connection)
 ad2, ip = 192.168.1.1 (this system is the gameway for 192.168.1.5)

我需要将ad1端口上的传入连接转发到端口上的1234ad2 上的 IP 。192.168.1.51238

我需要知道如何对 UDP 和 TCP 执行此操作,但使用单独的命令,因为有时我需要转发 UDP,有时我需要转发 TCP。

我对使用 iptables 还很陌生,所以只是寻求一些帮助。

答案1

谢谢阿穆克在 reddit 上寻找这个答案。我想我也会在这里发布它,以防有人遇到这个问题。

首先,您需要启用 IP 转发。
出于安全原因,此功能默认为禁用。

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

然后运行以下命令提交更改并重新加载 sysctl 配置

sysctl -p

然后您需要编写IPTables规则来转发连接。

TCP

iptables -t nat -A PREROUTING -i ad1 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.1.5:1238

UDP

iptables -t nat -A PREROUTING -i ad1 -p udp --dport 1234 -j DNAT --to-destination 192.168.1.5:1238

从接口 ad1 传入的数据包-i ad1符合条件(TCP/UDP + 端口号),NAT 到目的地:端口

您还需要以某种方式保存 IPTables 规则,并在启动时恢复这些规则。
具体如何执行此操作取决于发行版。

编辑
要删除规则,请使用-D(delete) 代替-A(append)

例如
删除 TCP 转发规则

iptables -t nat -D PREROUTING -i ad1 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.1.5:1238

相关内容