iptables端口筛选需区分连续与离散场景:连续端口用--dport 起始:结束(如8080:8090),须指定协议-p tcp/udp;离散端口用-m multiport --dports 端口1,端口2,最多支持15个,不可混用范围语法;结合conntrack状态匹配可提升安全性,规则顺序与验证计数器是调试关键。

iptables 基于端口范围筛选,关键在于选对匹配方式:连续范围用 --dport 起始:结束,离散端口用 -m multiport --dports。用错语法或忽略协议限定,规则就无效。
连续端口范围:用冒号语法最简洁
适用于端口号连续、跨度较大的场景(如开放 Web 服务端口、限制扫描行为)。语法简单,性能好,无需额外模块。
-
正确写法:允许 TCP 8080 到 8090 的所有端口
iptables -A INPUT -p tcp --dport 8080:8090 -j ACCEPT -
正确写法:拒绝 UDP 10000–20000 区间(常见 RTP 媒体端口)
iptables -A INPUT -p udp --dport 10000:20000 -j DROP -
常见错误:写成
--dport 8080,8090或漏写-p tcp/udp—— iptables 会报错或静默失效
离散端口列表:必须加载 multiport 模块
当只需放行或拦截几个不连续的端口(如 SSH、DNS、NTP),用 -m multiport 更清晰,但注意它只支持最多 15 个端口,且不兼容端口范围写法。
一款AI工具,主要用于管理 OpenClaw 所使用的来自 OpenRouter 的免费 AI 模型。自动按质量对模型进行排序,配置回退机制以应对速率限制,并更新 opencla...,适合需要提升相关任务效率的用户。
-
正确写法:同时放行 TCP 的 22、53、123 端口
iptables -A INPUT -p tcp -m multiport --dports 22,53,123 -j ACCEPT -
正确写法:拒绝多个 UDP 端口(如防止 DNS 放大攻击)
iptables -A INPUT -p udp -m multiport --dports 53,161,162 -j DROP -
不能混用:multiport 不支持
--dports 22:25这类写法,会报错
结合状态匹配提升安全性
单纯按端口放行有风险。比如只允许新连接访问 22 端口,但已建立的会话要无条件放行,避免中断 SSH 会话。
- 先放行新建的 SSH 连接:
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT - 再放行所有已建立和关联连接(含响应包):
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 最后默认 DROP 其他流量 —— 这样既控端口,又保连接稳定
验证与调试要点
规则生效后别急着保存,先确认是否按预期匹配:
- 用
iptables -L INPUT -n -v --line-numbers查看计数器,观察对应规则的 packet 数是否增长 - 测试时用
nc -zv 目标IP 端口或telnet 目标IP 端口验证连通性 - 若规则没触发,检查链位置(-I 插入开头 vs -A 追加末尾)、协议类型(TCP/UDP 是否匹配)、以及是否有更早的 ACCEPT/DROP 规则截断了匹配流程










