我正在尝试使用 tun 接口在 python 中在 Windows 上运行的 2 个 Ubuntu VM 之间建立第 3 层隧道。
当前配置:
VM1:
- enp0s3 我的主接口 192.168.0.105(VirtualBox 中的桥接接口)配置
- tun0 192.168.0.121 点点 192.168.0.122
VM2:
- enp0s3 192.168.0.106(VirtualBox 中的桥接接口)
- tun0 192.168.0.122 点点 192.168.0.121
我正在使用的 Python 脚本:https://gist.github.com/glacjay/585369/b229da72a0dc84dd27d12afc5b76d0c5c44bb9c3
我也尝试了 pytun(tun/tap 设备的 python 包装器)。
所以据我了解,我的主要问题是 tun0 没有向我的主接口接收/发送任何数据包。
如果我尝试从 enp0s3 ping tun0(ping -I enp0s3 192.168.0.121
):
- 在 enp0s3 tcpdump 上,我看到 ARP 请求,192.168.0.105 正在寻找 192.168.0.121
- 在 tun0 tcpdump 上没有任何反应。
如果我尝试从 tun0 ping enp0s3(ping -I tun0 192.168.0.105
):
- tun0 上的 icmp 请求
- 与 enp0s3 上的 icmp 请求无关
我尝试过很多方法:route、iproute、iptables但都失败了,也许是因为我不太擅长路由和 Linux 管理。
据我所知,如果在 tun 接口上写入某些内容,内核会将其放在“线路”上,然后内核会将传入的数据包放入 tun 接口。其他程序应该操纵这些数据包。这就是我的目标,编写可以在 tun 接口上写入和读取并进行操作的程序。但我无法启动,因为我被困在设置 tun 接口上。
任何帮助和想法都将不胜感激。
PS:抱歉,我的英语不好,第一次问这类服务的问题。我通常在网上寻找答案,但我已经在这里卡了 4 天了。