LXC Debain12安装zerotier并实现局域网自动nat转发
# LXC Debain12安装zerotier并实现局域网自动nat转发
# 安装Tun
众所周知,ZeroTier 是通过绑定 /dev/net/tun 的 tun 接口来进行组网的,然而 pve 中用创建的 lxc都默认不存在这个接口,因此需要一些手动安装Tun。
先查看宿主机的Tun
ls -al /dev/net/tun
> crw-rw-rw- 1 root root 10, 200 Jul 26 21:25 /dev/net/tun
编辑容器
# XXX为容器ID
vim /etc/pve/lxc/XXX.conf
在末尾添加如下代码, 下面的10,200就是ls -al /dev/net/tun
展示的10,200
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
# 开启IP转发
启动 lxc 容器后, 编辑 /etc/sysctl.conf
文件, 将以下两行的注释去掉. 如果没有这两行, 需要添加
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
编辑完成后, 使用 sysctl
命令 reload
sysctl -p /etc/sysctl.conf
# 安装Zerotier
使用脚本一键安装
curl -s https://install.zerotier.com | bash
# 配置静态路由
由于用的Debain12默认使用的是nftable, 所以需要使用nftable的规则进行安装
通过 ip a
命令可以查询到 zerotier 虚拟网卡的名称是什么, 这里假设 zerotier 网卡名称为 ztabcdef
, 物理网卡名称为 eth0
. 对以下变量进行赋值
PHY_IFACE=eth0; ZT_IFACE=ztqu3nw5bu;
添加防火墙规则
nft add table ip filter
nft add chain ip filter FORWARD { type filter hook forward priority 0 \; }
nft add rule ip filter FORWARD iif $PHY_IFACE oif $ZT_IFACE ct state related,established accept
nft add rule ip filter FORWARD iif $ZT_IFACE oif $PHY_IFACE accept
持久化规则, 正常情况下nft list ruleset > /etc/nftables.conf
就行了,但是我的由于装了crash,也是用的这套规则为了避免冲突,所以手动挑选一下规则 放过去。
执行nft list ruleset
命令,能看到下面这一段
table ip filter {
chain FORWARD {
type filter hook forward priority filter; policy accept;
iif "eth0" oif "ztqu3nw5bu" ct state established,related accept
iif "ztqu3nw5bu" oif "eth0" accept
}
}
将这个放置到/etc/nftables.conf
即可