温馨提示×

linux防火墙为何拦截

小樊
74
2026-09-25 13:53:57
栏目: 智能运维

“Linux 防火墙为何拦截”这个问题比较宽泛,通常可以从原因分类、常见场景、排查方法三个层面来理解。下面我用通俗但偏技术的方式给你梳理一下。


一、Linux 防火墙为什么会“拦截”

Linux 上常见的防火墙实现有:

  • iptables(传统)
  • nftables(新一代)
  • firewalld(CentOS/RHEL 常用,封装 iptables/nftables)
  • ufw(Ubuntu 常用,简化 iptables)

防火墙“拦截”的本质原因是:
数据包不匹配“允许规则”,或者命中了“拒绝/丢弃规则”。


二、常见拦截原因(重点)

1️⃣ 默认策略是 DROP / REJECT

很多服务器安全加固后:

iptables -P INPUT DROP

或 firewalld:

default zone = drop

结果:

  • 没显式放行的端口 → 全部拦截

✅ 典型现象:

  • ping 不通
  • SSH 连不上
  • 服务端口无法访问

2️⃣ 端口未放行

例如:

  • Nginx 监听 80/443
  • 但防火墙只放行了 22

firewalld 示例:

firewall-cmd --list-ports
# 没有 80/tcp

iptables 示例:

iptables -L -n
# 看不到 ACCEPT tcp dpt:80

3️⃣ 接口(网卡)或来源 IP 被限制

防火墙可以按:

  • 网卡(eth0 / ens33)
  • 源 IP
  • 网段

拦截

例如:

iptables -A INPUT -s 192.168.1.0/24 -j DROP

或 firewalld:

rich rule deny from 10.0.0.5

4️⃣ 服务未绑定到正确地址

有时不是防火墙拦,而是:

  • 服务只监听 127.0.0.1
  • 防火墙其实没拦

检查:

ss -lntp

看到:

127.0.0.1:8080

→ 外部一定连不上


5️⃣ 被 fail2ban / 安全软件封 IP

很多 Linux 服务器装了:

  • fail2ban
  • denyhosts
  • 云安全组

现象:

  • 突然连不上
  • 换个 IP 又能连

查看:

iptables -L -n | grep DROP

6️⃣ 云服务器“双层防火墙”

很多人忽略:

  • 云安全组(外层)
  • 系统防火墙(内层)

即使 Linux 放行了,云面板没放行 → 依然不通


7️⃣ 连接状态(state)限制

例如:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

如果这条缺失:

  • 能发出请求
  • 但回包被拦

三、如何快速判断“是不是防火墙拦的”

✅ 临时关闭防火墙测试(生产慎用)

# firewalld
systemctl stop firewalld

# iptables
iptables -F

# ufw
ufw disable

如果关了就能通 → 就是防火墙问题。


✅ 看日志

# firewalld
journalctl -u firewalld

# iptables 日志(需配置 LOG 规则)
dmesg | grep DROP

✅ 看规则

iptables -L -n -v
firewall-cmd --list-all
ufw status verbose

四、一句话总结

Linux 防火墙拦截,99% 是因为:默认拒绝 + 没放行端口/IP/接口,或云安全组叠加限制。

如果你愿意,可以告诉我:

  • 用的什么系统(CentOS / Ubuntu)
  • 什么服务连不上(SSH / Web / 数据库)
  • 报错现象

我可以直接帮你写对应的放行命令。

0 踩