Centos7.3端口telnet不通排查:从ipv6到防火墙的解决之旅

重启后,netstat结果发现输出没啥变化:
```shell
[root@node7 my168_web]# netstat -nltp|grep 9900
tcp6       0      0 :::9900                 :::*                    LISTEN      11992/java      

此时,在网上问大模型,大模型提到: image-20250411110639245 大模型建议实际测试下,看看到底是否支持ipv4: image-20250411110732643 测了之后,发现确实可以,那就说明对ipv4的支持没问题: image-20250411110837192

尝试从其他虚拟机telnet该端口

我找了另一台同网段的机器10.0.2.8:

[root@node-4 yum.repos.d]# telnet 10.0.2.12 9900
Trying 10.0.2.12...
telnet: connect to address 10.0.2.12: No route to host

很奇怪的是,你说no route我可以理解,就是找不到目标主机的路由项嘛,但是,我在目标主机开了抓包的,发现telnet的时候,能收到syn包: image-20250411111207640 而且,抓包到wireshark看的时候,发现mac地址也是正确的: image-20250411111450258 下图附两台机器的mac地址: image-20250411111607327 image-20250411111630302 我于是在发起端的机器,查看下路由表: image-20250411111400569 发现路由表没错。 安装了个traceroute,发现就一跳,然后看看arp,发现这个ip对应的mac地址也是对的。 image-20250411111716475 此时,又去网上查了下,开始怀疑到了防火墙的身上。 image-20250411111946672

防火墙排查

找了下centos7.3中对应的防火墙相关命令: https://www.ctyun.cn/zhishi/p-330299 发现目标服务器上,防火墙真的开着的: image-20250411112126775 查了下,9900端口是否开放,发现没开放:

[root@node7 my168_web]# firewall-cmd --query-port=9900/tcp
no
9900加入开放:
firewall-cmd --permanent --add-port=9900/tcp
firewall-cmd --reload
[root@node7 my168_web]# firewall-cmd --permanent --add-port=9900/tcp
success
[root@node7 my168_web]# firewall-cmd --reload
success
[root@node7 my168_web]# firewall-cmd --query-port=9900/tcp
yes

然后再试试,果然就好了: image-20250411112318814

总结

这个centos7.3是新装的虚拟机,忘了防火墙会自动开启这回事了。 由于对netstat的输出也是半桶水,导致走了弯路,好歹最后还是找到了正确的路。