V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Doiiars
V2EX  ›  宽带症候群

分享一下最近我对我的 ZeroTier 做了什么!用 ZeroTier 节点作为网络出口!

  •  1
     
  •   Doiiars · 5 天前 · 1923 次点击

    之前一直以来,我都在使用 zerotier 搭建内部局域网,但是我也想,为什么我不能用 zeortier 的某个节点作为出站节点?经过几周的休息(?),这周突然有空把这玩意做了。我分享一下具体细节。其实跟着官方文档走就不错了。

    核心步骤就是配置转发和配置持久化问题。

    为什么选择 ZeroTier ?

    • 完全免费且开源
    • 配置简单,维护成本低
    • 支持跨平台
    • 性能优秀,延迟低

    前期准备

    1. 一台可用作出口节点的服务器(可以是 VPS 或者树莓派)
    2. 基本的 Linux 命令行操作知识
    3. root 或 sudo 权限

    具体步骤

    第一步:配置出口节点

    1. 创建 ZeroTier 网络(如果没有,先去官网创建)
    2. 安装 ZeroTier:
    # 加入网络
    sudo zerotier-cli join <你的网络 ID>
    
    1. 开启 IPv4 转发:
    # 编辑配置文件
    sudo nano /etc/sysctl.conf
    
    # 添加以下内容
    net.ipv4.ip_forward = 1
    
    # 重载配置
    sudo sysctl -p
    
    # 验证设置
    sudo sysctl net.ipv4.ip_forward
    

    第二步:配置网络接口

    1. 获取网络接口名称:
    ip link show
    
    1. 设置环境变量:
    export ZT_IF=zthnhhqofq  # 你的 ZeroTier 接口名
    export WAN_IF=eth0       # 你的外网接口名
    
    1. 配置 iptables 规则:
    # 启用 NAT
    sudo iptables -t nat -A POSTROUTING -o $WAN_IF -j MASQUERADE
    
    # 允许转发
    sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i $ZT_IF -o $WAN_IF -j ACCEPT
    
    # 安装 iptables-persistent 使规则持久化
    sudo apt-get install iptables-persistent
    sudo netfilter-persistent save
    

    第三步:网络配置(在 ZeroTier 管理面板)

    1. 进入 Central > Network > Settings > Managed Routes
    2. 添加路由规则:0.0.0.0/0 via <你的路由节点 ZeroTier IP>

    第四步:客户端配置

    1. 在托盘应用中,找到对应网络的 "Allow Default" 选项并启用
    2. 为方便使用,可以添加以下命令到 ~/.bashrc
    tunnel()
    {
     sudo zerotier-cli set $nwid allowDefault=1
    }
    
    notunnel()
    {
     sudo zerotier-cli set $nwid allowDefault=0
    }
    

    常见问题解决

    验证配置

    配置完成后,你可以通过以下命令检查 IP:

    curl -4 ifconfig.co  # 检查 IPv4
    curl -6 ifconfig.co  # 检查 IPv6
    

    官方文档参考: https://docs.zerotier.com/exitnode/

    题外话

    我测试了一下,ip 的确变成了是出口节点的 ip 。

    但是有一个问题:

    google 和 youtube 我莫名其妙的无法访问。而 newbing 等其他网站却不受影响。 原因我还没有排查出来。

    还有就是,这样的出站方式,中间流量由 zerotier 保证和控制。因此,实际上这样的流量路由转发,并没有主流的集中魔法协议的那种伪装防护功能。其实用性存疑。但是这给了一个如何利用 zerotier 的新思路。

    11 条回复    2024-12-23 21:59:35 +08:00
    xzpjerry731
        1
    xzpjerry731  
       5 天前
    我这样配用了很久了,你最后那个问题有可能是 DNS 的问题吧,试试在“出口节点”劫持全部 DNS 请求试试
    Redhut
        2
    Redhut  
       5 天前
    不能过墙,需要搭配其他协议伪装,国内还可以用用
    anonymity
        3
    anonymity  
       5 天前
    zt 会被 qos 吧
    Levox
        4
    Levox  
       5 天前
    如果是 windows 如何作为网关?
    wtks1
        5
    wtks1  
       5 天前
    现在 udp 别说跨境了,就算是跨省都被 qos 的惨不忍睹
    yunisky
        6
    yunisky  
       5 天前   ❤️ 1
    我的玩法是,一定范围的区域内用 zt 组网 ,基本上形成 mesh 的效果,区域间另搞一个 zt 网络或者用 wg 充当骨干,区域间的连接选互联延迟最低+带宽最大+性价比最高的节点互联
    区域内所有节点 ospf ,区域间节点 bgp ,在边界上的节点 ospf+bgp 双向引入
    这样基本上形成了一个有点大的私网,在这个私网里的某些节点上装 ipsec 并做 NAT ,基本上从任何一个节点接入之后,就可以从其他任意一个部署了 ipsec 的节点出局了
    试了一下,虽然网络本身对系统资源消耗有点大,但是确实可用
    xdeng
        7
    xdeng  
       4 天前
    frp 是不是也能解决
    sbboy
        8
    sbboy  
       4 天前
    我有个 zerotier 的问题想请教一下,我有同一网段下的两台机器,它们都安装了 zerotier ,它们之间用路由器分配的 IP 测速有千兆的网速,zerotier 显示直连,zerotier IP ping 延迟比路由器 IP ping 略高 0.5ms 左右,但是 zerotier IP 之间测速就不到百兆,还不稳定,请问这该怎么办呢?
    starryloki
        9
    starryloki  
       4 天前
    @sbboy 排查一下 MTU 是否正确
    fortitudeZDY
        10
    fortitudeZDY  
       4 天前
    这么看其实 tailscale 作了出口节点还是简化了很多,最多要求配置一下出口的 ip_forward ,不过折腾有折腾的快乐:)
    fortitudeZDY
        11
    fortitudeZDY  
       4 天前
    而且 tailscale 如果启用出口,会把本机的 dns 上游设置为出口上 tailscale 暴露在仅 tailscale 成员可访问的 doH ,这样在某些场景上还是非常方便的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:43 · PVG 03:43 · LAX 11:43 · JFK 14:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.