看雪ksa组建虚拟局域网 简单高效
frp/Zerotier/ksa
除了frp外,想要组建虚拟局域网进行流量转发还有一个很有名的方案就是Zerotier, Zerotier的优点是不需要机器拥有公网ip且配置相当简单,可以在第三方服务器的“牵线”下打洞建立连接,Zerotier介绍。但是缺点也相当明显,进行iperf3测速时,虽然一开始速度能够跑满上传带宽,但在跨运营商(我还不知道同运营商会不会有这个问题)等情况下,只能做“三秒真男人”,速度很快就会骤降,因为Zerotier的传输使用的是udp,而国内目前udp环境恶劣,极易被运营商限制。 有大佬说是因为moon服务器的问题,但是我用国内的阿里云自建了一个moon服务器后,这种状况依旧没有改善太多…原因依旧未知 参考教程
如图,Zerotier一开始跑的相当的快,然而一段时间后就突然暴毙,这种现象在晚高峰尤其常见。
那么有没有使用tcp来进行p2p连接建立虚拟局域网的软件呢?今天发现了一个神器,看雪安全接入KSA,今天实测tcp打洞(貌似并非tcp)建立连接后跑满了联通机器的上传带宽,且基本不受QOS影响。
但是遇到了一个问题,查看linux服务端,貌似开启的p2p连接是使用udp的,如果强制使用tcp时貌似无法建立p2p连接,而是经过看雪的服务器来中转,这样就很慢了,但是不知道是不是udp伪装成了tcp?ksa要比zerotier稳定很多,可以长时间跑满上传带宽且不会突然失去速度, 希望清楚原因的大佬可以为我解释一下。。
使用ksa打洞连接之后,满速跑了五分钟都没有被制裁
同一时段frp和ksa对比
frp
ksa
在晚上中转某不可言说之软件后播放视频的速度
KSA安装
ksa目前还处于测试阶段,不过也有了linux各种架构的版本了,前往论坛页面下载https://bbs.pediy.com/thread-252417.htm, 官方也有一个简易的教程
ksa需要一个机器运行服务端,另一个机器运行客户端,默认配置文件ksa.conf如下
#[log]=klog.log
#[host]=nat.kanxue.com
#[udp]=0
######## SERVER CFG ########
#[nat_nic]=eth0
#[nat_tun]=2
#[dhcp_ip]=10.0.0.1
#[dhcp_mask]=255.255.255.0
#[dhcp_dns]=114.114.114.114
#[cipher]=aes_256_cfb
#[route]=
#192.168.0.0/255.255.255.0
#192.168.2.0/255.255.255.0
############################
######## CLIENT CFG ########
#[uid]=
#[psk]=
#[tun_name]=ksa_tun1
#[tun_ip]=10.0.0.10
#[fwd]=1
############################
ksa服务端
服务端其实可以不对这个配置文件做任何修改,直接chmod +x ksa_x64
再用./ksa_x64
即可运行,成功运行后会显示服务端使用的uid以及psk,记下等下用于配置客户端。
注意,服务端的路由配置部分,如果你发现这里面有网段和你本地的网段一样,那么记得手动指明路由,不然可能会和本地冲突导致局域网断连
如我本地使用了192.168.0.0/24的网络,如果不手动指明而是用默认值的话,接入ksa的设备会默认添加一条路由规则,使得192.168.0.0/24的数据也走ksa_tun隧道,这样就会导致局域网无法连接。
[route]=
#192.168.0.0/255.255.255.0
#192.168.2.0/255.255.255.0
10.0.0.0/255.255.255.0
ksa客户端
在客户端上只需要简单修改uid和psk即可,其它的也不用管,运行方式一样。
在服务端和客户端都运行之后,使用ifconfig应该就可以看见虚拟局域网下的ip了。虽然默认[udp]=0但是实际使用种,一开始ksa服务端就显示udp link,不知道为什么…
更新配置后重新运行
在更改配置文件后需要结束进程再重新运行ksa,使用命令ps aux |grep ksa
即可找出ksa进程号并kill。
一些问题的解决
开启ksa后局域网无法连接
在树莓派上使用ksa的时候出现了一个较为麻烦的问题…开启ksa后,ssh即断开。通过先frp把ssh转发到其他的服务器上,再开启ksa,发现ssh依旧可以连接,确认只是局域网断开连接。
使用route -n查看当前的路由规则,发现一条:192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ksa_tun
,使用route del -net 192.168.0.0/24 gw 0.0.0.0 dev ksa_tun
删除该规则后局域网中又可以连接了
个人体验
个人体验下,ksa要比zerotier稳定很多,建立局域网后就可以结合socat或者dokodemo-door来中转流量了,不知道同样使用udp(应该)是怎么做到的,之后我还要多多研究。还有就是目前我还不知道两个没有公网ip的机器之间连接效果如何,还有待测试。