我有一个应用程序,其中一个设备发送UDP流量到一个Linux机器,它使用UDP samplicator复制并发送到多个其他设备进行分析。 UDP samplicator配置为在复制时保留原始传入数据包的源地址。那部分工作完美。使用iptables重写某些传入数据包的源地址?
我今天在samplicator盒子上使用iptables来选择性地不将UDP流量从某些源转发到特定的分析目标,因为一些分析目标只需要查看某些设备的数据,而且这也是完美的。
我遇到麻烦的地方在于,我需要重新编写其传入UDP流量上的源地址以解决某个特定设备供应商的某些限制。解决这个限制的最简单方法是使用samplicator上的iptables在来自设备10.1.2.3的传入UDP数据包上重新写入源地址,然后将这些数据包复制到分析目标,以便他们看到流量即将到来另一个地址,如10.4.5.6。
由于这是UDP,并且分析目标没有直接响应从设备接收到的UDP数据包,所以我不需要担心双向翻译流量。
- 10.1.2.3,该设备的UDP流量从
- 10.4.5.6 =,我们需要看到它从 未来
- 10.7.8.9 =分析目标之一的IP地址即将= IP地址
我想这对我的samplicator箱: sudo iptables -t nat -A POSTROUTING -p udp -s 10.1.2.3 --dport 6343 -j SNAT --to-source 10.4.5.6:6343
在分析目标,我仍然看到大量的UDP通信未来通过与源码e地址10.1.2.3,与10.4.5.6无关。
$ sudo tcpdump -n -i eth0 host 10.1.2.3 and port 6343
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:02:56.443038 IP 10.1.2.3.19147 > 10.7.8.9.6343: sFlowv5, IPv4 agent 10.1.2.3, agent-id 2, length 276
19:02:56.914536 IP 10.1.2.3.55326 > 10.7.8.9.6343: sFlowv5, IPv4 agent 10.1.2.3, agent-id 1, length 1336
我在iptables中尝试了其他一些选项,但似乎没有任何工作。任何人都可以提供关于如何让NAT正常工作的见解将不胜感激。