iptables-mod-tee 用于监控 WAN 接口的传出流量

iptables-mod-tee 用于监控 WAN 接口的传出流量

在此输入图像描述

192.168.0.1/24我有一台 OpenWrt 路由器(v18.06.5,r7897-9d401013fc),它在LAN(在eth1)和一个公共 IP 140.82.118.4(在eth2)之间执行标准(开箱即用)NAT 。路由器已iptables-mod-tee加载并运行该模块。

我的目标是监控从接口流出eth2到 WAN 的流量。监控由运行“Wireshark”的计算机完成,该计算机位于 LAN(位于192.168.0.3)。

例如,当我ping 8.8.8.8从 LAN 上的另一台计算机(例如,来自192.168.0.2)时,我希望看到一个 IP/ICMP Echo 请求,该请求在 WAN 接口上发出ip.src==140.82.118.4ip.dst== 。8.8.8.8eth2

我使用以下命令修改 iptables 以将克隆的数据包发送到运行“Wireshark”的主机:
iptables -t mangle -A POSTROUTING -o eth2 -j TEE --gateway 192.168.0.3

ip.src它可以工作,但“Wireshark”显示带有==192.168.0.2ip.dst==的 IP/ICMP Echo 请求8.8.8.8...这是错误的,因为ip.src看起来像是在 SNAT(或伪装)之前!

应该ip.src140.82.118.4我的公共 WAN 接口的 IP...因为如果不是,那么将8.8.8.8 host不知道将 ICMP Echo 回复发送到哪里,但是 ping 命令正在从主机获取 ICMP Echo 回复8.8.8.8(如它应该)。

为什么会发生这种情况以及如何纠正?

答案1

mangle 的 POSTROUTING 中的规则比 nat 的 POSTROUTING 中的规则运行得早...因此,当您在 mangle 的 POSTROUTING 中执行 TEE 操作时,不会发生源 NAT ....请参阅下面附加的 iptables 图:https://th.bing.com/th/id/R.aa2afe9a3c09b762af0b59c8670c7740?rik=SvxGxvrwso1veg&riu=http%3a%2f%2flinux-ip.net%2fnf%2fnfk-traversal.png&ehk=kT6op7%2bDt4yCPX1npGPAw9m WOpRiFTZsA5qJ0HMDQZo%3d&risl=&pid= ImgRaw&r=0

iptables图

相关内容