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

分类zerotier标签
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=eth0

ZeroTier 网卡加入 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 ACCEPT

LAN → 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 ACCEPT

firewalld 的 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/24

CentOS 的 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/24

CentOS 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 = ACCEPT

CentOS 9 本机的 ZeroTier 转发环境基本就配置完成了。

需要注意,CentOS 9 防火墙配置完成并不代表路由已经完成。ZeroTier 客户端访问其他网段时,还需要正确配置 ZeroTier Managed Route;内网主动访问 ZeroTier 时,则需要在内网网关配置对应静态路由。

本文为原创实践记录,首发于 小航博客,转载请注明出处与链接。

评论

发表评论

评论经审核后显示。请勿提交广告或与主题无关的内容。