快速脚本安装与 fwknopd 管理
安装 PortGuard Server 最快的方式是使用官方安装脚本。脚本安装的包由 GitHub Actions 从公开源码仓库自动构建,所以源码和构建流程都可以公开审计。
1. 安装
curl -fsSL https://portguard.net/install.sh | sudo bash
生成的 SPA_SERVER 会优先使用服务器的公网 IPv4;如果无法探测公网地址,
则回退到服务器的内网 IPv4。hostname 只用于客户端配置的 section name。
仅当需要指定域名或其他 IP 时才使用 --server 覆盖自动探测结果。
安装时自定义客户端配置:
curl -fsSL https://portguard.net/install.sh | sudo bash -s -- \
--server vpn.example.com \
--access tcp/22,tcp/80 \
--knock-port 62201 \
--user portguard \
--timeout 60
安装脚本会生成:
/etc/fwknop/fwknopd.conf/etc/fwknop/access.conf
2. 升级
升级或重新安装最新匹配的 release 包,同时保留已有密钥:
curl -fsSL https://portguard.net/install.sh | sudo bash -s -- --upgrade
3. 验证服务
sudo fwknopd --exit-parse-config \
-c /etc/fwknop/fwknopd.conf \
-a /etc/fwknop/access.conf
sudo systemctl status fwknopd
如果当前环境没有启用 systemd,可以手动启动:
sudo fwknopd -c /etc/fwknop/fwknopd.conf -a /etc/fwknop/access.conf
4. 导入到 PortGuard Client
查看客户端导入 payload 和二维码:
sudo portguard-fwknopd -Q
在 PortGuard Client 中导入配置,或者扫描二维码文本即可。生成的配置包含 SPA_SERVER、SPA_SERVER_PORT、ACCESS、KEY_BASE64、HMAC_KEY_BASE64、SPOOF_USER 和超时时间。
5. 修改开放端口、用户名或密钥
修改受保护端口:
sudo vim /etc/fwknop/access.conf
示例:
SOURCE ANY
OPEN_PORTS tcp/22,tcp/443
KEY_BASE64 <your-key>
HMAC_KEY_BASE64 <your-hmac-key>
REQUIRE_SOURCE_ADDRESS Y
REQUIRE_USERNAME portguard
FW_ACCESS_TIMEOUT 60
MAX_FW_TIMEOUT 60
生成新密钥:
sudo fwknopd --key-gen
修改后验证并重启:
sudo fwknopd --exit-parse-config \
-c /etc/fwknop/fwknopd.conf \
-a /etc/fwknop/access.conf
sudo systemctl restart fwknopd
如果修改了密钥,可以重新运行安装脚本生成新的 PortGuard Client 配置:
curl -fsSL https://portguard.net/install.sh | sudo bash -s -- \
--server vpn.example.com \
--access tcp/22,tcp/443 \
--user portguard
6. Telegram 访问通知
可以配置 Telegram Bot,在 SPA 敲门成功后接收来源 IP、申请开放的端口、 开放时间和过期时间:
sudo portguard-fwknopd --fw-console
选择选项 5,或者查看完整的
Telegram 通知配置文档。
7. 防火墙提醒
调整防火墙前请保留一个备用 SSH 会话。安装脚本会生成 fwknopd 配置和客户端导入数据,但默认不会强制重置防火墙。确认 UDP 62201 可以访问后,fwknopd 会在收到有效 SPA 包时为受保护的 TCP 端口添加临时规则。