8
这个楼主还没有留下简介。
当前还没有回复,欢迎成为第一个参与讨论的人。
前几篇我们在本机搭建并验证了 OpenZiti 网络。这篇把 Quickstart 搬到一台公网 Linux 服务器,让外部客户端能连接 Controller 和 Edge Router。
本文按官方 Run OpenZiti anywhere 指南操作。它是用于学习和短期体验的 Quickstart 网络;官方建议长期运行的环境参考部署指南。
准备一台可通过 SSH 管理的 Linux 服务器,并为它配置公网 DNS 名称,例如 ziti.example.com。先添加一条指向服务器公网 IP 的 DNS A 记录。
在云平台安全组和服务器防火墙中允许以下 TCP 端口:
| 端口 | 用途 |
|---|---|
8440 |
Controller 与 Router 的控制连接 |
8441 |
客户端连接 Controller |
8442 |
客户端连接 Edge Router |
8443 |
ZAC 管理界面,可选 |
如果服务器使用 UFW,可按需开放前三个端口:
bashsudo ufw allow 8440:8442/tcp
如果计划从公网访问 ZAC,再开放 8443/tcp。云平台的安全组也要配置对应规则。
在服务器上打开 Bash 终端。下面的 ziti.example.com 请换成自己的域名:
bashexport EXTERNAL_DNS="ziti.example.com"
export EXTERNAL_IP="$(curl -s eth0.me)"
export ZITI_CTRL_EDGE_IP_OVERRIDE="${EXTERNAL_IP}"
export ZITI_CTRL_ADVERTISED_ADDRESS="${EXTERNAL_DNS:-${EXTERNAL_IP}}"
export ZITI_CTRL_ADVERTISED_PORT=8440
export ZITI_CTRL_EDGE_ADVERTISED_ADDRESS="${EXTERNAL_DNS:-${EXTERNAL_IP}}"
export ZITI_CTRL_EDGE_ADVERTISED_PORT=8441
export ZITI_ROUTER_ADVERTISED_ADDRESS="${EXTERNAL_DNS:-${EXTERNAL_IP}}"
export ZITI_ROUTER_IP_OVERRIDE="${EXTERNAL_IP}"
export ZITI_ROUTER_PORT=8442
EXTERNAL_IP 应是客户端能够访问的公网 IP。如果服务器使用 NAT,或该命令拿到的地址不正确,请改为云平台提供的公网 IP。域名记录和地址要匹配,否则其他设备可能无法连接。
确保系统有 tar、hostname、jq、curl 和 wget:
bashcommand -v tar hostname jq curl wget
下载官方安装脚本,先检查内容,再加载并运行 expressInstall:
bashwget -O ziti-cli-functions.sh https://get.openziti.io/ziti-cli-functions.sh less ziti-cli-functions.sh
查看完成后按 q 退出 less,然后执行:
bashsource ./ziti-cli-functions.sh
expressInstall
安装过程中会生成管理员密码。请将密码保存在安全位置,不要贴到公开帖子或代码仓库。
Quickstart 安装完成后会通过辅助命令启动 Controller 和 Router。为了让它们在服务器重启后自动运行,先生成 systemd 服务文件:
bashcreateControllerSystemdFile
createRouterSystemdFile "${ZITI_ROUTER_NAME}"
停止刚才由 Quickstart 启动的进程:
bashstopRouter stopController
安装并启用 systemd 服务:
bashsudo cp "${ZITI_HOME}/${ZITI_CTRL_NAME}.service" \
/etc/systemd/system/ziti-controller.service
sudo cp "${ZITI_HOME}/${ZITI_ROUTER_NAME}.service" \
/etc/systemd/system/ziti-router.service
sudo systemctl daemon-reload
sudo systemctl enable --now ziti-controller
sudo systemctl enable --now ziti-router
检查两个服务状态:
bashsudo systemctl status ziti-controller --no-pager
sudo systemctl status ziti-router --no-pager
两项都显示 active (running) 时,systemd 已经启动 Controller 和 Router。官方文档特别提醒:使用 systemd 后,应通过 systemctl 管理进程,不要再混用 startController、stopController 等辅助命令。
在服务器上重新加载 Quickstart 环境变量:
bashsource "$HOME/.ziti/quickstart/$(hostname -s)/$(hostname -s).env"
检查 Controller API 是否响应:
bashcurl -sk "https://${ZITI_CTRL_EDGE_ADVERTISED_ADDRESS}:${ZITI_CTRL_EDGE_ADVERTISED_PORT}"
然后登录并确认 Edge Router 在线:
bashzitiLogin
"${ZITI_BIN_DIR-}/ziti" edge list edge-routers
从另一台设备测试时,确认域名可以解析,且云平台安全组和服务器防火墙都允许相应端口。客户端后续应连接 8441 的 Controller Edge API 和 8442 的 Edge Router。
ziti-router 和 ziti-controller 的 systemd 状态与日志,并确认 8440/tcp、8442/tcp 可达。8441/tcp 规则和 ZITI_CTRL_EDGE_ADVERTISED_ADDRESS 是否一致。systemctl enable --now,再分别检查 ziti-controller 和 ziti-router。公网 Quickstart 需要可达的 DNS 名称、正确的对外地址以及 Controller 和 Edge Router 所需端口。将组件交给 systemd 管理后,服务器重启时它们也会自动启动。
本教程仍是学习用 Quickstart 网络。正式部署请从官方部署指南选择适合的拓扑和配置。