zerotier代理局域网流量
在ubuntu或debian下安装zerotier,并代理局域网所有流量
首先去zerotier官网按照其安装命令安装zerotier
1
curl -s https://install.zerotier.com | bash
加入zerotier虚拟局域网
1
zerotier-cli join <network id>
开启流量转发
临时生效:
1
echo "1" >/proc/sys/net/ipv4/ip_forward
永久生效:
修改
/etc/sysctl.conf
文件,将net.ipv4.ip_forward=1
注释去掉,并运行下列命令生效1
sysctl -p
添加路由规则
只需要修改第一行的两个变量值,第一个为物理网卡的名称,第二个变量是zerotier虚拟网卡的名称,可用
ip addr
或ifconfig
查看1
2
3
4
5PHY_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若是使用的PVE下的lxc容器,则需要再PVE的shell中修改该lxc容器配置文件,加上一下两行:
1
2lxc.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 |
|
保存文件并将其移动到/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 |
这将确保规则在系统启动时自动加载。