发布于2026-08-19 阅读(0)
扫一扫,手机访问
如何检查iptables或nftables是否拦截了流量呢?首先,你得运行sudo iptables -L -n -v来检查INPUT/FORWARD链以及默认策略,或者用sudo nft list ruleset查看drop/reject规则。然后,还得结合firewalld状态、conntrack表使用率以及云安全组等进行多层排查。

大多数 Linux 服务器默认用 iptables 或 nftables 做包过滤,连接被拒往往就卡在这层。别急着关防火墙,先看规则里有没有明确 DROP 或 REJECT 的条目。
sudo iptables -L -n -v:重点看 INPUT 和 FORWARD 链,最后一行是默认策略(如 policy DROP),比规则本身更危险nftables(较新发行版默认),执行 sudo nft list ruleset;注意是否有 drop、reject 语句匹配目标端口或 IPsudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT,再试连接。成功即说明原规则在拦截firewalld 是 CentOS/RHEL/Fedora 默认的防火墙管理器,它不直接暴露底层规则,容易让人误以为“没开防火墙”。实际它可能静默拦截,尤其对非标准端口。
sudo firewall-cmd --state,输出 running 表示已启用sudo firewall-cmd --list-ports,若目标端口(如 5574)不在列表中,就是被拦了sudo firewall-cmd --list-services,有些服务(如 http)会批量放行端口,但自定义服务需显式添加sudo firewall-cmd --add-port=5574/tcp --permanent && sudo firewall-cmd --reload某些场景下,连接看似“超时”或“拒绝”,其实不是防火墙干的,而是连接跟踪表满、SYN 包被内核丢弃,或 netfilter 模块异常。这类问题不会出现在 iptables 规则里,得看内核日志。
sudo dmesg -T | grep -i "dropped|nf_conntrack|synproxy",常见提示如 nf_conntrack: table full 或 kernel: [xxx] TCP: drop open requestcat /proc/sys/net/netfilter/nf_conntrack_count 对比上限 cat /proc/sys/net/netfilter/nf_conntrack_max,超 90% 就容易丢包echo 65536 | sudo tee /proc/sys/net/netfilter/nf_conntrack_max在云服务器(阿里云、腾讯云、AWS)或虚拟机环境中,Linux 本机的防火墙只是最后一道防线。前面还有安全组、VPC 网络 ACL、宿主机 iptables,它们优先级更高,且你根本看不到。
iptables 全放通,安全组没开照样不通sudo iptables -t nat -L -n 查看 PREROUTING 链,宿主机可能做了 DNAT 或直接 DROPiptables -L 看起来干净,firewall-cmd 显示正常,但连接就是不通。得一层层往上翻,不能只盯着本机。 上一篇:Linux怎么查看目录的大小
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9