场景:家里的设备(如路由器)和 vps 上都装了 zerotier 且 vps 上装了梯子(如 ss、naive 等),解决手机等只能在梯子和 zerotier 只能二选一连接的问题

zerotier、梯子等安装教程一大把,过程省略,只要能让家里和 vps 能通过 zerotier 互相访问即可。

vps 设置

环境:Debian 12,防火墙 nftables

1、如果用的是 ss,在 /etc/nftables.conf 参考下面规则添加到防火墙:

table inet filter {
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
                ip daddr 192.168.1.0/24 accept;
        }
}

其中 192.168.1.0/24 为家里的路由器网段,如果是某个设备,修改为该设备的 ip 即可。

2、如果用的是 naive

2.1、先按照第一步添加防火墙规则

2.2、起一个 socks5 服务器,我这里使用的是 glider:

glider -verbose -listen 127.0.0.1:8443

请确保该端口不要暴露在公网上,否则不要省略 127.0.0.1

2.3、caddy 配置参考:

{
    order forward_proxy before file_server
}
:443, example.com {
    tls me@example.com
    forward_proxy {
        basic_auth user pass
        hide_ip
        hide_via
        probe_resistance
        upstream socks5://127.0.0.1:8443
    }
    file_server {
        root /var/www/html
    }
}

梯子客户端设置

确保让家里的内网 ip(192.168.1.0/24)走代理即在代理规则内,通过内网 ip 即可访问家里的设备。

同理,其他梯子也可以参照同样的方式回家。