如何使用tun/tap Python模块(pytun)创建P2P隧道?

2 投票
2 回答
3695 浏览
提问于 2025-04-17 18:43

我想做一个简单的点对点虚拟私人网络(VPN)应用,经过很多搜索,我发现了一个叫PYTUN的Python模块,它可以用来创建隧道。请问我该如何使用这个模块在两个远程设备之间建立隧道呢?

所有附带的文档只展示了如何在本地计算机上创建隧道接口并进行配置,但没有提到如何将它连接到远程设备。

2 个回答

0

如果有人通过谷歌找到这个旧问题,可以看看 python-pytun(代码库在这里)。里面有一些示例脚本,展示了如何实现简单的IP和以太网隧道。

基本的想法是,你需要在两个地点之间建立一个TCP连接(可以通过常见的socket API来访问);同时,两个通信方都要创建一个TUN或TAP接口。

每个主机会运行一个循环,从socket和TUN/TAP接口读取数据(数据包),然后把每个数据包写入到另一个设备。这时候你可以在你的隧道中添加加密功能……

我想提醒大家一个警告:虽然自己写一个VPN隧道应用可能会很有趣,但如果你打算把这个隧道用于其他目的,强烈建议使用现有的隧道应用或技术栈(比如OpenVPN、IPSec等)。即使是专家,搞定加密和协议的细节也非常困难,而对于非专家来说几乎是不可能的。

0

pytun 这个工具不够用。它的作用是把你的 Python 应用程序连接到系统的网络接口。简单来说,你需要自己去实现这个网络接口。

如果你想让通过这个网络接口的流量在真正的网络上进行传输,那么你的 Python 程序就得负责实际的数据传输工作,把数据从主机 A 移动到主机 B。

这可能需要做很多工作,而且要做好并不简单。我建议你使用现成的 VPN 工具来解决这个问题。

撰写回答