基于ZeroTier与APISix的云服务器-物理机KVM跨云组网解决方案:实现安全流量穿透与IP隐藏
背景说明
张师傅运维的网络资产如下:
设备类型 | 地址信息 | 操作系统 | 核心角色 |
---|---|---|---|
云服务器 | 公网IP:43.134.30.162 | CentOS 7.9 | VPN网关/流量入口 |
物理服务器 | 内网IP:192.168.1.204 | CentOS 7.9 | KVM虚拟化平台 |
KVM虚拟机示例 | 内网IP:192.168.3.4 | CentOS 7.9 | GitLab服务节点 |
核心需求
- 通过云服务器建立安全通道访问物理服务器的KVM服务
- 实现物理服务器及虚拟机IP的完全隐藏
- 突破ZeroTier节点数量限制(虚拟机不加入VPN网络)
- 统一通过APISix网关实现HTTPS流量管控
最终架构图
graph TD
A[客户端浏览器] -->|HTTPS 443| B(云服务器<br/>43.134.30.162)
B -->|APISix智能路由| C[物理服务器<br/>192.168.1.204 zeroTier内网IP:10.147.18.150]
C -->|iptables端口映射| D[KVM虚拟机集群]
subgraph 服务转发逻辑
D -->|80/tcp| E[GitLab 192.168.3.4]
D -->|443/tcp| F[KubeSphere 192.168.3.5]
D -->|3306/tcp| G[MySQL 192.168.3.6]
end
部署实施手册
阶段一:ZeroTier网络构建
1. 控制台初始化
- 访问ZeroTier管理中心
- 完成账号注册及企业网络创建(记录Network ID:
1d719394042e1111
)
2. 节点接入配置
Windows客户端部署
# 官方下载地址
https://www.zerotier.com/download/#windows
# 安装后通过图形界面加入目标网络
Linux服务器部署(物理机/云服务器通用)
# 自动化安装脚本
curl -s https://install.zerotier.com | sudo bash
# 网络接入命令(需替换实际Network ID)
zerotier-cli join 1d719394042e1111
3. 连接验证
# 在物理服务器执行验证
[root@kvm ~]# zerotier-cli listnetworks
200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
200 listnetworks 1d719394042e1111 zhangshifu 1st network 12:2c:27:06:87:c7 OK PRIVATE ztrf232giv 10.147.18.150/24
跨平台互通测试
# Windows客户端访问物理机(ZeroTier内网IP)
ssh root@10.147.18.150
阶段二:云服务器配置(APISix网关)
参考标准化部署文档完成安装:
阶段三:物理服务器配置(流量中继)
# 1. 启用IP转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 2. 配置端口映射(以GitLab服务为例)
iptables -t nat -A PREROUTING -p tcp --dport 8081 -j DNAT \
--to-destination 192.168.3.4:80
# 3. 持久化防火墙规则
service iptables save
# 4. 验证配置
iptables -t nat -L -n -v
阶段四:DNS与路由配置
1. 域名解析配置
# A记录配置示例
gitlab.howlaisi.com IN A 43.134.30.162
2. APISix路由配置
3. 增强型转发规则(可选)
sudo iptables -t nat -A PREROUTING -p tcp --dport 8081 -J DNAT --TO-DESTINATION 192.168.3.3:80
# 此处省略其他服务端口映射配置示例
访问验证流程
1. 服务访问测试
# HTTPS访问测试
curl -v https://gitlab.howlaisi.com
# 预期响应:GitLab默认欢迎页面
这里是HTTPS的访问,需要购买域名并且配置HTTPS证书,此处省略购买和配置过程。
2. 流量路径追踪
sequenceDiagram
用户->>+浏览器: 访问https://gitlab.howlaisi.com
浏览器->>+云服务器APISix: HTTP 80或HTTPS 443请求
云服务器APISix->>+物理服务器: 路由匹配,根据端口、域名等转发请求
物理服务器->>+iptables: 端口映射处理
iptables->>+KVM虚拟机: 192.168.3.4:80
3. 连接验证矩阵
测试项 | 验证方式 | 预期结果 |
---|---|---|
ZeroTier连通性 | ping 10.147.18.150 | 通信正常 |
HTTPS证书验证 | 浏览器访问 | 显示有效SSL证书锁形图标 |
评论区