iptables -m iprange 可按起止ip精确控制办公区出口公网地址段,适用于零散c类ip拼接场景;需用真实对外ip(如203.0.113.10–203.0.113.45),配合input/output链及accept/drop动作,置于白名单后、默认drop前,并持久化保存。

直接用 iptables -m iprange 可以按起止IP精确控制办公区出口的物理地址段,不依赖子网掩码,特别适合多个零散C类公网IP拼成的办公网出口场景。
确认真实办公区出口IP段
先拿到运营商分配的、直连防火墙的真实对外IP范围,比如 203.0.113.10–203.0.113.45。这不是内网私有地址,而是办公区所有终端统一出口的公网IP池。
- 避免混淆:不要用 192.168.x.x 或 10.x.x.x 这类内网地址做 iprange 匹配
- 验证方式:在办公区某台机器上访问 ifconfig.co 或 curl ifconfig.me,比对返回IP是否落在你计划使用的区间内
构造带方向的访问控制规则
iprange 本身只是匹配条件,必须配合链(INPUT/OUTPUT/FORWARD)和动作(ACCEPT/DROP)才能生效,且顺序关键。
- 只允许该段访问后台管理端口(如 8443):
iptables -A INPUT -p tcp --dport 8443 -m iprange --src-range 203.0.113.10-203.0.113.45 -j ACCEPT - 禁止该段连接数据库(如 3306):
iptables -A INPUT -p tcp --dport 3306 -m iprange --src-range 203.0.113.10-203.0.113.45 -j DROP - 防止该段从服务器反向发起连接(如 SSH 回连):
iptables -A OUTPUT -m iprange --dst-range 203.0.113.10-203.0.113.45 -j DROP
嵌入完整策略链并持久化
iprange 规则必须放在默认 DROP 策略之前,否则会被提前拦截;同时需搭配白名单基础规则,防止锁死自身管理通道。
- 确保已有基础放行(如本地回环、已建立连接):
iptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT - 把 iprange 规则插在白名单之后、全局 DROP 之前:
iptables -P INPUT DROP(最后设为默认策略) - 保存规则防重启丢失:
Ubuntu/Debian:iptables-save > /etc/iptables/rules.v4
CentOS/RHEL:service iptables save或使用iptables-save > /etc/sysconfig/iptables
验证与调试要点
规则上线后务必快速验证,避免误阻断关键路径。
- 查看带行号的当前规则:
iptables -L INPUT --line-numbers -n - 检查匹配计数是否增长(说明规则已触发):
iptables -L INPUT -v -n | grep "203.0.113" - 临时测试可用
-I INPUT 1插入顶部规则,验证无误后再调整位置











