我正在从用户空间程序发送数据包到我的无线接口wlan0。 我已经用iptables设置了一个SNAT规则,如下所示
iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to 192.168.1.3
它适用于从我的机器出来的所有正常stream量。
我正在开发一个程序,需要从第2层开始创build数据包.Iptables不会将SNAT应用于此程序发送的任何第3层数据包。
有没有什么办法可以从第二层的用户空间发送数据包,仍然有NAT应用到他们?
我已经从超级用户转发了这个。 如果我在那里得到任何东西,将会更新。
当数据包直接在以太网接口上发送时,它们将不会穿过内核networking堆栈中的IP层。 这意味着没有iptables。
您需要让程序按照您希望的方式生成数据包,否则您需要将数据包通过networking堆栈中的IP层发送出去。
有几种不同的方法可以通过networking堆栈获取数据包:
原始套接字绕过netfilter堆栈,所以iptables将不会影响这些数据包。