要拦截特定端口,本质是在INPUT链添加DROP或REJECT规则匹配--dport,如封禁3306端口:iptables -I INPUT 1 -p tcp --dport 3306 -j DROP;需注意规则顺序、协议指定(tcp/udp)、来源限制及重启持久化保存。

要拦截特定端口,本质是阻止外部对这个端口的入站连接。核心操作是在 INPUT 链 上添加一条 DROP 或 REJECT 规则,匹配目标端口(--dport),并确保该规则在默认策略生效前起作用。
明确拦截目标端口
比如要封禁 MySQL 默认端口 3306,命令为:
- iptables -A INPUT -p tcp --dport 3306 -j DROP
- 其中 -p tcp 指定协议(UDP 端口则用 udp);--dport 3306 表示“目标端口是 3306”;-j DROP 表示静默丢弃,客户端无响应。
- 若希望客户端立刻收到“连接被拒”,可将 DROP 改为 REJECT,但生产环境通常推荐 DROP,避免暴露服务状态。
注意规则顺序与默认策略
iptables 规则按顺序匹配,一旦命中即执行动作并停止后续检查。因此:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 如果 INPUT 链默认策略是 ACCEPT(常见于未加固系统),必须确保拦截规则在 ACCEPT 规则之前插入,否则无效。
- 推荐使用 -I INPUT 1 插入到最前面:iptables -I INPUT 1 -p tcp --dport 3306 -j DROP
- 执行 iptables -L -n --line-numbers 可查看规则序号,便于定位和管理。
仅拦截特定来源访问该端口
有时只需封禁某 IP 或网段对问题端口的访问,而非全站关闭:
- 封禁单个 IP 访问 3306:iptables -A INPUT -s 192.168.1.100 -p tcp --dport 3306 -j DROP
- 封禁整个网段:iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 3306 -j DROP
- 这类规则放在通用拦截规则之后、放行规则之前更稳妥,避免误伤白名单。
保存并持久化规则
iptables 规则默认不跨重启生效,必须手动保存:
- CentOS 6 / RHEL 6:service iptables save(写入 /etc/sysconfig/iptables)
- CentOS 7+ 若已停用 firewalld 并启用 iptables-services:iptables-save > /etc/sysconfig/iptables,再 systemctl restart iptables
- 验证是否生效:重新加载后执行 iptables -L -n | grep :3306,确认规则存在且位置正确。

















