核心是结合链选择、匹配条件、动作控制与策略顺序整体设计:先明确业务通信特征(服务端/客户端、流量方向、网络身份),再按场景选用iprange、owner或state等精准匹配方式,嵌入完整策略链并前置白名单、后置默认DROP,最后保存验证。

要实现特定业务的隔离访问网段,核心是让该业务的流量(入向或出向)只被指定网段访问、或只访问指定网段,同时与其他流量严格区隔。这不是简单加一条规则,而是结合链选择、匹配条件、动作控制与策略顺序的整体设计。
明确业务边界与网络角色
先确认该业务的通信特征:
- 是服务端(如后台API监听在8443端口),还是客户端(如某进程主动调用外部接口)
- 流量方向:是外部访问本机服务(走INPUT链),还是本机访问外部资源(走OUTPUT链),或是转发流量(走FORWARD链)
- 网络身份:该业务是否绑定特定用户(UID)、端口、进程名,或运行在特定出口IP段(如办公区公网出口203.0.113.10–203.0.113.45)
例如,财务系统后台仅允许办公区公网出口IP访问管理端口,但禁止其连接数据库;又如某监控代理必须走专用线路访问云厂商API,不能混用主网卡。
按场景选用精准匹配方式
- 若业务出口IP零散不连续(如多个C类公网地址拼成的办公出口),用
iptables -m iprange:- 允许访问管理端口:
iptables -A INPUT -p tcp --dport 8443 -m iprange --src-range 203.0.113.10-203.0.113.45 -j ACCEPT - 禁止访问数据库端口:
iptables -A INPUT -p tcp --dport 3306 -m iprange --src-range 203.0.113.10-203.0.113.45 -j DROP
- 允许访问管理端口:
- 若业务由固定用户(如dbuser)发起,用
-m owner --uid-owner配合策略路由:- 标记该用户所有外发包:
iptables -t mangle -A OUTPUT -m owner --uid-owner dbuser -j MARK --set-mark 200 - 绑定独立路由表,强制走专用网关:
ip rule add fwmark 200 table db_route
- 标记该用户所有外发包:
- 若业务需跨VPC单向访问(如生产VPC→测试VPC),必须用 FORWARD 链 + 连接状态控制:
- 放行新建连接(仅A→B):
iptables -A FORWARD -s 10.100.0.0/16 -d 172.20.0.0/16 -m state --state NEW,ESTABLISHED -j ACCEPT - 仅放行已有连接响应(B→A回程):
iptables -A FORWARD -s 172.20.0.0/16 -d 10.100.0.0/16 -m state --state ESTABLISHED,RELATED -j ACCEPT
- 放行新建连接(仅A→B):
嵌入完整策略链并防误锁
所有规则必须放在合理位置:
- 白名单规则(如本地回环、已建立连接、运维IP)要前置
- 业务隔离规则紧随其后
- 默认策略设为
iptables -P INPUT DROP(或 FORWARD/OUTPUT,依场景而定),且必须是最后一步 - 操作前务必确保当前SSH会话IP已被放行,避免失联
保存规则防止重启失效:
- Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4 - CentOS/RHEL:
service iptables save或iptables-save > /etc/sysconfig/iptables
验证是否生效
- 查看带行号和计数的规则:
iptables -L INPUT --line-numbers -n -v - 检查匹配计数是否增长:
iptables -L INPUT -v -n | grep "203.0.113" - 从目标网段机器测试连通性,同时抓包确认路径与响应行为
不复杂但容易忽略

















