惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 三国梦回

spring boot 项目中oracle datasource设置schema spring cloud项目中,在bootstrap.yml中指定了active的profile,结果不生效 线上服务重启后,从nacos取不到配置了,怎么回事 nginx location没学好,把自己坑了一把 技术问题记录20260125 最近遇到的两个技术问题记录 linux服务器文件上传失败 线上遇到的redis和数据库数据未同步问题、redisson内部实现问题 复杂业务系统线上问题排查过程 nacos中配了一个数字,springboot取回来怎么变了 一个java空指针异常的解决过程 简单记录下最近2个月完成的线上系统迁移工作 centos停服,迁移centos7.3系统到新搭建的openEuler https证书中的subject alternative name字段作用及如何生成含该字段的证书 linux中如何判断一个rpm是手动安装还是通过yum安装的 对接服务升级后仅支持tls1.2,jdk1.7默认使用tls1.0,导致调用失败 网络抓包文件太大,如何切分 分页查询不加排序有问题,加了排序怎么还有问题 利用mybatis拦截器记录sql,辅助我们建立索引(二) 利用mybatis拦截器记录sql,辅助我们建立索引(一) sql server版本太老,java客户端连接失败问题定位
端口telnet不通排查过程
三国梦回 · 2025-04-12 · via 博客园 - 三国梦回

现状

简单描述下最近在做啥,我手里维护的一些系统的线上服务器,还在使用centos7,7.3/7.6/7.9都有,运维侧选定的替换系统是openEuler20.03-LTS-SP1。按理说,运维直接在线上升级系统就完了,但是,由于风险太大了(直接升级后可能导致应用异常),就还是需要研发出迁移方案、测试组进行测试后,比较保险。

于是,我就在本地虚拟机virtualbox先来折腾试试,先搭了个centos 7.3的系统,部署了个应用,监听端口9900,结果怎么都访问不了。

下面记录下排查过程。

应用介绍

我们这个服务器是centos7.3,上面的应用也比较老,是一种java servlet容器:resin,和tomcat类似,对外提供http接口。

配置监听端口的地方如下:

image-20250411104535813

程序启动后,我看端口是在监听的:

image-20250411104640445

我本机curl试了下,可以访问:

[root@node7 my168_web]# curl localhost:9900
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

我这个虚拟机的端口9900,需要暴露到windows宿主机进行访问,配置了下端口映射:

image-20250411104901122

然后,通过浏览器访问localhost:19900,发现失败:

image-20250411105013245

排查过程

怀疑ipv6

我在虚拟机上,开了tcpdump,发现可以收到syn握手:

tcpdump -i any tcp port 9900 -Ann

image-20250411105223762

我在虚拟机,又试了下:

[root@node7 my168_web]# curl localhost:9900
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

发现抓包如下:

image-20250411105420467

此时,就看到通过localhost访问时,用的ipv6的地址,此时,开始怀疑是不是9900端口,仅监听了ipv6导致的。

下面这个输出,强化了我的猜测:

image-20250411105610890

我又看了下其他环境,发现:

如果这个环境里,只有ipv4地址,netstat的输出就不一样

image-20250411105759812

另外一套环境,有ipv6地址,netstat输出就是inet6啥的。

image-20250411105929962

尝试修改配置文件,监听ipv4

把配置改成了下面这样:

<http address="0.0.0.0" port="9900"/>

重启后,netstat结果发现输出没啥变化:

[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的输出也是半桶水,导致走了弯路,好歹最后还是找到了正确的路。