infra-system-env-opslisted
Install: claude install-skill seed-forge/harness-ai-kit
# infra-system-env-ops
系统环境运维统一入口。v1 聚焦端口联通与转发(iptables/firewalld/portproxy/SSH tunnel),v2 扩展 Monit 统一看门狗、服务崩溃自愈和系统资源监控。
## 你要完成的事
1. 先在当前笔记库中查找已有端口转发笔记、历史命令或同网段案例。
2. 把用户需求整理成结构化信息:
- 转发机 IP
- 对外端口
- 目标内网 IP
- 目标端口
- 协议 TCP / UDP / both
- 操作系统与网络层:Linux、Windows、SSH tunnel、云安全组 / ACL
3. 输出四段式结果:
- 执行命令
- 校验命令
- 持久化方式
- 回滚命令
4. 若用户明确要求代执行,再根据当前工具链决定是给命令、SSH 执行,还是只做变更方案。
专项诊断技能(`diag-*` namespace,自包含全链 Runbook;本 skill 发现端口不通症状时委派):
- `diag-network-port-unreach`:端口不可达全链诊断——DNS → TCP → 防火墙 → 监听 → 路由。
## 默认判断
- 用户未说明协议时,默认按 `TCP` 处理,但要显式写出“若业务还需 UDP,再补规则”。
- 用户只给了公网机和目标机端口,默认理解为同端口转发。
- 若目标服务不是本机而是内网地址,优先考虑 `DNAT + FORWARD + POSTROUTING(MASQUERADE)`。
- 若系统是 Ubuntu 且明确使用 `ufw`,补 `ufw route allow` 思路;若是 CentOS/RHEL 且明确使用 `firewalld`,补 `firewall-cmd` 或 direct 规则思路。
- 若系统类型未知,先要求确认 OS;只需要临时联通时,优先给 SSH tunnel 方案;明确是 Linux 才给 `iptables` / `firewalld`;明确是 Windows 才给 `portproxy` / WinNAT。
## 工作流程
### 第一步:复用现有知识
优先搜索这些关键词:
- `端口转发`
- `iptables`
- `DNAT`
- `MASQUERADE`
- `firewall-cmd`
- `portproxy`
- `WinNAT`
- `ssh -L`
- `ssh -R`
- 目标 IP 或端口
如果笔记库已有近似案例,优先沿用原有命令风格。
## 第二步:组装最小可用方案
对典型公网机 A 转发到内网机 B 的 TCP 端口,默认输出这几类命令:
1. 开启 IP 转发
2. `PREROUTING` 的 `DNAT`
3. `FORWARD` 正向放行
4. `FORWARD` 回程放行,优先使用 `conntrack --ctstate ESTABLISHED,RELATED`
5. `POSTROUTING` 的 `MASQUERADE`
6. 必要时补 `INPUT` 放行入口端口
若需 UDP,单独追加 UDP 版本,不与 TCP 混写成含糊描述。
Windows 场景默认区分两类:
1. 本机监听并转发到目标地址:优先说明 `netsh interface portproxy` 只适合 TCP。
2. NAT/容器/虚拟网络转发:优先说明 WinNAT / Hyper-V / Do