简介
最近ODC做优化和迁移,因此增加了1台同步服务器。但是在部署ZeroTier内网互通穿透时,遇到了LXC小鸡,没有开启tun-br的问题,导致穿透失败,这一台同步服务器无法与其他同步服务器互通。
通过排查,发现是缺少tun port,因此参阅官方文档,找到了方法,为PROXMOX中的LXC容器上启用TUN-BR端口。
问题发生复现
1、怎么安装ZeroTier,一键搞定
curl -s https://install.zerotier.com | sudo bash
zerotier-cli join [你的ZeroTier网络的ID]
2、安装ZeroTier后,设备显示在线,但是内网不通
状态 200 ,my.zerotier.com
管理中心显示 设备在线Online,但是就是内网不通。
ip addr
zerotier-cli status
zerotier-cli listnetworks
zerotier-one -d
zerotier-cli info
3、查看网卡和ZeroTier配置
如上图,首先看到ip addr
,无zerotier接口,确认是缺少tun-br接口;其次zerotier-one -d
显示cannot bind interface(接口绑定失败),那我们就更加确定,是因为没有开启TUN的缘故。
解决方案(lxc开启tun-br)
1、修改PVE宿主机中对应LXC容器的配置文件
对于PVE来说,要启用TUN接口,我们需要向LXC配置文件中添加一些配置信息
LXC配置文件位置(xxx为容器的id,如100等):
临时生效(由永久地址在LXC容器开机时,映射过去,关机后失效)/var/lib/lxc/xxxx/config
永久生效(建议修改此处,毕竟我们是需要长期开启tun-br)/etc/pve/lxc/xxxx.conf
2、为LXC容器配置文件底部新增如下行:
【建议】创建有特权的容器,来开启tun-br,否则可能由于权限问题,面临报错等,太折腾了。
vi /etc/pve/lxc/2001.conf
lxc.cgroup.devices.allow = c 10:200 rwm
lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
最终完整的lxc配置如下(略有不同):
root@cxt-test:~# cat /etc/pve/lxc/2001.conf
arch: amd64
cores: 2
hostname: ODC-SyncServer-CNGD1
memory: 2048
net0: name=eth0,bridge=vmbr0,hwaddr=BE:16:E2:EE:CE:51,ip=dhcp,type=veth
onboot: 1
ostype: ubuntu
rootfs: local-zfs:subvol-2001-disk-0,size=200G
swap: 2048
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.hook.autodev: sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
root@cxt-test:~#
3、开机进入容器,执行以下命令,并重启容器
cd /dev
mkdir net
mknod net/tun c 10 200
chmod 0666 net/tun
如果有小报错,不影响结果,执行完重启即可。(需要为有特权root的容器)
重启容器后,tun-br已经开启,可以安装和正常使用需要tun接口的软件了。
恭喜您,TUN-BR接口已开启,软件运行正常
我们可以看到,ip addr
已经出现了zerotier的网卡接口,在本地以通过ssh连接内网地址,连接成功,说明lxc容器的tun已经正确开启。
交流讨论(频道、组群、论坛)
了解【联系我们(Contact-US)https://www.cxthhhhh.com/contact-us】页面获得更多信息
写在最后
享受当下的美好!
如果本文对您有帮助,请通过以下【赞赏】按钮捐赠,这将帮助我们更好的创作和发展。