zerotier如何禁用ipv6(ipv4)连接以提高稳定性
一、 起因
我用zerotier异地组网,将云服务器也加入我的zerotier网络,云服务器通过zerotier隧道转发流量,以此实现内网穿透
有天我发现网站时不时报502,经过几天的观察,最终我发现是云服务器的ipv6不稳定,导致zerotier断连
禁用ipv4还ipv6的方法都大同小异,所以就一起写在标题上了
二、 尝试
- 起初通过防火墙禁用zerotier的9993端口以图实现禁用ipv6,但是zerotier本身会随机开一些高位端口,所以只禁用9993端口没什么卵用
- 然后我想直接关掉服务器的ipv6算了,但是这样aoe误伤太大
- 最有效的方法还是在zerotier设置中禁用ipv6
三、 操作
zerotier是很好的异地组网软件,但是交互不太拟人,能通过面板/命令行进行调整的设置太少了,要进一步设置,必须通过配置文件,但是官方文档主打一个迷惑,网上的相关讨论也极少(包括外网),我研究了几天终于搞懂了
1. 创建local.conf文件
要在zerotier的目录下创建一个local.conf
文件,这个目录通常在:
-
C:\Users\<User>\AppData\Local\ZeroTier
(Windows) -
~/Library/Application\ Support/ZeroTier
(macOS) -
/var/lib/zerotier-one/
(Linux) -
/overlay/upper/etc/config/zero
(OpenWrt)
以Linux为例,通常有这些文件
root@VM71695:/var/lib/zerotier-one# ls
authtoken.secret identity.public metrics.prom networks.d planet zerotier-idtool zerotier-one.pid zerotier-one.te
controller.d identity.secret metricstoken.secret peers.d zerotier-cli zerotier-one zerotier-one.port
默认是没有local.conf
的,你要手动创建,如何创建此处不再赘述,自行搜索解决
2. 写入配置
local.conf中填入以下内容,意味绑定ipv4地址,zerotier的高级设置就是这样用的,想设置其他自行查看官方文档
{
"settings": {
"bind": [ "0.0.0.0" ]
}
}
想要禁用ipv4,将"0.0.0.0"
改为"0::0"
即可,意味绑定ipv6地址
3. 重启zerotier服务
配置需要重启服务才能应用,mac和windows直接在gui上重启即可
Linux可以使用以下命令
systemctl restart zerotier-one.service
4. 验证
使用命令查看所有连接的节点
zerotier-cli listpeers |grep LEAF
不出意外显示的所有节点都是ipv4的
200 listpeers 825023f293 202.192.24.126/45458;794;14680 197 1.12.2 LEAF
200 listpeers 83048a0632 35.208.24.174/21010;11158;11158 194 1.14.0 LEAF
200 listpeers e02b662fc3 27.47.41.136/3081;815;815 11 1.8.4 LEAF
200 listpeers ef9e598143 202.192.80.81/25432;5601;5561 42 1.10.2 LEAF
四、 参考资料
local.conf
参考:
{
"physical": { /* 应用于物理L2/L3网络路径的设置 */
"NETWORK/bits": { /* 网络,例如10.0.0.0/24或fd00::/32 */
"blacklist": true|false, /* 如果为true,则将所有ZeroTier流量列入黑名单 */
"trustedPathId": 0|!0 /* 如果存在且非零,将其定义为受信任的路径(见下文) */
} /* ,...其他网络 */
},
"virtual": { /* 应用于ZeroTier虚拟网络设备(VL1)的设置 */
"##########": { /* 10位ZeroTier地址 */
"try": [ "IP/port"/*,...*/ ], /* 如果没有上游/根在线,提示如何到达此对等体 */
"blacklist": [ "NETWORK/bits"/*,...*/ ] /* 只为此对等体将物理路径列入黑名单。 */
}
},
"settings": { /* 其他全局设置 */
"primaryPort": 0-65535, /* 如果设置,则覆盖默认端口9993和任何命令行端口 */
"portMappingEnabled": true|false, /* 如果为true(默认),则尝试使用uPnP或NAT-PMP映射端口 */
"softwareUpdate": "apply"|"download"|"disable", /* 自动应用更新,仅下载,或禁用内置软件更新 */
"softwareUpdateChannel": "release"|"beta", /* 软件更新频道 */
"softwareUpdateDist": true|false, /* 如果为true,分发软件更新(仅对ZeroTier Inc.本身有意义,默认为false) */
"interfacePrefixBlacklist": [ "XXX",... ], /* 要阻止ZT流量的接口名称前缀数组(例如eth表示eth#) */
"allowManagementFrom": [ "NETWORK/bits") ]|null, /* 如果非NULL,允许从此IP网络进行JSON/HTTP管理。默认仅限127.0.0.1。 */
"allowTcpFallbackRelay": true|false /* 允许或禁止建立TCP中继连接(默认为true) */
}
}
注意这不是合法的json文件,请自行删除注释
官方文档:Client Configuration | ZeroTier Documentation
关于作者:
- 邮箱:luokairui@carry.fit
- 个人博客:carry blog
- CSDN主页:_:Carry-CSDN博客
- Github主页:C-a-r-r-y
欢迎联系!