iptables单条multiport规则最多支持15个端口,超出会报“invalid argument”错误;可行方案包括:按端口范围封禁、分组叠加multiport规则、或设默认drop策略后白名单放行必需端口。

用 iptables 的 -m multiport 封单条规则封几千个端口——不可行,会直接报错。
multiport 模块有硬性限制
iptables 的 multiport 扩展明确限制:最多只能指定 15 个离散端口(如 --dports 22,80,443,...),超出即触发错误:iptables: Invalid argument。它不支持“数千个”端口的列表式写法,底层内核模块未设计该能力。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
真正可行的替代方案
要高效封禁大量非业务端口(比如常见的高危端口 135–139、445、3389、5900–5905 等),应组合使用以下方法:
-
按协议+端口范围批量封禁:对连续端口段用
--dport 起始:结束,例如sudo iptables -A INPUT -p tcp --dport 135:139 -j DROPsudo iptables -A INPUT -p udp --dport 135:139 -j DROP -
分组叠加多条 multiport 规则:把危险端口拆成每组 ≤15 个,分别加规则,例如
sudo iptables -A INPUT -p tcp -m multiport --dports 3389,4899,5631,5632,5900,5901,5902,5903,5904,5905,6129 -j DROP
再另起一条封剩余端口 -
默认拒绝 + 白名单放行:最安全的做法是先设默认策略为 DROP,再仅开放必需端口
sudo iptables -P INPUT DROPsudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPTsudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
这样无需枚举“要封哪些”,自然屏蔽所有未明示允许的端口
封禁前务必注意
执行任何 DROP 规则前,请确认已保留 SSH(或其他管理通道)的访问能力,否则可能锁死服务器。建议:
- 先用
sudo iptables -L --line-numbers查看当前规则顺序 - 在测试环境验证规则效果,或加一条带
-m limit的临时规则观察日志 - 规则生效后立即保存:
sudo iptables-save > /etc/iptables.rules,并配置开机自动加载










