前言
这几天试了好几种内网穿透方式,主要是ddns、Zerotier和wireguard,其实三者选其一即可,但于我来说这三种各有优劣,比如
DDNS
优点:不需要装额外软件,openwrt自带动态dns,家庭宽带自带公网ipv6;只需要购买一个域名,而现在域名很便宜,基本上几块钱就能买一年的;无需中转,不消耗中转流量。
缺点:如果家庭宽带只有公网ipv6没有公网ipv4,那么客户端必须支持ipv6,目前手机流量肯定是支持的,但其他人的wifi(特别是公司)不一定会开放ipv6。
Zerotier
优点:基本不需要额外花钱(如果不自建moon节点的话,可以完全免费),支持多个系统,可以设置转发,通过原本的ip地址访问各个设备,自建moon节点之后容易打洞,网速非常快,基本不消耗中转流量。
缺点:如果不自建moon节点,网速很慢;iOS不支持加入moon节点。
Wireguard
优点:比较快,我的iOS设备也能用。
缺点:需要具有公网ip的vps,配置稍微麻烦一些,会走vps转发,消耗流量。
上面三者的要求,我目前的设备和配置都能达到,最后选择三种方法并用,即:
优先使用ipv6直连(DDNS);在没有ipv6的环境下,尝试使用配置了moon节点的Zerotier进行连接(打洞,不消耗vps流量进行中转);在没有ipv6并且无法使用moon节点的情况下,用Wireguard连接vps,vps通过Zerotier连接openwrt。
我的配置
- iPhone 14 promax(iOS 18);
- 阿里云轻量服务器(2H2G,200M峰值带宽);
- N1盒子做旁路由(openwrt flippy 88+o);
- 有个阿里云解析的域名(DDNS用)
教程
DDNS
直接看这一篇教程,我也是跟着学的:OpenWrt配置阿里云动态域名服务DDNS
Zerotier(直接使用)
1. 安装客户端
- 访问 ZeroTier 官网 下载适合系统的客户端(Windows、macOS、Linux、iOS、Android、OpenWrt 等)。
- 安装完成后,启动
ZeroTier One
程序。
2. 获取并加入网络
- 在 ZeroTier Central(https://my.zerotier.com/)注册并登录账户。
- 创建一个新网络,系统会生成一个 Network ID(16位十六进制字符串)。
- 在客户端中输入该 Network ID 加入网络:
- Windows/macOS:右键托盘图标 → “Join Network”。
- Linux:命令行输入zerotier-cli join <network_id>
- iOS/Android:打开 App → 输入 Network ID → Join。
3. 授权设备
- 在 ZeroTier Central 网络管理界面,找到刚刚加入的设备。
- 勾选 “Authorize” 授权后,该设备才会正式接入虚拟网络。
4. 配置和验证
- 客户端会自动分配虚拟 IP(通常是 10.x.x.x 或 192.168.x.x)。
- 验证方法:
- 查看分配的 IP:
zerotier-cli listnetworks - 在另一台已加入同一网络的设备上,尝试
ping
该虚拟 IP。 - 成功则说明内网组网完成。
- 查看分配的 IP:
Zerotier(Moon节点)
详细步骤可以参考:搭建 Zerotier Moon为异地组网网络加速
安装 ZeroTier
curl -s https://install.zerotier.com | bash
生成 Moon 配置
cd /var/lib/zerotier-one zerotier-idtool initmoon identity.public > moon.json
修改 moon.json
在 "stableEndpoints"
中加入 VPS 公网 IP:Port(默认 UDP 9993)。
"stableEndpoints": [ "203.0.113.5/9993" ]
生成签名文件
zerotier-idtool genmoon moon.json
会在当前目录下生成 000000xxxxxxxx.moon
文件。
部署 Moon 文件
复制 .moon
文件到 moons.d
:
cp 000000*.moon moons.d/ systemctl restart zerotier-one
至此,Moon 节点生效。
客户端Orbit 到 Moon
在客户端执行:
zerotier-cli orbit <moon-id> <moon-id>
验证是否生效
zerotier-cli listpeers
若能看到角色为 MOON
的节点,说明已连接成功。
Wireguard
以 Debian/Ubuntu VPS 为例,配置步骤简明说明:
1. 安装 WireGuard
sudo apt update sudo apt install wireguard -y
2. 生成密钥对
umask 077 wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
- 私钥路径:
/etc/wireguard/server_private.key
- 公钥路径:
/etc/wireguard/server_public.key
3. 创建配置文件 /etc/wireguard/wg0.conf
假设 WireGuard 使用网段 10.10.0.0/24
,VPS 地址为 10.10.0.1
。
[Interface] Address = 10.10.0.1/24 ListenPort = 51820 PrivateKey = <服务器私钥> # 开启转发 PostUp = sysctl -w net.ipv4.ip_forward=1 PostDown = sysctl -w net.ipv4.ip_forward=0 # 转发规则:WireGuard 子网 → ZeroTier 子网 PostUp = iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o zt+ -j MASQUERADE PostDown = iptables -t nat -D POSTROUTING -s 10.10.0.0/24 -o zt+ -j MASQUERADE
说明:
Address
是 VPS 在 WireGuard 内的 IP。zt+
表示匹配 ZeroTier 虚拟网卡(如ztxxxxxxxx
)。
4. 启动 WireGuard
sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0
查看状态:
sudo wg show
5. 添加客户端(示例:手机)
VPS 端配置(wg0.conf 添加 Peer 段):
[Peer] PublicKey = <客户端公钥> AllowedIPs = 10.10.0.2/32
客户端配置(手机 WireGuard App):
[Interface] PrivateKey = <客户端私钥> Address = 10.10.0.2/32 DNS = 8.8.8.8 [Peer] PublicKey = <VPS 公钥> Endpoint = <VPS公网IP>:51820 AllowedIPs = 192.168.191.0/24, 10.10.0.0/24 PersistentKeepalive = 25
192.168.191.0/24
是 ZeroTier 网络(家庭内网可达)。10.10.0.0/24
是 WireGuard 子网。
6. 家庭内网设备(如 OpenWrt)
只需加入同一 ZeroTier 网络,保证能与 VPS(ZeroTier IP)互通即可,无需配置 WireGuard。
可以直接问ChatGPT或者Deepseek,最好开启推理,要不然会被坑。
Comments | NOTHING