Anydesk是一款很好用的远程协助软件,但是由于是德国的产品,国内没有服务器,不同网络环境下体验差异极大。为了愉快地在国内使用Anydesk,我研究了一些中转方案,记录如下。
1. 组建局域网
即通过软件让异地的计算机组成虚拟的局域网,让它们通过局域网的中转节点连接。常用的软件包括某公英和Zerotier One,前者是国内产品,网络自然更好,但是我对国内公司总有一些隐私上的顾虑,要是用某公英,我干嘛不直接用国内的远程工具得了?
Zerotier One的使用方法不赘述了,主要讲一下moon。
Zerotier One中,局域网下的计算机会尝试建立P2P连接,但是很多时候由于复杂的网络环境,依然需要中转,比如我遇到的情况就是如此,中转服务器依然在国外,这个局域网等于建了个寂寞。
解决办法也是有的,Zerotier允许我们自建中转节点,称为moon。首先,需要一台网络叫好的VPS,比如一台国内小鸡,moon有很多不同人维护的docker镜像,我们可以直接使用,比如:
$ docker run --name zerotier-moon -d --restart always -p 9993:9993/udp jonnyan404/zerotier-moon -4 <IP>
其中端口可以根据需要修改(记得开放防火墙),IP是小鸡的公网IP。完成之后可以在日志中看到moon id:
$ docker logs zerotier-moon
IPv4 address: xx.xx.xx.xx
Your ZeroTier moon id is xxxxxxxxxx, you could orbit moon using "zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx"
然后在电脑上输入上面显示的那条命令,添加moon(Linux用root或者sudo,Windows用管理员权限的命令行):
$ sudo zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx
之后重启服务或者重启系统,经过moon中转后应该能从ping值上看出明显区别,想确认的话,用
$ sudo zerotier-cli listpeers
显示moon的IP或者id即可。
Anydesk的话,直接输局域网IP连接。然而这个方案我没用多久,具体原因记不清了,似乎是切换网卡或者热点时,Zerotier One会导致无法联网,要疑难解答一下才行。
2. 端口映射
另一个方法是端口映射,也是我现在用的方案,使用frp之类的工具,安装方法不赘述了,frp的release自带systemd服务文件,Windows的话可以用winsw(参考这里)。Anydesk默认使用7070端口,可以在设置里修改,把它映射到小鸡的某端口即可,记得开放端口(似乎是走tcp,不过为了保险我把udp也开了)。使用Anydesk时直接输小鸡的IP和端口连接。
呃,你问没有小鸡怎么办?我没有研究过,或许可以用ddns+内网穿透让两台电脑直连?
文章评论