跑步时脑洞一开,想到要自己写一个简单的vpn服务器,搜了一下,有很多现成的库或组件,但是好奇于如果要自己用python开发,可以怎样实现?回复内容:
如果只是实现一个简单的vpn,个人使用,的确非常简单。代码量最多几百行。因为现在各大操作系统内核都已经内置tun/tap 支持,应用层通过相应接口就可以非常容易的建立点对点的tunnel,并生成虚拟网卡。之后通过iptables之类的工具设置好系统数据转发就ok了。基本现在的vpn也都是这样实现。关于tun/tap: https://zh.m.wikipedia.org/wiki/tun一个非常简单的linux c实现版本:https://github.com/cloudwu/mptunpython 实现类似,基本流程无外乎是打开 /dev/net/tun 操作 tun 接口,tcp或者udp之类建立数据转发通道转发数据。