能够ping通服务器的同时端口不通的排查方法
概述
当您在客户端访问目标服务器时,如果能ping通,但业务端口无法访问,您可以参见以下方法进行排查。
步骤一:实例安全组检查
1、登录ECS管理控制台,单击实例。
2、在顶部菜单栏左上角处,选择地域。
3、在实例列表页面,单击对应的实例ID。
4、在实例详情页面,单击安全组,在安全组列表区域,单击对应的安全组ID。
5、在安全组规则页面,单击入方向,查看访问规则,查看是否有端口相关的授权。
如果没有相应端口的授权,请添加相应端口的授权,详情请参见添加安全组规则。如果有相应端口的授权,请检查授权对象是否允许本地IP地址的访问。
步骤二:端口相关服务检查
通过VNC远程连接登录目标服务器之后,执行以下命令,检查端口是否被监听。
说明:
Linux系统如何通过VNC远程连接到Linux实例,请参见通过VNC远程连接登录Linux实例。Windows系统如何通过VNC远程连接到Windows实例,请参见通过VNC远程连接Windows实例
netstat -ntpl|grep [$Port]
说明:[$Port]为相应的端口号。
系统显示类似如下。
说明:
· 0.0.0.0代表本机上可用的任意地址。比如,0.0.0.0:135表示本机上所有地址的135端口。· tcp 0.0.0.0:80表示在所有的可用接口上监听TCP的80端口
· 如果返回结果为空,说明端口对应的服务未启动,请将相应的服务启动即可。
· 如果有返回结果,说明服务为启动状态。在确认服务可以重启的情况下,重启相应的服务,待服务重启完成后,再测试端口的连通性。
步骤三:检查目标服务器的防火墙配置
Linux系统
通过VNC远程连接登录目标服务器之后,执行以下命令,检查防火墙配置。
iptables -nL
如果返回结果中存在相应端口的配置规则,可删除相应的规则或者先关闭防火墙,然后再测试端口连通性。关闭防火墙的具体操作如下:
1、执行以下命令,查看防火墙状态。
systemctl status firewalld.service
2、执行以下命令,关闭防火墙。
systemctl stop firewalld.service
3、执行以下命令,设置开机不自启防火墙服务。
systemctl disable firewalld.service
Windows系统
先关闭防火墙,然后再测试端口连通性,具体操作如下:
通过VNC远程连接登录目标服务器,在控制面板中打开Windows防火墙。在Windows防火墙窗口,单击启动或关闭防火墙,进入自定义设置界面。将专用网络设置和公用网络设置设置为关闭 Windows 防火墙,单击确定。
步骤四:通过探测工具进行检查
端口无法访问可能是链路中的相关节点拦截了端口所致,请利用端口可用性探测的相关工具进行测试,验证是否有节点拦截了端口。
端口可用性探测步骤
通常情况下,您可以参见以下步骤进行探测:
根据上文所述,使用对应工具对目标服务器和端口进行可用性探测。排查分析探测结果,确认问题根源。如果相关端口在某一跳被阻断,且其后各跳均不会返回数据。据此就可以判定出异常节点。如果确实存在异常节点,您可以参见以下两种方式进行解决。
· 通过淘宝IP地址库等IP地址查询网站获取相应节点的归属运营商及网络。· 或者您也可以提交工单,请驰网技术支持协助您向相关运营商反馈问题。
说明:提交工单时,请一并提交端口可用性的探测结果。
探测结果的案例分析
此处介绍两个探测结果的案例,案例中包括探测结果和分析。
案例一
探测结果如下,目标端口在第3跳之后就没有数据返回。
C:\>tracetcp www.idc02.com:135Tracing route to 115.X.X.27 on port 135Over a maximum of 30 hops.1 3 ms 3 ms 3 ms 1X.X.X.X2 4 ms 3 ms 3 ms 2X.X.X.X3 3 ms 3 ms 3 ms 3X.X.X.X4 * * * Request timed out.5 * * * Request timed out.6 * * * Request timed out.7 * * * Request timed out.8 * * * Request timed out.9 * * * Request timed out.10 * * * Request timed out.11 * * * Request timed out.12 * * * Request timed out.Trace Complete.
案例分析
因为该节点为内网IP,可能是本地网络相关安全策略所致,需要联系本地网络管理人员做进一步排查分析。
案例二
探测结果如下,目标端口在第11跳之后就没有数据返回。
[root@mycentos ~]# traceroute -T -p 135 www.baidu.comtraceroute to www.baidu.com (111.13.100.92), 30 hops max, 60 byte packets 1 * * * 2 1X.X.X.X (1X.X.X.X) 4.115 ms 4.397 ms 4.679 ms 3 2X.X.X.X (2X.X.X.X) 901.921 ms 902.762 ms 902.338 ms 4 3X.X.X.X (3X.X.X.X) 2.187 ms 1.392 ms 2.266 ms 5 * * * 6 5X.X.X.X (5X.X.X.X) 1.688 ms 1.465 ms 1.475 ms 7 6X.X.X.X (6X.X.X.X) 27.729 ms 27.708 ms 27.636 ms 8 * * * 9 * * *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 ms11 111.13.108.22 (111.13.108.22) 29.169 ms 28.893 ms 111.13.108.33 (111.13.108.33) 30.986 ms12 * * *13 * * *14 * * *15 * * *16 * * *17 * * *18 * * *19 * * *20 * * *
案例分析
因为该节点经查询后归属北京移动,需要您自行向运营商反馈,或者提交工单做进一步排查分析。
更多信息
不同的操作系统,端口可用性探测所使用的工具有所不同。此处分别介绍如下系统中的端口可用性探测工具。
Linux系统
traceroute是几乎所有Linux发行版本预装的网络测试工具,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。traceroute通过发送TCP数据包向目标端口进行探测,以检测从数据包源到目标服务器的整个链路上相应端口的连通性情况。该工具的介绍如下:
使用方法
traceroute是用于端口可用性探测的常用命令,命令格式如下:
traceroute [-n] -T -p [$Port] [$Host]
说明:
· -n:直接使用IP地址而非主机名称(禁用DNS反查)。· -T:通过TCP探测。· -p:设置探测的端口号。· [$Port]:需要探测的端口号,比如80。· [$Host]:需要探测的目标服务器地址,比如10.10.1.1。更多关于traceroute的用法,您可以通过man命令查阅。
测试示例
traceroute的示例命令和返回结果如下:
[root@centos~]# traceroute -n -T -p 22 223.5.5.5traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets 1 5X.X.X.X 0.431 ms 0.538 ms 0.702 ms 2 1X.X.X.X 0.997 ms 1.030 ms 10.88.16.21 1.309 ms 3 5X.X.1X.2X 0.393 ms 0.390 ms 58.96.160.250 0.423 ms 4 6X.X.X.X 1.110 ms 202.123.74.122 0.440 ms 0.440 ms 5 6X.X.1X.X 1.744 ms 63.218.56.237 1.076 ms 1.232 ms 6 63.2X.1X.1X 1.832 ms 63.223.15.90 1.663 ms 63.223.15.74 1.616 ms 7 20X.97.1X.1X 2.776 ms 63.223.15.154 1.585 ms 1.606 ms 8 * * 202.97.122.113 2.537 ms 9 202.97.61.237 6.856 ms * *10 * * *11 * * *12 * * 119.147.220.222 8.738 ms13 119.147.220.230 8.248 ms 8.231 ms *14 * 42.120.242.230 32.305 ms 42.120.242.226 29.877 ms15 42.120.242.234 11.950 ms 42.120.242.222 23.853 ms 42.120.242.218 29.831 ms16 42.120.253.2 11.007 ms 42.120.242.234 13.615 ms 42.120.253.2 11.956 ms17 42.120.253.14 21.578 ms 42.120.253.2 13.236 ms *18 * * 223.5.5.5 12.070 ms !X
Windows系统
在Windows系统中,您可通过tracetcp进行端口可用性探测。tracetcp同样通过发送TCP数据包进行链路探测,以分析链路是否存在中间节点对目标端口做了阻断。该工具的介绍如下:
下载安装
说明:若您的操作系统中没有自带的tracetcp,可以参考以下步骤安装。
tracetcp的使用依赖于WinPcap library。因此,您需要前往官网下载WinPcap library。前往tracetcp官网下载最新版tracetcp。将下载的tracetcp相关文件直接解压到C:\Windows目录。
说明:您也可以解压到非系统目录,但是需要手工修改系统环境变量,以确保指令可以直接调用。
使用方法
双击打开tracetcp应用程序,tracetcp的常见用法如下:
tracetcp [$IP]:[$Port]
说明:
[$IP]指目标服务器的IP地址或者域名。[$Port]指需要探测的目标端口。关于更多tracetcp参数说明,您可以通过tracetcp -?命令查看帮助。
测试示例
tracetcp的示例命令和返回结果如下:
C:\ >tracetcp www.idc02.com:80Tracing route to 140.205.63.8 on port 80Over a maximum of 30 hops.1 3 ms 4 ms 3 ms 3X.X.X.X2 13 ms 3 ms 4 ms 1X.X.X.X3 3 ms 3 ms 2 ms 10.X.X.X4 4 ms 3 ms 3 ms 4X.X.X.X5 5 ms 4 ms 7 ms 5X.X.X.X6 6 ms 5 ms 7 ms 6X.X.X.X7 8 ms 8 ms 8 ms 42.120.247.978 10 ms 10 ms 8 ms 123.56.34.2469 9 ms 9 ms 11 ms 42.120.243.11710 * * * Request timed out.11 Destination Reached in 8 ms. Connection established to 140.205.63.8Trace Complete.