linux更改源地址发送数据包,使用iptables重写某些传入数据包的源地址?

我有一个应用程序,其中设备将UDP流量发送到Linux机箱,在那里使用UDP samplicator进行复制并发送到多个其他设备进行分析 . UDP samplicator配置为在复制时保留原始传入数据包的源地址 . 那部分完美无缺 .

我今天在samplicator盒子上使用iptables有选择地不将UDP流量从某些来源转发到特定的分析目标,因为一些分析目标只需要查看来自某些设备的数据,这也很有效 .

我遇到麻烦的地方是,有一些设备需要在其传入的UDP流量上重写源地址,以克服某个特定设备供应商的一些限制 . 克服这个限制的最简单方法是在samplicator上使用iptables重新编写来自设备10.1.2.3的传入UDP数据包的源地址,然后将这些数据包复制到分析目标,这样他们就能看到流量到来另一个地址,如10.4.5.6 .

由于这是UDP并且分析目标不直接响应它们从设备接收的UDP数据包,因此我不需要担心双向转换流量 .

10.1.2.3 =设备的UDP流量来自的IP地址

10.4.5.6 =我们需要看到它的IP地址

10.7.8.9 =分析目标之一

我在我的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流量通过源地址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正常工作的任何见解将不胜感激 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值