我有一个machine A
本地 IP 192.168.0.199
- 我想克隆本地机器上收到的所有 udp 数据包并转发到机器 A
我在 IP 表中尝试了以下操作
sudo iptables -A OUTPUT -t nat -p udp -s 127.0.0.1 --dport 32000 -j TEE --gateway 192.168.0.199
on machine A
- 我开始监听 UDP 数据包netcat -l -u -p 32000
在我的本地机器上 - 我发送了一个测试 UDP 数据包
echo 'ved' | nc -u 127.0.0.1 32000
该数据包似乎到达了我的本地实例端口,但我似乎无法接收克隆的数据包machine A
-
我还需要做其他什么事吗?
编辑- 所以如果我执行tcpdump
on machine A
- 数据包似乎确实到达了端口 - 但不确定为什么 netcat 没有捕获到 - 我也尝试监听所有接口
sudo tcpdump -n udp port 32000 -e
似乎确实显示了传入的数据包 - 但为什么 netcat 没有捕获到它
这可能与源 IP 没有改变有关吗?tcpdump 仍然显示 127.0.0.1 作为源 IP
答案1
因此,问题似乎是machine A
由于目标 IP 没有被 TEE 模块更改,导致数据包被丢弃
因此在Machine A
IP 表中我必须运行这个
sudo iptables -t nat -A PREROUTING -p udp --dport 32000 -j NETMAP --to 192.168.0.199