实现办公网访问生产机房的分布式精细跳板,核心是“控”而非“通”,需基于业务角色、源ip段、目标服务等维度分层过滤与路由分流;通过iptables协同conntrack、dnat/snat、拓扑隔离与日志审计,构建稳定、可审计、易扩展的多节点跳板体系。

要实现办公网访问生产机房的分布式精细跳板,核心不是“通”,而是“控”——即在多台跳板节点上,按业务角色、源IP段、目标服务、连接状态、并发数等维度做分层过滤与路由分流。Iptables 本身不提供负载均衡或集群调度能力,但可与拓扑设计、接口划分、conntrack 状态跟踪和规则优先级协同,构建稳定、可审计、易扩展的分布式跳板体系。
一、跳板节点网络拓扑与角色划分
避免单点瓶颈与权限泛化,建议按职能拆分跳板节点:
- 运维跳板节点(ops-jump):仅开放 SSH(2222)、SFTP、K8s API(6443)端口,源 IP 严格限制为运维终端网段(如 10.20.10.0/24)
- 数据库跳板节点(db-jump):仅映射 MySQL(3307)、PostgreSQL(5433)至内网 DB 实例,且强制绑定源 IP 白名单 + connlimit
- API/中间件跳板节点(api-jump):转发 HTTP/HTTPS 流量至生产 API 网关,配合 DNAT + SNAT,并启用 --ctorigdst 防止回程路径异常
所有跳板机外网接口(eth0)与内网接口(eth1)物理或逻辑隔离;生产机房网段统一规划为 192.168.100.0/22,办公网段为 10.20.0.0/16。
二、关键 iptables 规则配置(每节点独立部署)
以下规则需按顺序加载,前置白名单优于默认 DROP,并启用 conntrack 模块:
- 开启转发并设 FORWARD 默认策略为 DROP:
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf && sysctl -p
iptables -P FORWARD DROP - 放行已建立/相关连接(必须放在最前):
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 针对运维跳板:只允许办公网指定子网发起 NEW 连接至本机 2222 端口,再 DNAT 到生产机 22:
iptables -t nat -A PREROUTING -i eth0 -s 10.20.10.0/24 -p tcp --dport 2222 -j DNAT --to-destination 192.168.100.10:22
iptables -A FORWARD -i eth0 -o eth1 -s 10.20.10.0/24 -d 192.168.100.10 -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT - 针对数据库跳板:加源限连防爆破(单 IP 最多 2 并发):
iptables -t nat -A PREROUTING -i eth0 -s 10.20.20.0/24 -p tcp --dport 3307 -j DNAT --to-destination 192.168.100.50:3306
iptables -A FORWARD -i eth0 -o eth1 -s 10.20.20.0/24 -d 192.168.100.50 -p tcp --dport 3306 -m connlimit --connlimit-above 2 --connlimit-mask 32 -j REJECT - SNAT 回程保障(关键!否则内网服务无法响应):
iptables -t nat -A POSTROUTING -s 10.20.0.0/16 -d 192.168.100.0/22 -o eth1 -j MASQUERADE
三、分布式协同与安全加固要点
单节点配置只是基础,分布式跳板需叠加以下机制:
- DNS 轮询或 VIP+Keepalived 实现入口分发:将 jump.office.example.com 解析为多个跳板 IP,客户端自动选择;或用 VIP 统一入口,后端健康检查自动剔除故障节点
- 日志统一采集与会话标记:在每条 FORWARD ACCEPT 规则后追加 LOG 目标,记录 $LOG_PREFIX="jump-db" 或 "jump-ops",便于 ELK 关联分析
-
禁止反向穿透:显式拒绝从生产网段主动发起、目标为办公网的 NEW 连接:
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.100.0/22 -d 10.20.0.0/16 -m conntrack --ctstate NEW -j DROP -
定期清理 stale conntrack 表项:防止连接跟踪表溢出导致丢包,可加定时任务:
conntrack -E -e UPDATE | grep "timeout.*30" | xargs -r -n1 conntrack -D --orig-src
四、验证与可观测性建议
配置后务必验证三层连通性与策略有效性:
- 从办公网某终端执行:
curl -v http://jump.office.example.com:8080 → 应命中 api-jump 并返回生产网关响应 - 检查 conntrack 表是否生成预期条目:
conntrack -L | grep 192.168.100.50 | head -3 - 模拟非法源 IP 访问:
telnet 10.20.30.10 3307(来自非白名单段)→ 应超时或被 REJECT - 抓包确认 DNAT/SNAT 正确性:
tcpdump -i eth0 port 3307 -w jump-in.pcap
tcpdump -i eth1 host 192.168.100.50 -w jump-out.pcap










