将 UDP 流量复制到本地主机的两个端口

将 UDP 流量复制到本地主机的两个端口

我需要将传入的 UDP 流量重定向到本地主机上监听不同 UDP 端口的两个服务。我尝试过:

iptables -t nat -I PREROUTING -p udp -d 10.11.12.13 --dport 22 -j DNAT --to-destination 127.0.0.1:1234 --to-destination 127.0.0.1:4321

但错误是:

iptables v1.6.0:DNAT:不支持多个 --to-destination

与选项相同--to-ports

iptables v1.6.0:REDIRECT:选项“--to-ports”只能使用一次

然后我尝试了 iptablesTEE。但在--gateway选项中它只暗示 IP 地址,所以我甚至不能这样做:

iptables -t mangle -I PREROUTING -p udp -d 10.11.12.13 --dport 22 -j TEE --gw 127.0.0.1:1234

有没有办法在 Linux 中使用 iptables 或其他方便的方式“复制” UDP 流量?

PS 问题是关于单向 UDP 流量(例如传入系统日志流量)。显然,在这种骗局中,它与 TCP 无关,因为 TCP 有连接,不可能从一个端口到另外两个端口建立连接。但似乎可以用 UDP 来完成(因为不需要建立连接)。


一些帖子澄清了情况,但没有帮助: 123

答案1

我能想到的唯一其他事情是使用一些数据包嗅探器捕获流量,然后将其重新发送到另一个目的地。

检查以下链接:

https://linux.die.net/man/1/tcpreplay-edit

https://linux.die.net/man/1/tcpreplay

http://tcpreplay.synfin.net/wiki/tcprewrite

据我理解,它可能看起来类似于以下内容: tcpdump -i eth1 -w - 'udp and port 80' | tcprewrite --portmap=80:8080 | tcpreplay -i eth1 - 或者基于“tcpreplay-edit”文章的类似内容: tcpdump -i eth1 -w - 'udp and port 80' | tcpreplay --portmap=80:8080 -i eth1 -

相关内容