carry
发布于 2024-05-15 / 185 阅读
1
0

zerotier如何禁用ipv6(ipv4)连接以提高稳定性

zerotier如何禁用ipv6(ipv4)连接以提高稳定性

一、 起因

我用zerotier异地组网,将云服务器也加入我的zerotier网络,云服务器通过zerotier隧道转发流量,以此实现内网穿透

有天我发现网站时不时报502,经过几天的观察,最终我发现是云服务器的ipv6不稳定,导致zerotier断连

禁用ipv4还ipv6的方法都大同小异,所以就一起写在标题上了

二、 尝试

  1. 起初通过防火墙禁用zerotier的9993端口以图实现禁用ipv6,但是zerotier本身会随机开一些高位端口,所以只禁用9993端口没什么卵用
  2. 然后我想直接关掉服务器的ipv6算了,但是这样aoe误伤太大
  3. 最有效的方法还是在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

关于作者:

欢迎联系!


评论