现状

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

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

下面记录下排查过程。

应用介绍

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

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

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

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

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

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

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

排查过程

怀疑ipv6

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

tcpdump -i any tcp port 9900 -Ann

我在虚拟机,又试了下:

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

发现抓包如下:

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

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

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

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

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

尝试修改配置文件,监听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

此时,在网上问大模型,大模型提到:

大模型建议实际测试下,看看到底是否支持ipv4:

测了之后,发现确实可以,那就说明对ipv4的支持没问题:

尝试从其他虚拟机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包:

而且,抓包到wireshark看的时候,发现mac地址也是正确的:

下图附两台机器的mac地址:

我于是在发起端的机器,查看下路由表:

发现路由表没错。

安装了个traceroute,发现就一跳,然后看看arp,发现这个ip对应的mac地址也是对的。

此时,又去网上查了下,开始怀疑到了防火墙的身上。

防火墙排查

找了下centos7.3中对应的防火墙相关命令:

https://www.ctyun.cn/zhishi/p-330299

发现目标服务器上,防火墙真的开着的:

查了下,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

然后再试试,果然就好了:

总结

这个centos7.3是新装的虚拟机,忘了防火墙会自动开启这回事了。

由于对netstat的输出也是半桶水,导致走了弯路,好歹最后还是找到了正确的路。

端口telnet不通排查过程的更多相关文章

  1. 阿里云、腾讯云开通端口 telnet不通的原因

    1.安全组是否已经开通相对应的端口: 阿里云:https://help.aliyun.com/document_detail/25471.html 腾讯云:http://bbs.qcloud.com/ ...

  2. Oracle开放1521端口 telnet不通解决办法

    在windosw虚拟机server2012上安装Oracle数据库后,远程连接失败,报 java.sql.SQLException: The Network Adapter could not est ...

  3. centos7 redis 6379端口telnet不通

    1.查看redis服务是否启动,如图所示,redis已经启动 2.查看是否监听正确的ip和端口 发现问题:端口号6379没错,但是ip是127.0.0.1,表示只能本地访问,问题就出在这. 3.修改r ...

  4. 故障排查:是什么 导致了服务器端口telnet失败?

    telnet命令的主要作用是与目标端口进行TCP连接(即完成TCP三次握手). 当服务端启动后,但是telnet其监听的端口,却失败了.或者,当服务端运行了一段时间后,突然其监听的端口telnet不通 ...

  5. 故障排查:是什么 导致了服务器端口telnet失败?(转)

    telnet命令的主要作用是与目标端口进行TCP连接(即完成TCP三次握手).当服务端启动后,但是telnet其监听的端口,却失败了.或者,当服务端运行了一段时间后,突然其监听的端口telnet不通了 ...

  6. 端口通不通 telnet wget ssh

    如何测试端口通不通(四种方法) 投稿:mrr 一般情况下使用"telnet ip port"判断端口通不通.接下来通过本文给大家分享四种方法测试端口通不通,感兴趣的朋友一起学习吧 ...

  7. 记一次生产环境Nginx日志骤增的问题排查过程

    摘要:众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡.反向代理等服务,但使用过程中可能因为对Nginx工作原理.变量含义理解错误,或是参数配置不当导致Nginx工作异 ...

  8. Connection refused 排查过程

    Connection refused 排查过程 connection refused  排查  起因 今天在连接 rabbitmq 时,报 Connection refused (如下图),借此机会记 ...

  9. 一次kibana服务失败的排查过程

    公司在kubernetes集群上稳定运行数月的kibana服务于昨天下午突然无法正常提供服务,访问kibana地址后提示如下信息: 排查过程: 看到提示后,第一反应肯定是检查elasticsearch ...

  10. 干货!一次kafka卡顿事故排查过程

    由于一次功能上线后,导致某数据量急剧下滑,给我们紧张的呢!排查过程也是个学习过程(这其中有大部分是领导们的功劳,不过分享给大家应该也不犯法吧,ᐓ) 1. 确认问题的真实性? 被数据部门告知,某数据量下 ...

随机推荐

  1. 第一个shell脚本(bash脚本)

    首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合.运维工作中把常用的一系列的操作都记录到一个文档中,然后去 ...

  2. SSL 和 TLS

    转载:链接1   链接2 TLS和SSL SSL(Secure Sockets Layer)安全套接层协议 TLS(Transport Layer Security)传输层安全性协议 最新版本的TLS ...

  3. Java类加载机制与JVM运行时数据区各逻辑内存区域与JDK的版本相关差异浅谈

    Java类加载机制与JVM运行时数据区各逻辑内存区域与JDK的版本相关差异浅谈 [摘要] JVM(Java Virtual Machine)作为Java研发人员工作的每天都会接触到的虚拟机,其运行机制 ...

  4. Java 中堆内存和栈内存上的数据分布和特点

    博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈 by emanjusak ...

  5. jenkins的admin用户的初始密码路径

    以下命令查看即可

  6. Thymeleaf select 反显 默认选中

    后台代码 List<ExamTestPaperDO> list = examTestPaperService.list(map); model.addAttribute("tes ...

  7. Deepin 设置开机执行某sh文件

    背景 deepin系统上部署了Geoserver,但是每次开机后都得手动过去起,麻烦,故想着找个办法解决下 过程 在/etc/systemd/system目录下新建一个 geoserver.servi ...

  8. ABP登录返回错误次数、锁定时间

    ABP默认登录返回错误结果时,不会显示错误次数.锁定时间.为了实现验证错误时返回错误次数.锁定时间,我们需要改造返回接口.   1.定位验证错误的地方: 修改部分代码 1 /// <summar ...

  9. 小米手机/红米手机解锁BL详细教程

    由于MIUI解锁风控提升,全部小米默认为支持解锁BootLoader的 但需要登录小米账号后,到开发者选项将设备和账号绑定0-1000小时,一般默认为168小时,部分新机实际几百小时,具体绑定时间,我 ...

  10. MyCat分库分表-安装

    准备3台虚拟机CentOS7,一台MyCat,两台MySQL 一.安装MySQL 打开MySQL官网mysql.com根据提示安装 1.yum仓库 https://dev.mysql.com/down ...