zerotier代理局域网流量

在ubuntu或debian下安装zerotier,并代理局域网所有流量

  1. 首先去zerotier官网按照其安装命令安装zerotier

    1
    curl -s https://install.zerotier.com | bash
  2. 加入zerotier虚拟局域网

    1
    zerotier-cli join <network id>
  3. 开启流量转发

    临时生效:

    1
    echo "1" >/proc/sys/net/ipv4/ip_forward

    永久生效:

    修改 /etc/sysctl.conf 文件,将 net.ipv4.ip_forward=1 注释去掉,并运行下列命令生效

    1
    sysctl -p
  1. 添加路由规则

    只需要修改第一行的两个变量值,第一个为物理网卡的名称,第二个变量是zerotier虚拟网卡的名称,可用ip addrifconfig查看

    1
    2
    3
    4
    5
    PHY_IFACE=eth0; ZT_IFACE=zt6ovszj4d
    iptables -t nat -A POSTROUTING ! -o $PHY_IFACE -j MASQUERADE
    iptables -A FORWARD -i $ZT_IFACE -j ACCEPT
    iptables -A FORWARD -o $ZT_IFACE -j ACCEPT
    iptables-save
  2. 若是使用的PVE下的lxc容器,则需要在PVE的shell中修改该lxc容器配置文件(/etc/pve/lxc/xxx.conf),加上一下两行:

    1
    2
    lxc.cgroup2.devices.allow: c 10:200 rwm
    lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

​ 因为系统重启后iptables中的内容会丢失,所以需要每次开机对其进行设置,下面有两种方法

一、使用cron定时任务

将上面的路由规则写成一个脚本,取名为route_config.sh

然后再定时任务中加上:

1
@reboot /path/to/your/script   #脚本的位置

当然,要给脚本赋予执行权限:

1
chmod +x route_config.sh

这样设置之后每次开机就会运行一遍上面的脚本

二、将脚本放到系统启动目录

为了在系统启动时应用已保存的规则,我们需要创建一个iptables启动脚本。首先手动运行一下上面的路由转发规则,然后创建一个名为iptables的文件,并将以下内容添加到该文件中:

1
2
#!/bin/sh
iptables-restore < /etc/iptables.up.rules

保存文件并将其移动到/etc/network/if-up.d/目录中:

1
sudo mv iptables /etc/network/if-up.d/iptables

赋予该文件执行权限:

1
sudo chmod +x /etc/network/if-up.d/iptables

这将确保规则在系统启动时自动加载。