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