我有一個應用程序,其中一個設備發送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正常工作的見解將不勝感激。