You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UFW偶尔拦截已授权IP地址的技术问题求助

解决UFW间歇性允许规则失效的问题

咱们来拆解下你遇到的这个棘手问题:你的服务器(172.17.11.101)明明配置了UFW允许172.17.11.102的所有访问,但偶尔会出现4-5秒的拦截,内核日志还记录了被拦截的TCP SYN包(目标端口27018)。结合你的描述和日志细节,我整理了几个排查方向和解决方法:

先明确已知信息

  • 服务器IP:172.17.11.101,已启用UFW防火墙
  • 当前生效的关键规则:Anywhere ALLOW 172.17.11.102
  • 问题现象:规则多数时间正常,但间歇性拦截172.17.11.102发起的新TCP连接(持续4-5秒)
  • 拦截时的内核日志:

Mar 17 23:59:20 server kernel: [124538.209612] [UFW BLOCK] IN=eth0 OUT= MAC=00:50:56:a5:26:1a:b2:a3:56:a5:1b:69:08:00 SRC=172.17.11.102 DST=172.17.11.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=13165 DF PROTO=TCP SPT=60410 DPT=27018 WINDOW=29200 RES=0x00 SYN URGP=0

可能的原因及排查步骤

1. 内核连接跟踪(conntrack)表溢出

这是最常见的间歇性拦截原因,UFW依赖内核的conntrack模块跟踪连接状态,当连接跟踪表被占满时,新的SYN包(也就是你日志里的包)会被当作无效连接拦截。

  • 检查当前连接跟踪的使用情况:
    # 查看最大连接数限制
    sysctl net.netfilter.nf_conntrack_max
    # 查看当前已使用的连接数
    sysctl net.netfilter.nf_conntrack_count
    
  • 如果nf_conntrack_count接近nf_conntrack_max,说明表已饱和,需要调整上限:
    # 临时调整(重启后失效)
    sysctl -w net.netfilter.nf_conntrack_max=65536
    # 永久生效,编辑/etc/sysctl.conf,添加或修改该行
    echo "net.netfilter.nf_conntrack_max=65536" >> /etc/sysctl.conf
    sysctl -p
    
  • 同时可以调整TCP连接的超时时间,避免无效连接占用表空间:
    # 缩短SYN包的超时时间(默认可能是60秒)
    sysctl -w net.netfilter.nf_conntrack_tcp_timeout_syn_sent=30
    # 写入sysctl.conf永久生效
    echo "net.netfilter.nf_conntrack_tcp_timeout_syn_sent=30" >> /etc/sysctl.conf
    

2. UFW规则优先级或隐藏规则冲突

有时候看似只有一条允许规则,但可能存在默认策略或其他优先级更高的拒绝规则,偶尔触发拦截:

  • 查看完整的UFW规则列表(包括默认策略):
    ufw status verbose
    ufw show added
    
  • 确认默认入站策略是否为ALLOW?如果默认是DENY,而你的允许规则是后来添加的,要确保规则顺序正确(UFW规则是从上到下匹配,先匹配的生效)。

3. UFW服务或内核模块异常

UFW服务偶尔重启、崩溃,或者内核的ufw模块临时失效,都会导致规则短暂不生效:

  • 检查UFW服务的运行状态和历史日志:
    systemctl status ufw
    journalctl -u ufw --since "1 hour ago"
    
  • 如果发现服务有频繁重启的记录,可以尝试重启UFW服务并观察:
    systemctl restart ufw
    

4. 网络接口链路波动

你的日志里显示拦截的包来自eth0接口,如果该接口偶尔出现链路断开、重连或错误包,可能导致UFW规则临时失效:

  • 检查接口的历史状态:
    dmesg | grep eth0
    ip -s link show eth0
    
  • 查看是否有link down、link up或errors增长的记录,这可能是硬件或网络链路的问题。

额外调试技巧

可以临时提高UFW的日志级别,获取更详细的规则匹配信息:

# 设置日志级别为high,会记录每个包的规则匹配过程
ufw logging high

拦截发生后,查看/var/log/ufw.log,可以看到具体是哪条规则匹配了被拦截的包,帮助定位问题。

内容的提问来源于stack exchange,提问作者pcmanprogrammeur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:32:35