小编Mar*_*ski的帖子

将流量从 TUN 设备(C++ 后端)转发到默认网关

以下问题只是我遇到问题的更大解决方案的一部分。到目前为止,所有其他元素似乎都在工作,所以我将尝试描述我有问题的非常小的部分。

我有一台 linux 机器,带有tun0(隧道接口)和eth0(witch 是我默认的互联网网关)。

目标:我的目标是接收从 tun0 传入的数据包,并将它们转发到默认网关。所以实际上非常简单的 NAT 案例,我想与伪造物理接口的 tun0“共享”互联网。

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
Run Code Online (Sandbox Code Playgroud)

所以我让它启动并运行,我可以 ping 它等等。此外,我有 C++ 应用程序,它连接到这个 TUN 设备,可以读取和写入它。(fti:这是我遵循的教程:http : //backreference.org/2010/03/26/tuntap-interface-tutorial/

我将一些对 8.8.8.8 发出的正确 ICMP(ping)请求转储到 C++ 中的字节数组中。现在,使用我的程序将它写入 tun0 设备。ICMP 请求有

  • source (10.2.0.10) - 所以内核知道返回的路由(同一个子网)
  • 目的地 (8.8.8.8) - Google 的 DNS
  • 正确的校验和等(在 Wireshark /TShark 中,它在 tun0 上正确显示)

然后,我有以下路线:

iptables -F # flush
iptables …
Run Code Online (Sandbox Code Playgroud)

nat routing icmp forwarding tun

10
推荐指数
1
解决办法
2031
查看次数

标签 统计

forwarding ×1

icmp ×1

nat ×1

routing ×1

tun ×1