使用Zerotier配置虚拟局域网,踏坑
配置虚拟局域网有多种方式,包括带桌面的和纯网络的。
一、带桌面的(不是本次重点)
常见工具:向日葵、todesk、anydesk、restDesk
前两者是常见商业工具,anydesk好像很轻,restDesk是开源项目,吹的很多,但据说有一些性能问题
二、纯虚拟网络
常见工具:蒲公英、frp、Zerotier、Tailscale、SoftEther VPN、Hamachi
基本都支持跨平台
免费额度:frp无限,蒲公英3台,Hamachi 5台,Zerotier 10台,Tailscale 3台支持单点登录
三、Zerotier注册、安装和配置
注册:进去直接就是配置网络,免费plan最多3个网络。
ZeroTier | Global Networking Solution for IoT, SD-WAN, and VPN
安装:curl -s https://install.zerotier.com | sudo bash
入网:zerotier-cli join $NETWORK_ID
每台设备申请入网后,如果后台设置网络为public 则自动入网,如果设置为private则需要后台activate。ip会自动分配,注意router的ip和网段。
四、坑(PVE默认没有映射tun)
默认情况下,因为pve的ct容器没有映射TUN/TAP,所以无法被分配ip。
zerotier-cli listnetworks提示:
200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
journalctl -u zerotier-one看到错误:
Dec 06 12:19:31 debian11 zerotier-one[255482]: Starting Control Plane...
Dec 06 12:19:31 debian11 zerotier-one[255482]: Starting V6 Control Plane...
Dec 06 12:19:31 debian11 zerotier-one[255482]: ERROR: unable to configure virtual network port: could not open TUN/TAP device: No such file or directory
解决:
修改pve host上ct容器的配置文件/etc/pve/lxc/<CT-ID>.conf
新增下列内容,确保速去之启用TUN/TAP模块,重启容器
lxc.cap.drop =
lxc.cgroup.devices.allow = c 10:200 rwm
lxc.apparmor.profile = unconfined
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
手动加载TUN: sudo modprobe tun
or 确保TUN模块在启动时加载:echo "tun" | sudo tee -a /etc/models
重启容器:pct stop <CT-ID>; pct start <CT-ID>
确认TUN/TAP支持: ls -l /dev/net/tun
解释:
lxc.cap.drop =
会删除容器默认禁止的权限,
lxc.cgroup.devices.allow = c 10:200 rwm
允许容器访问 TUN 设备。
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
:这会挂载宿主机的 TUN 设备到容器中。
lxc.apparmor.profile = unconfined
:允许容器拥有更高的权限,解除对某些资源的限制(如果你在使用 AppArmor)。