docker run -d --network host --name zerotier --restart always --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --device=/dev/net/tun -v /data/zerotier:/var/lib/zerotier-one zerotier/zerotier
依照上方指令在PVE的LXC容器中使用Docker安装ZeroTier。
在ZeroTier正常新建一个Network,并选择网段。
注意:若要手动输入网段,似乎ZeroTier并不会自动为你建好路由映射。我第一次就栽在这了,使用预设网段会自动建好映射。
(自动映射如图)
在Docker容器中的sh中输入:
zerotier-cli join [上方的NetworkID]
并在Web控制台中同意设备加入,至此手机应当直接可以联通这台机子。
接下来转发设备所在内网。
打开设备的转发功能
在Docker所在shell中(注 非容器sh 为宿主机shell):
vi /etc/sysctl.conf
去除net.ipv4.ip_forward=1
和net.ipv6.conf.all.forwarding=1
的#注释。
sysctl -p
执行此句以生效。
在宿主机使用ifconfig
或 在Docker容器中sh使用zerotier-cli listnetworks
寻找虚拟网卡名称和实体网卡名称。
注:无ifconfig
一般为缺少net-tools
包。
开始配置iptables:
iptables -I FORWARD -i ztly55hjrh[虚拟网卡] -j ACCEPT
iptables -I FORWARD -o ztly55hjrh[虚拟网卡] -j ACCEPT
iptables -t nat -I POSTROUTING -o ztly55hjrh[虚拟网卡] -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0[实体网卡] -j MASQUERADE
iptables-save
至此设备转发设置完毕。
在ZeroTier控制台设置路由表
如图,设置好目的网段和途径节点即可,建议手动固定途径节点IP方便记忆。
至此,可以使用安卓手机连接蜂窝网络尝试,应当可以直接通过192.168.*.*连接到内网所有设备。
网络上教程不完全,特此记录。
参考文献: