将流量从TUN设备(C ++后端)转发到默认网关
以下问题只是我遇到的一个较大的解决方案中的一部分。到目前为止,所有其他元素似乎都起作用,因此,我将尝试描述我遇到问题的很小的部分。 我有一台Linux计算机,带有tun0(隧道接口)和eth0(女巫是我连接互联网的默认网关)。 目标:我的目标是接收从tun0传入的数据包,并将其转发到默认网关。所以实际上是一个非常简单的NAT案例,我想与伪造物理接口的tun0“共享” Internet。 Tun已使用创建 sudo openvpn --mktun --dev tun0 --user USER sudo ip addr add 10.2.0.1/24 dev tun0 sudo ip link set tun0 up 因此,我可以启动它并运行它,可以对其进行ping操作。此外,我还具有连接到此TUN设备的C ++应用程序,可以对其进行读写。(fti:这是我关注的教程:http : //backreference.org/2010/03/26/tuntap-interface-tutorial/) 我将对8.8.8.8提出的一些正确的ICMP(ping)请求转储到C ++中的字节数组中。现在,使用我的程序将其写入tun0设备。ICMP请求具有 源(10.2.0.10)-因此内核知道返回的路由(同一子网) 目的地(8.8.8.8)-Google的DNS 正确的校验和等。(在Wireshark / TShark中,它正确显示在tun0上) 然后,我有以下路线: iptables -F # flush iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE …