近期,出于工作需要,经常需要远程访问客户的服务器。然而,并非所有的服务器都可以开放外部端口进行远程访问。使用向日葵等软件并不总是方便。因此,我尝试了许多工具,包括zerotier等。另外由于一些服务器位于国外,工具的兼容性也带来了一些困难。
于是我开始寻找自己的组网工具解决方案,并最终发现了snltty大佬的项目链接: https://github.com/snltty/p2p-tunnel 。通过学习后发现该项目是基于tun2socks实现的。
tun2socks的优点在于将虚拟网卡数据打包到Socket代理中,但是它会过滤掉ping(ICmp)数据包,而且自行返回成功的数据包,这并不符合我的需求。
于是,我深入研究了tun2socks的实现方式,并手动基于tun/tap实现了一个简易的解决方案。
核心代码:
Linux核心代码:
以下是远程桌面的效果:
客户端运行:
打洞成功:
测速:
项目代码地址:
https://github.com/hn-lyf/RemoteNetwork
测试客户端:
Linux-x64版本
Windows-x64版本
Windows-x86版本
标签:游戏攻略