之前一直以来,我都在使用 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 的新思路。

举报· 309 次点击
登录 注册 站外分享
2 条回复  
xzpjerry731 小成 昨天 19:13
我这样配用了很久了,你最后那个问题有可能是 DNS 的问题吧,试试在“出口节点”劫持全部 DNS 请求试试
Redhut 小成 昨天 20:55
不能过墙,需要搭配其他协议伪装,国内还可以用用
返回顶部