IP 表转发问题

IP 表转发问题

提前感谢您的帮助。

我曾尝试在这里阅读和搜索,但似乎无法让它发挥作用。

计算机A:192.168.1.2 计算机B:192.168.1.3

我正在尝试从 .2 向 .3 发送一条 UDP 消息并更改端口。.2 将在 1003 上发送一条消息,而我希望 .3 在 1004 上接受该消息。

下面的代码放在.3电脑上

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.1.2 --dport 1003 -j DNAT --to-destination 192.168.1.3:1004
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.2 -p udp --dport 1003 -j REDIRECT --to-ports 1004
iptables -A FORWARD -i eth0 -p udp -d 192.168.1.2 --dport 1004 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

答案1

你的火柴错了。如果目的地192.168.1.2。就你的情况而言,来源192.168.1.2,目的地是192.168.1.3

此外,似乎你只需要DNAT规则或者规则REDIRECT是,并非两者兼而有之。

过滤规则应该在INPUT链中,因为目标是本地机器。我认为state在这个规则中使用模块是没有意义的,但可能需要添加其他连接跟踪相关规则;目前还不清楚是否需要这些规则。这取决于防火墙的其余部分。如果防火墙中没有任何东西,则不需要过滤规则,因为无论如何一切都会启用。

顺便说一句,state已经过时了,你应该使用conntrack模块、ctstate匹配来代替。

因此,您似乎需要以下两条规则:

iptables -t nat -A PREROUTING -s 192.168.1.2 -d 192.169.1.3 -p udp --dport 1003 -j REDIRECT --to-ports 1004
iptables -t filter -A INPUT -s 192.168.1.2 -p udp --dport 1004 -j ACCEPT

第一条规则将传入数据包重定向到 1003 端口和 1004 端口(传出数据包则返回)。第二条规则实际上允许此转换后的数据包到达本地进程。

相关内容