通过Linux系统转发UDP流量

通过Linux系统转发UDP流量

我想允许两个客户端(左侧)与一个远程实体(右侧)通信。除 Linux PC 之外的所有实体都无法配置监听端口。

我想象的解决方案如下

在此处输入图片描述

并使用以下 iptables 配置

iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING

sudo iptables -t nat -A PREROUTING -i enp10s0 -p udp --sport 55555 -j DNAT --to a.b.c.d:55555
sudo iptables -t nat -A PREROUTING -i enp7s0 -p udp --dport 33333 -j DNAT --to 192.168.11.11:55555
sudo iptables -t nat -A PREROUTING -i enp7s0 -p udp --dport 44444 -j DNAT --to 192.168.11.12:55555

sudo iptables -t nat -A POSTROUTING -o enp7s0 -p udp --dport 55555 -j SNAT --to-source e.f.g.h

sudo iptables -t nat -A POSTROUTING -o enp10s0 -p udp --match multiport --sports 33333,44444 -j SNAT --to-source 192.168.11.2

但这是行不通的:

  • 在 192.168.4.1 上,我看到来自 192.168.11 和 12 的传入流量
  • 但在 Linux PC 上,我没有看到 efgh 上接收到任何要转发到 .11 和 .12 客户端的流量。我的错误在哪里,或者我如何通过其他方式实现预期结果?

相关内容