将流量从 TUN 接口转发到 XX

将流量从 TUN 接口转发到 XX

我的设置如下:我正在编写一个程序来创建一个接口并将原始(第 3 层)数据包写入该接口。例如 ICMP ping 数据包(为了让事情变得简单)。

现在我想将这些数据包从 tun 接口重定向到我的 eth 接口。我已经尝试了典型的 FORWARD iptables 规则,并且选项 ip_forward 设置为 1。

我可以在 wireshark 中看到 tun 接口的有效 ICMP 数据包,但重定向不起作用,wireshark 中没有显示任何 eth 接口的信息。ping 指向外部服务(例如 8.8.8.8)。

我想我遗漏了为什么这不起作用的一个关键因素,但却看不到它......

信息:我已经搜索了所有“转发至 XX”的帖子,但没有找到真正有效的解决方案。

编辑:

Iptable 规则:

sudo iptables -F
sudo iptables -t nat -F
sudo iptables -A FORWARD -i tun0 -o wlp4s0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o wlp4s0 -j SNAT --to-source 192.168.2.73

SNAT我也尝试了以下 MASQUARADE 规则:

sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o wlp4s0 -j MASQUERADE

两次均未成功。

输出ip addr

46: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none
    inet 10.0.0.1/24 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::1218:6be2:934b:355b/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

输出ip route

10.0.0.0/24 dev tun0 proto kernel scope link src 10.0.0.1

sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

相关内容