CentOS 9 配置 ZeroTier 双向转发与 NAT 教程

简介
大家好,我是云核筑梦家。
本文记录一下在 CentOS 9 上配置 ZeroTier 网络转发的方法,实现:
ZeroTier 设备可以访问服务器所在内网
内网设备可以访问 ZeroTier 网络
开启 NAT 地址转换
放行 ZeroTier UDP 9993 端口
配置永久生效
适用于将一台 CentOS 9 服务器作为 ZeroTier 网关/旁路由 使用。
一、查看网卡
首先查看服务器网卡:
ip addr例如:
eth0 # 本地物理网卡
ztxxxxxxxx # ZeroTier 虚拟网卡实际使用时,请把下面教程中的:
eth0
ztxxxxxxxx修改成自己的网卡名称。
二、安装并启动 firewalld
CentOS 9 使用:
dnf install -y firewalld
systemctl enable --now firewalld检查运行状态:
systemctl status firewalld三、开启 IPv4 路由转发
执行:
cat >/etc/sysctl.d/99-ip-forward.conf <<'EOF'
net.ipv4.ip_forward = 1
EOF
sysctl --system检查:
sysctl net.ipv4.ip_forward正常应该显示:
net.ipv4.ip_forward = 1四、配置 firewalld 网卡区域
物理网卡加入 public:
firewall-cmd --permanent --zone=public --add-interface=eth0ZeroTier 网卡加入 trusted:
firewall-cmd --permanent --zone=trusted --add-interface=ztxxxxxxxx其中 trusted 区域默认信任进入该区域的网络连接,适合用于可信的 ZeroTier 虚拟网络。
五、开启 NAT
执行:
firewall-cmd --permanent --zone=public --add-masquerade这样 ZeroTier 设备通过 CentOS 9 访问物理网络时,可以进行 NAT 地址转换。
六、放行 ZeroTier UDP 9993
执行:
firewall-cmd --permanent --zone=public --add-port=9993/udp七、允许 ZeroTier 与 LAN 双向转发
ZeroTier → LAN
firewall-cmd --permanent --new-policy ZT_TO_LAN
firewall-cmd --permanent --policy ZT_TO_LAN --add-ingress-zone trusted
firewall-cmd --permanent --policy ZT_TO_LAN --add-egress-zone public
firewall-cmd --permanent --policy ZT_TO_LAN --set-target ACCEPTLAN → ZeroTier
firewall-cmd --permanent --new-policy LAN_TO_ZT
firewall-cmd --permanent --policy LAN_TO_ZT --add-ingress-zone public
firewall-cmd --permanent --policy LAN_TO_ZT --add-egress-zone trusted
firewall-cmd --permanent --policy LAN_TO_ZT --set-target ACCEPTfirewalld 的 Policy 用于控制不同 Zone 之间的转发流量,ingress-zone 表示流量进入区域,egress-zone 表示流量离开区域,设置 target ACCEPT 后允许对应方向的转发。
最后重新加载:
firewall-cmd --reload八、检查配置
查看网卡所属 Zone:
firewall-cmd --get-active-zones正常类似:
public
interfaces: eth0
trusted
interfaces: ztxxxxxxxx查看 NAT 和端口:
firewall-cmd --zone=public --list-all重点确认:
masquerade: yes
ports: 9993/udp查看转发策略:
firewall-cmd --get-policies应该可以看到:
LAN_TO_ZT
ZT_TO_LAN进一步检查:
firewall-cmd --info-policy ZT_TO_LAN
firewall-cmd --info-policy LAN_TO_ZT两边应该都是:
target: ACCEPT九、配置 ZeroTier 路由
如果需要让其他 ZeroTier 客户端访问 CentOS 服务器所在的内网,还需要在 ZeroTier 控制端添加 Managed Route。
例如内网网段:
192.168.100.0/24CentOS 的 ZeroTier 地址:
10.10.10.2则添加:
Destination:
192.168.100.0/24
Via:
10.10.10.2网络路径:
ZeroTier 客户端
↓
ZeroTier 网络
↓
CentOS 9 ZeroTier 网卡
↓
NAT / 转发
↓
eth0
↓
本地内网十、内网主动访问 ZeroTier
如果只是:
ZeroTier → 内网开启 NAT 后,一般不需要修改内网设备。
如果还需要:
内网 → ZeroTier也就是内网设备主动访问 ZeroTier 地址,那么需要在内网主路由器增加一条静态路由。
例如 ZeroTier 网段:
10.10.10.0/24CentOS 9 内网地址:
192.168.100.2路由器增加:
目标网段:10.10.10.0/24
下一跳:192.168.100.2这样即可实现完整的双向访问。
总结
CentOS 9 配置 ZeroTier 网关主要就是四部分:
开启 IPv4 转发
+
配置 firewalld Zone
+
开启 NAT Masquerade
+
配置双向转发 Policy核心检查命令:
sysctl net.ipv4.ip_forward
firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --get-policies只要确认:
net.ipv4.ip_forward = 1
masquerade: yes
9993/udp 已放行
ZT_TO_LAN = ACCEPT
LAN_TO_ZT = ACCEPTCentOS 9 本机的 ZeroTier 转发环境基本就配置完成了。
需要注意,CentOS 9 防火墙配置完成并不代表路由已经完成。ZeroTier 客户端访问其他网段时,还需要正确配置 ZeroTier Managed Route;内网主动访问 ZeroTier 时,则需要在内网网关配置对应静态路由。
评论