V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
baskice
V2EX  ›  问与答

ufw allow 为什么不生效?

  •  
  •   baskice · 2018-09-12 12:29:34 +08:00 · 1827 次点击
    这是一个创建于 2025 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这样设置的:
    ufw default deny incoming
    ufw default allow outgoing
    ufw allow from 源 IP to any port 8080
    ufw allow 22
    ufw enable
    像这样设置,但是只有允许 22 生效了。源 ip 机器程序访问 8080 还是会被挡下来。尝试了 ufw reset,ufw reload,重启服务,重启机器。都没有效果,还是会被挡下来。why ?求助

    ufw 的日志像这样。
    Sep 12 12:22:58 debian kernel: [ 447.198034] [UFW BLOCK] IN=eth0 OUT= MAC=一大堆 mac 地址 SRC=源 IP DST=本机 IP LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=55331 DF PROTO=TCP SPT=49008 DPT=8080 WINDOW=6377 RES=0x00 ACK FIN URGP=0
    2 条回复    2018-09-12 13:32:37 +08:00
    Hardrain
        1
    Hardrain  
       2018-09-12 13:28:37 +08:00
    你设置了带 deny 的 rules 吗?
    deny 要放在 allow 前面。
    所以添加 deny rules 要用 ufw insert
    baskice
        2
    baskice  
    OP
       2018-09-12 13:32:37 +08:00
    最后发现原因了,ACK FIN 是关闭 tcp 连接后选择性由对方发来表收到 tcp 连接关闭信号的包。

    由于本地链接已经被关闭,这个包会被网络过滤器挡下。并不影响程序运作。

    linux 内核一度将已关闭链接缓存 120 秒来避免这种不认包的状况。不过后来又删掉了,于是开启包过滤时就会收到各种 ACK FIN 包被阻挡的 log,RST 也有几率出现。

    这种 log 可以由 iptables 在 ufw 前先行设置为 invalid 丢弃不计入 log。因为太麻烦了我就不弄了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2811 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:35 · PVG 21:35 · LAX 06:35 · JFK 09:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.