视频地址:https://youtu.be/PNaF6fs2FlM
节点加入网络命令、然后面板中勾选验证
zerotier-cli join Network_ID
子网路由
#通过ip add sh或ip a命令查看zerotier接口以及本地物理接口
#把相应的接口名称赋值给变量
PHYSICAL_IFACE=<物理网卡接口名字>
ZEROTIER_IFACE=<zerotier接口名字>
#开启内核转发
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
#添加防火墙转发规则
iptables -t nat -A POSTROUTING -o $PHYSICAL_IFACE -j MASQUERADE iptables -A FORWARD -i $PHYSICAL_IFACE -o $ZEROTIER_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i $ZEROTIER_IFACE -o $PHYSICAL_IFACE -j ACCEPT iptables-save
#保存规则,持久化,重启后仍有效
sudo apt install iptables-persistent -y
sudo iptables-save > /etc/iptables/rules.v4
子网路由落地机一键脚本
#!/bin/bash
# 脚本功能:自动获取物理网卡和 ZeroTier 网卡接口名称,并设置 iptables 规则以支持 NAT 和转发
# 检查是否以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo "此脚本需要以 root 权限运行,请使用 sudo 执行"
exit 1
fi
# 自动获取物理网卡接口名称
# 假设物理网卡是系统中主要的以太网接口(非 lo 和虚拟接口)
PHYSICAL_IFACE=$(ip link show | grep -E '^[0-9]+: (en|eth|wlan)[0-9a-z]*:' | awk '{print $2}' | sed 's/://' | head -n 1)
if [ -z "$PHYSICAL_IFACE" ]; then
echo "错误:未找到物理网卡接口,请检查系统网络配置"
exit 1
fi
echo "检测到的物理网卡接口: $PHYSICAL_IFACE"
# 自动获取 ZeroTier 网卡接口名称
# ZeroTier 接口通常以 zt 开头
ZEROTIER_IFACE=$(ip link show | grep -E '^[0-9]+: zt[a-z0-9]+:' | awk '{print $2}' | sed 's/://' | head -n 1)
if [ -z "$ZEROTIER_IFACE" ]; then
echo "错误:未找到 ZeroTier 网卡接口,请确保 ZeroTier 已安装并加入网络"
exit 1
fi
echo "检测到的 ZeroTier 网卡接口: $ZEROTIER_IFACE"
# 启用内核转发
echo "启用内核转发..."
sysctl -w net.ipv4.ip_forward=1
# 确保内核转发在重启后依然生效
if ! grep -q "net.ipv4.ip_forward=1" /etc/sysctl.conf; then
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
fi
echo "内核转发已启用并设置为开机生效"
# 设置 iptables 规则
echo "设置 iptables 规则..."
iptables -t nat -A POSTROUTING -o "$PHYSICAL_IFACE" -j MASQUERADE
iptables -A FORWARD -i "$PHYSICAL_IFACE" -o "$ZEROTIER_IFACE" -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i "$ZEROTIER_IFACE" -o "$PHYSICAL_IFACE" -j ACCEPT
# 保存 iptables 规则
echo "保存 iptables 规则..."
iptables-save > /etc/iptables/rules.v4
# 安装 iptables-persistent 以确保规则在重启后依然有效
echo "安装 iptables-persistent..."
apt update
apt install iptables-persistent -y
# 再次保存规则,确保持久化
iptables-save > /etc/iptables/rules.v4
echo "配置完成!"
echo "物理网卡接口: $PHYSICAL_IFACE"
echo "ZeroTier 网卡接口: $ZEROTIER_IFACE"
echo "内核转发已启用"
echo "iptables 规则已设置并保存"
ACL的简单实用
# 允许指定ip间的icmp协议数据包
accept
ipprotocol 1
ipsrc 192.168.191.16/32 or ipsrc 192.168.191.84/32
# ztsrc 7e435d4dae ztdest e636f3f601
;
# 丢弃所有的icmp协议数据包
drop
ipprotocol 1
;
# 定义一个tag 名为deptartment id=1000(id必须唯一)
# 其中该有两个枚举值,分别为不同部门,sales、admin
tag department
id 1000
enum 10 sales
enum 20 admin
;
# 部门枚举值差异为0的主机,之间icmp协议被允许
accept
ipprotocol 1
and tdiff dept 0
;