IPv6环境下访问被防火墙丢弃的端口后,合法端口连接出现挂起的异常问题咨询
IPv6环境下访问被防火墙丢弃的端口后,合法端口连接出现挂起的异常问题咨询
大家好,我最近在用两台虚拟机测试nftables防火墙规则——一台作为启用防火墙的服务端,另一台作为客户端发起连接测试,结果遇到了一个只在IPv6环境下出现的奇怪问题,想请教下各位:
测试场景与正常表现
- 无防火墙时:用
nc -6 fe80::9d08:b3e2:47fa:2935%ens33 <任意端口>测试,如果服务端没监听对应端口,会返回connection refused;如果服务端用netcat监听该端口,连接能成功建立,这都是正常的。 - 添加防火墙规则后:我配置规则只放行33333端口,其他流量默认丢弃。此时访问33333端口,不管服务端是否监听,结果都符合预期(要么连接拒绝,要么成功建立)。
异常问题的出现过程
当我尝试访问一个被防火墙默认策略丢弃的端口(比如22222)时,netcat会一直挂起直到超时,这本来我觉得是符合预期的,但之后再访问合法的33333端口时,居然也会挂起直到超时!
我只能通过以下操作临时恢复:先清空防火墙规则,重新用netcat访问33333端口并成功连接后,再重新应用防火墙规则,这时候访问33333才会恢复正常。但只要再访问一次被丢弃的端口,问题就会再次出现。
补充信息
- 这个异常只在IPv6环境下出现,IPv4测试完全没有问题
- 我试过用ncat、nmap以及tcpdump工具测试,都能观测到类似的异常表现
- 感觉自己可能对IPv6网络的某些机制理解不到位,想问问有没有大佬遇到过类似的问题或者知道原因?
备注:内容来源于stack exchange,提问作者stmas




