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

2 天前
 Doiiars

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

1771 次点击
所在节点    宽带症候群
11 条回复
xzpjerry731
2 天前
我这样配用了很久了,你最后那个问题有可能是 DNS 的问题吧,试试在“出口节点”劫持全部 DNS 请求试试
Redhut
2 天前
不能过墙,需要搭配其他协议伪装,国内还可以用用
anonymity
2 天前
zt 会被 qos 吧
Levox
2 天前
如果是 windows 如何作为网关?
wtks1
2 天前
现在 udp 别说跨境了,就算是跨省都被 qos 的惨不忍睹
yunisky
2 天前
我的玩法是,一定范围的区域内用 zt 组网 ,基本上形成 mesh 的效果,区域间另搞一个 zt 网络或者用 wg 充当骨干,区域间的连接选互联延迟最低+带宽最大+性价比最高的节点互联
区域内所有节点 ospf ,区域间节点 bgp ,在边界上的节点 ospf+bgp 双向引入
这样基本上形成了一个有点大的私网,在这个私网里的某些节点上装 ipsec 并做 NAT ,基本上从任何一个节点接入之后,就可以从其他任意一个部署了 ipsec 的节点出局了
试了一下,虽然网络本身对系统资源消耗有点大,但是确实可用
xdeng
1 天前
frp 是不是也能解决
sbboy
1 天前
我有个 zerotier 的问题想请教一下,我有同一网段下的两台机器,它们都安装了 zerotier ,它们之间用路由器分配的 IP 测速有千兆的网速,zerotier 显示直连,zerotier IP ping 延迟比路由器 IP ping 略高 0.5ms 左右,但是 zerotier IP 之间测速就不到百兆,还不稳定,请问这该怎么办呢?
starryloki
1 天前
@sbboy 排查一下 MTU 是否正确
fortitudeZDY
1 天前
这么看其实 tailscale 作了出口节点还是简化了很多,最多要求配置一下出口的 ip_forward ,不过折腾有折腾的快乐:)
fortitudeZDY
1 天前
而且 tailscale 如果启用出口,会把本机的 dns 上游设置为出口上 tailscale 暴露在仅 tailscale 成员可访问的 doH ,这样在某些场景上还是非常方便的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1099429

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX