因为很多很多的原因,我时常要远程控制一下在家里和在出租房内的电脑,但我家里是要不到公网地址的移动,我出租屋是在两层nat后面的房东网络,内网穿透就成为了我几乎必备的方案。
试过很多种内网穿透方案,最早的时候,我使用过向日葵远程控制免费版,但是那个版本,速率低质量差,唯一的好处是国内的服务器,不需要担心家里的移不动连不上服务器。
之后使用了teamviewer个人免费版,用起来还行,比起向日葵来说好了一点,但不爽的是teamviewer的远程图像质量也是一般,而且远程连上之后会导致桌面变成纯黑色。
在去年,正式的把远程方式换成了真正的内网穿透模式,在aliyun的服务器上搭建了frps,也就是frp的服务端,使用上了真正的内网端口转发的模式连接,这样可以不需要额外安装远程控制软件,就可以使用微软自带的远程桌面连接到内网后的PC。
但终究frp是一个基于TCP转发方式的端口转发工具,所有的连接都使用了服务器作为中转,这样对使用依然有一定的影响,于是我现在,更换成了ZeroTier穿透方式,在这里记录一下使用Windows作为客户端时,搭建ZeroTier的一些坑和注意事项。
下载就不说了,直接下载msi安装包即可,在远程桌面上直接安装可能会有点小问题,官方推荐的安装方法,是使用管理员权限的cmd安装
msiexec /i "ZeroTier One.msi"
安装完成以后,会有两个路径需要注意,分别是
C:\Program Files (x86)\ZeroTier\One
这一个路径是命令的安装路径,之后的命令都以这个路径为根路径输入
C:\ProgramData\ZeroTier\One
这是配置文件的路径,配置文件以及ZeroTier的本体都在这个路径里面
首先,你需要在官方的面板网站上注册一个网络ID账号,登录之后点击Network区段,里面应该默认已经创建好了一个网络区块,点击进入这个区块,先不要关闭页面
之后在ZeroTier One的软件操作界面,点击右键Join Network...输入Network ID,就可以加入网络区块了,之后在面板内,找到Members,勾选你刚刚加入的网络设备,那么这台设备就加入你的ZeroTier局域网内了。
Moon在Windows上的配置
重点来了,如果不配置私有Moons服务器,所有的ZeroTier网络服务器都是在国外的,对于国内的用户十分的不友好,那么这个时候就需要我们加入一个拥有国内公网的服务器,来加速ZeroTier的网络互联速度。
由于我的Aliyun服务器是Windows Servers,所以在全都是Linux的教程里面踩了不少坑。
首先是生成配置文件,网上的教程是
zerotier-idtool initmoon identity.public > moon.json
在Windows上你需要使用管理员权限的CMD进入安装路径执行,但你会遇到第一个错误
identity.public is not a valid identity
你会发现路径里没有identity.public这个文件,其实这个文件在ZeroTier的配置路径下,所以你需要执行
zerotier-idtool initmoon "C:\ProgramData\ZeroTier\One\identity.public" > moon.json
之后在"stableEndpoints"中配置好公网IP,切记端口只能是9993,在网上查到了修改端口的方法,但我本身没有尝试过;修改方法为:
在运行程序同级目录下建立local.conf文件:
{
"settings":
{
"primaryPort":9994
}
}
local.conf 完整配置示例如下:
{ "physical": { /* Settings that apply to physical L2/L3 network paths. */ "NETWORK/bits": { /* Network e.g. 10.0.0.0/24 or fd00::/32 */ "blacklist": true|false, /* If true, blacklist this path for all ZeroTier traffic */ "trustedPathId": 0|!0 /* If present and nonzero, define this as a trusted path (see below) */ } /* ,... additional networks */ }, "virtual": { /* Settings applied to ZeroTier virtual network devices (VL1) */ "##########": { /* 10-digit ZeroTier address */ "try": [ "IP/port"/*,...*/ ], /* Hints on where to reach this peer if no upstreams/roots are online */ "blacklist": [ "NETWORK/bits"/*,...*/ ] /* Blacklist a physical path for only this peer. */ } }, "settings": { /* Other global settings */ "primaryPort": 0-65535, /* If set, override default port of 9993 and any command line port */ "portMappingEnabled": true|false, /* If true (the default), try to use uPnP or NAT-PMP to map ports */ "softwareUpdate": "apply"|"download"|"disable", /* Automatically apply updates, just download, or disable built-in software updates */ "softwareUpdateChannel": "release"|"beta", /* Software update channel */ "softwareUpdateDist": true|false, /* If true, distribute software updates (only really useful to ZeroTier, Inc. itself, default is false) */ "interfacePrefixBlacklist": [ "XXX",... ], /* Array of interface name prefixes (e.g. eth for eth#) to blacklist for ZT traffic */ "allowManagementFrom": "NETWORK/bits"|null, /* If non-NULL, allow JSON/HTTP management from this IP network. Default is 127.0.0.1 only. */ "allowTcpFallbackRelay": true|false /* Allow or disallow establishment of TCP relay connections (true by default) */ } }
之后生成moon文件
zerotier-idtool genmoon moon.json
之后会在安装路径下生成一个类似000000xxxxx.moon的文件
然后在配置路径下,新建一个moons.d文件夹,将moon文件移动到这个文件夹内
重启ZeroTier服务
这是Windows的第二个坑,你会发现退出ZeroTier One软件,其实ZeroTier服务还是没有退出,依然在后台运行,网上的教程有说重启电脑的,那是一种解决方法,但其实真正的重启服务的方法应该是,打开Windows内部的服务控制器,运行services.msc,在里面找到ZeroTier One服务,手动停止并重新启动,这样就完成了ZeroTier One的重启流程。
客户端方面,也是只需要将moon配置文件放到相同的位置,按照相同的方法重启就可以了。
Be First to Comment