注意:以下文档只适用于TOP接口,请谨慎使用!
免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
本文主要介绍使用ping命令正常但端口不通时,进行排查的方法。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
如果您是无法访问网站,请参见无法访问ECS实例中运行网站的详细排查方法进行处理。当您在客户端访问目标服务器时,如果能ping通,但业务端口无法访问,您可以参见以下方法进行排查。
通过VNC远程连接登录目标服务器之后,执行以下命令,检查端口是否被监听。
说明:
- Linux系统如何通过VNC远程连接到Linux实例,请参见通过VNC远程连接登录Linux实例。
- Windows系统如何通过VNC远程连接到Windows实例,请参见通过VNC远程连接Windows实例。
1 | netstat -ntpl|grep [$Port] |
说明:[$Port]为相应的端口号。
系统显示类似如下。
说明:
0.0.0.0
代表本机上可用的任意地址。比如,0.0.0.0:135
表示本机上所有地址的135端口。tcp 0.0.0.0:80
表示在所有的可用接口上监听TCP的80端口。
通过VNC远程连接登录目标服务器之后,执行以下命令,检查防火墙配置。
1 | iptables -nL |
如果返回结果中存在相应端口的配置规则,可删除相应的规则或者先关闭防火墙,然后再测试端口连通性。关闭防火墙的具体操作如下:
1 | systemctl status firewalld.service |
1 | systemctl stop firewalld.service |
1 | systemctl disable firewalld.service |
先关闭防火墙,然后再测试端口连通性,具体操作如下:
端口无法访问可能是链路中的相关节点拦截了端口所致,请利用端口可用性探测的相关工具进行测试,验证是否有节点拦截了端口。端口可用性探测工具的详细介绍请参见更多信息。
通常情况下,您可以参见以下步骤进行探测:
此处介绍两个探测结果的案例,案例中包括探测结果和分析。
探测结果如下,目标端口在第3跳之后就没有数据返回。
1 | C:\>tracetcp www.aliyun.com: 135 <br>Tracing route to 115 .X.X. 27 on port 135 <br>Over a maximum of 30 hops.<br> 1 3 ms 3 ms 3 ms 1X.X.X.X<br> 2 4 ms 3 ms 3 ms 2X.X.X.X<br> 3 3 ms 3 ms 3 ms 3X.X.X.X<br> 4 * * * Request timed out.<br> 5 * * * Request timed out.<br> 6 * * * Request timed out.<br> 7 * * * Request timed out.<br> 8 * * * Request timed out.<br> 9 * * * Request timed out.<br> 10 * * * Request timed out.<br> 11 * * * Request timed out.<br> 12 * * * Request timed out.<br>Trace Complete. |
案例分析
因为该节点为内网IP,可能是本地网络相关安全策略所致,需要联系本地网络管理人员做进一步排查分析。
探测结果如下,目标端口在第11跳之后就没有数据返回。
1 | [root @mycentos ~]# traceroute -T -p 135 www.baidu.com<br>traceroute to www.baidu.com ( 111.13 . 100.92 ), 30 hops max, 60 byte packets<br> 1 * * *<br> 2 1X.X.X.X (1X.X.X.X) 4.115 ms 4.397 ms 4.679 ms<br> 3 2X.X.X.X (2X.X.X.X) 901.921 ms 902.762 ms 902.338 ms<br> 4 3X.X.X.X (3X.X.X.X) 2.187 ms 1.392 ms 2.266 ms<br> 5 * * *<br> 6 5X.X.X.X (5X.X.X.X) 1.688 ms 1.465 ms 1.475 ms<br> 7 6X.X.X.X (6X.X.X.X) 27.729 ms 27.708 ms 27.636 ms<br> 8 * * *<br> 9 * * *<br> 10 111.13 . 98.249 ( 111.13 . 98.249 ) 28.922 ms 111.13 . 98.253 ( 111.13 . 98.253 ) 29.030 ms 28.916 ms<br> 11 111.13 . 108.22 ( 111.13 . 108.22 ) 29.169 ms 28.893 ms 111.13 . 108.33 ( 111.13 . 108.33 ) 30.986 ms<br> 12 * * *<br> 13 * * *<br> 14 * * *<br> 15 * * *<br> 16 * * *<br> 17 * * *<br> 18 * * *<br> 19 * * *<br> 20 * * * |
案例分析
因为该节点经查询后归属北京移动,需要您自行向运营商反馈,或者提交工单做进一步排查分析。
不同的操作系统,端口可用性探测所使用的工具有所不同。此处分别介绍如下系统中的端口可用性探测工具。
traceroute是几乎所有Linux发行版本预装的网络测试工具,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。traceroute通过发送TCP数据包向目标端口进行探测,以检测从数据包源到目标服务器的整个链路上相应端口的连通性情况。该工具的介绍如下:
使用方法
traceroute是用于端口可用性探测的常用命令,命令格式如下:
1 | traceroute [-n] -T -p [$Port] [$Host] |
说明:
- -n:直接使用IP地址而非主机名称(禁用DNS反查)。
- -T:通过TCP探测。
- -p:设置探测的端口号。
- [$Port]:需要探测的端口号,比如80。
- [$Host]:需要探测的目标服务器地址,比如
10.10.1.1
。- 更多关于traceroute的用法,您可以通过man命令查阅。
测试示例
traceroute的示例命令和返回结果如下:
1 | [root @centos ~]# traceroute -n -T -p 22 223.5 . 5.5 <br>traceroute to 223.5 . 5.5 ( 223.5 . 5.5 ), 30 hops max, 60 byte packets<br> 1 5X.X.X.X 0.431 ms 0.538 ms 0.702 ms<br> 2 1X.X.X.X 0.997 ms 1.030 ms 10.88 . 16.21 1.309 ms<br> 3 5X.X.1X.2X 0.393 ms 0.390 ms 58.96 . 160.250 0.423 ms<br> 4 6X.X.X.X 1.110 ms 202.123 . 74.122 0.440 ms 0.440 ms<br> 5 6X.X.1X.X 1.744 ms 63.218 . 56.237 1.076 ms 1.232 ms<br> 6 63 .2X.1X.1X 1.832 ms 63.223 . 15.90 1.663 ms 63.223 . 15.74 1.616 ms<br> 7 20X. 97 .1X.1X 2.776 ms 63.223 . 15.154 1.585 ms 1.606 ms<br> 8 * * 202.97 . 122.113 2.537 ms<br> 9 202.97 . 61.237 6.856 ms * *<br> 10 * * *<br> 11 * * *<br> 12 * * 119.147 . 220.222 8.738 ms<br> 13 119.147 . 220.230 8.248 ms 8.231 ms *<br> 14 * 42.120 . 242.230 32.305 ms 42.120 . 242.226 29.877 ms<br> 15 42.120 . 242.234 11.950 ms 42.120 . 242.222 23.853 ms 42.120 . 242.218 29.831 ms<br> 16 42.120 . 253.2 11.007 ms 42.120 . 242.234 13.615 ms 42.120 . 253.2 11.956 ms<br> 17 42.120 . 253.14 21.578 ms 42.120 . 253.2 13.236 ms *<br> 18 * * 223.5 . 5.5 12.070 ms !X |
在Windows系统中,您可通过tracetcp进行端口可用性探测。tracetcp同样通过发送TCP数据包进行链路探测,以分析链路是否存在中间节点对目标端口做了阻断。该工具的介绍如下:
下载安装
说明:若您的操作系统中没有自带的tracetcp,可以参考以下步骤安装。
C:\Windows
目录。
说明:您也可以解压到非系统目录,但是需要手工修改系统环境变量,以确保指令可以直接调用。
使用方法
双击打开tracetcp应用程序,tracetcp的常见用法如下:
1 | tracetcp [$IP]:[$Port] |
说明:
- [$IP]指目标服务器的IP地址或者域名。
- [$Port]指需要探测的目标端口。
- 关于更多tracetcp参数说明,您可以通过
tracetcp -?
命令查看帮助。
tracetcp的示例命令和返回结果如下:
1 | C:\ >tracetcp www.aliyun.com: 80 <br>Tracing route to 140.205 . 63.8 on port 80 <br>Over a maximum of 30 hops.<br> 1 3 ms 4 ms 3 ms 3X.X.X.X<br> 2 13 ms 3 ms 4 ms 1X.X.X.X<br> 3 3 ms 3 ms 2 ms 10 .X.X.X<br> 4 4 ms 3 ms 3 ms 4X.X.X.X<br> 5 5 ms 4 ms 7 ms 5X.X.X.X<br> 6 6 ms 5 ms 7 ms 6X.X.X.X<br> 7 8 ms 8 ms 8 ms 42.120 . 247.97 <br> 8 10 ms 10 ms 8 ms 123.56 . 34.246 <br> 9 9 ms 9 ms 11 ms 42.120 . 243.117 <br> 10 * * * Request timed out.<br> 11 Destination Reached in 8 ms. Connection established to 140.205 . 63.8 <br>Trace Complete. |