我在服务器上有两个适配器。
为了本例,我们将它们称为 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
端口上的传入连接转发到端口上的1234
ad2 上的 IP 。192.168.1.5
1238
我需要知道如何对 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