内网穿透其实 frp 做端口映射也挺好用,但是要一个一个端口映射,有点麻烦
Zerotier 实际上是一个 VPN,解决了我家里就算做 DDNS 获取到公网 IP 也开不了端口的痛点
但是在 iOS 上会占用 VPN, 与 Surge、Quantumult X、Shadowrocket 等软件冲突(木得办法)
其实可以不用自建服务端(Zerotier 有 50 台设备的限制,且有可能无法访问到官网)
Server
https://github.com/Jonnyan404/zerotier-planet.git
# 安装 Docker
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl enable docker --now
# 安装 docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 安装 zerotier-planet
git clone https://github.com/Jonnyan404/zerotier-planet.git
cd zerotier-planet
ZERO_PORT=44000 && sed -i .bak "s/4000:4000/$ZERO_PORT:4000/" docker-compose.yml # 修改默认端口
docker-compose up -d
# 防火墙放行端口
firewall-cmd --add-port=$ZERO_PORT/tcp --permanent
firewall-cmd --reload
浏览器访问 http://<ip>:<port>
, 账号admin
, 密码 mrdoc.fun
- 修改密码
- 创建虚拟网络
Client
- Linux(ubuntu/CentOS)
curl -s https://install.zerotier.com | sudo bash # 安装 zerotier
systemctl status zerotier-one # 查看运行状态
systemctl enable zerotier-one # 设置开机自启动
zerotier-cli join 1d788XXXXXX # 加入虚拟网络
zerotier-cli leave 1d788XXXXXX # 离开虚拟网络
zerotier-cli status # 查看状态
zerotier-cli listnetworks # 查看所有虚拟网络
zerotier-cli -j listnetworks # 以 json 格式展示
zerotier-cli get 1d788XXXXXX ip # 查看虚拟 IP (10.10.10.1)
ifconfig | grep inet | grep 10.10.10 # 查看虚拟 IP
route -n # 查看路由表
- openwrt
opkg install zerotier*.ipk # 安装 zerotier
/etc/init.d/zerotier status # 查看运行状态
/etc/init.d/zerotier enable # 设置开机自启
zerotier-cli join 1d788XXXXXX # 加入虚拟网络
ifconfig | grep inet | grep 10.10.10 # 查看虚拟 IP (10.10.10.2)
ifconfig | grep -w inet | grep -v 127.0.0.1 # 查看局域网 IP (以192.168.1.2 为例)
# planet 添加路由如下图
route -n # 查看路由表
ping 10.10.10.1 # 测试连通性
ssh [email protected] "route -n | grep 192.168.1" # 查看路由表
ssh [email protected] "ping -c 4 192.168.1.2" # 测试联通性
ssh [email protected] "ping -c 4 192.168.1.100" # 测试联通性
- NAS
sudo su root # 切换至 root 用户
echo -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
chmod a+x /usr/local/etc/rc.d/tun.sh # 赋予执行权限
sh /usr/local/etc/rc.d/tun.sh # 运行脚本
ls /dev/net/tun # 检查 TUN
mkdir /var/lib/zerotier-one # 用于存储配置
# 启动 Docker 容器
docker run -d \
--name zt \
--restart=always \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
-v /var/lib/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest
docker exec -it zt zerotier-cli status # 检查运行状态
docker exec -it zt zerotier-cli join 1d788XXXXXX # 加入虚拟网络
docker exec -it zt zerotier-cli listnetworks # 查看所有虚拟网络
docker exec -it zt zerotier-cli get 1d788XXXXXX ip # 查看虚拟 IP
- MAC
brew install zerotier-one --cask # 安装 zerotier
open -a /Applications/ZeroTier.app # 启动 zerotier-one
sudo zerotier-cli status # 查看状态
- iOS
- Windows Android 等客户端可以参考官网设置