linux解决ping通但端口不通的问题

能ping 通但端口不通时端口可用性探测说明

端口可用性探测工具介绍

不同的操作系统,端口可用性探测所使用的工具也有所不同。

Linux 环境下端口可用性探测工具介绍

traceroute 是几乎所有 Linux 发行版本预装的网络测试工具,用于跟踪 Internet 协议(IP)数据包传送到目标地址时经过的路径。您可以通过 traceroute 工具进行端口可用性探测。

traceroute 通过发送 TCP 数据包向目标端口进行探测,以检测从数据包源到目标服务器的整个链路上相应端口的连通性情况。

traceroute 端口可用性探测常见用法如下:

traceroute [-n] -T -p <目标端口号> Host

示例

[root@centos~]# traceroute -n -T -p 22 223.5.5.5
traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
 1 58.96.171.249 0.431 ms 0.538 ms 0.702 ms
 2 10.88.16.29 0.997 ms 1.030 ms 10.88.16.21 1.309 ms
 3 58.96.160.246 0.393 ms 0.390 ms 58.96.160.250 0.423 ms
 4 63.218.56.237 1.110 ms 202.123.74.122 0.440 ms 0.440 ms
 5 63.223.15.90 1.744 ms 63.218.56.237 1.076 ms 1.232 ms
 6 63.223.15.158 1.832 ms 63.223.15.90 1.663 ms 63.223.15.74 1.616 ms
 7 202.97.122.113 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 ms
13 119.147.220.230 8.248 ms 8.231 ms *
14 * 42.120.242.230 32.305 ms 42.120.242.226 29.877 ms
15 42.120.242.234 11.950 ms 42.120.242.222 23.853 ms 42.120.242.218 29.831 ms
16 42.120.253.2 11.007 ms 42.120.242.234 13.615 ms 42.120.253.2 11.956 ms
17 42.120.253.14 21.578 ms 42.120.253.2 13.236 ms *
18 * * 223.5.5.5 12.070 ms !X

参数说明

-n 直接使用 IP 地址而非主机名称(禁用 DNS 反查)。

-T 通过 TCP 探测。

-p 探测目标端口号。

Host 目标服务器域名或 IP。

更多关于 traceroute 的用法,您可以通过man帮助查阅。

Windows 环境下端口可用性探测工具介绍

Windows 环境下,您可通过 tracetcp 进行端口可用性探测。

tracetcp 同样通过发送 TCP 数据包进行链路探测,以分析是否有链路中间节点对目标端口做了阻断。

下载安装

tracetcp 的使用依赖于 WinPcap library,因此,您需要前往官网下载。

点击此处前往官网下载最新版 tracetcp。或者,您也可以下载附件 v1.0.2 版 tracetcp(可能并非最新版)。

将下载的 tracetcp 相关文件直接解压到 C:\Windows 目录。(如果解压到非系统目录,则需要手工修改系统环境变量,以确保指令可以直接调用)

使用方法

双击打开 tracetcp 应用程序,tracetcp 的常见用法如下:

tracetcp <目标服务器域名或 IP>:<待探测端口号>

示例

C:\ >tracetcp www.aliyun.com:80
Tracing route to 140.205.63.8 on port 80
Over a maximum of 30 hops.
1    3 ms  4 ms  3 ms  30.9.176.1
2    13 ms  3 ms  4 ms  10.64.200.33
3    3 ms  3 ms  2 ms  10.64.1.1
4    4 ms  3 ms  3 ms  42.120.74.4
5    5 ms  4 ms  7 ms  42.120.253.233
6    6 ms  5 ms  7 ms  42.120.247.97
7    8 ms  8 ms  8 ms  42.120.247.97
8    10 ms  10 ms  8 ms  123.56.34.246
9    9 ms  9 ms  11 ms  42.120.243.117
10   *    *    *    Request timed out.
11   Destination Reached in 8 ms. Connection established to 140.205.63.8
Trace Complete.

关于更多 tracetcp 参数说明,您可以通过 tracetcp -? 获取和查看。

端口可用性探测步骤

通常情况下,您可以:

根据前文所述,使用对应工具对目标地址的目标端口进行可用性探测。

排查分析探测结果,确定异常节点。

通过 ip.taobao.com 等 IP 地址查询网站获取相应节点归属运营商及网络。

或者提交工单,阿里云将为您向相关运营商反馈问题。

链路测试结果分析简述

异常节点判定方法:如果相关端口在某一跳被阻断,则其后各跳均不会返回数据。据此就可以判定出异常节点。

示例1

C:\>tracetcp www.aliyun.com:135
Tracing route to 115.239.210.27 on port 135
Over a maximum of 30 hops.
1    3 ms  3 ms  3 ms  30.9.176.1
2    4 ms  3 ms  3 ms  10.64.200.33
3    3 ms  3 ms  3 ms  10.64.1.1
4    *    *    *    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.
13   *    *    *    Request timed out.
14   *    *    *    Request timed out.
15   *    *    *    Request timed out.
16   *    *    *    Request timed out.
17   *    *    *    Request timed out.
18   *    *    *    Request timed out.
19   *    *    *    Request timed out.
20   *    *    *    Request timed out.
21   *    *    *    Request timed out.
22   *    *    *    Request timed out.
23   *    *    *    Request timed out.
24   *    *    *    Request timed out.
25   *    *    *    Request timed out.
26   *    *    *    Request timed out.
27   *    *    *    Request timed out.
28   *    *    *    Request timed out.
29   *    *    *    Request timed out.
30   *    *    *    Request timed out.
Trace Complete.

上述探测数据中,目标端口在第 3 跳之后就没有数据返回。说明相应端口在该节点被阻断。

示例结论:因为该节点为内网 IP,可能是本地网络相关安全策略所致,您需要联系本地网络管理人员做进一步排查分析。

示例2

[root@mycentos ~]# traceroute -T -p 135 www.baidu.com
traceroute to www.baidu.com (111.13.100.92), 30 hops max, 60 byte packets
 1 * * *
 2 192.168.17.20 (192.168.17.20) 4.115 ms 4.397 ms 4.679 ms
 3 111.1.20.41 (111.1.20.41) 901.921 ms 902.762 ms 902.338 ms
 4 111.1.34.197 (111.1.34.197) 2.187 ms 1.392 ms 2.266 ms
 5 * * *
 6 221.183.19.169 (221.183.19.169) 1.688 ms 1.465 ms 1.475 ms
 7 221.183.11.105 (221.183.11.105) 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 ms
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
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

上述探测数据中,目标端口在第 11 跳之后就没有数据返回。说明相应端口在该节点被阻断。

示例结论:因为该节点经查询归属北京移动,所以您需要自行排查,或者提交工单做进一步排查分析。

(0)

相关推荐

  • 基于Linux中vnc配置端口号的修改方法

    vnc的默认端口是自己配置的,并不是这有一个端口号. 通过打开/etc/sysconfig/vncservers. 这里就配置了2个桌面,一个桌面号是1, 一个是2. 这里的配置的参数 VNCSERVERS="2:root" VNCSERVERARGS[2]="-geometry 1280x800" 就可以看出,这里就配置了2个桌面,一个桌面号是1, 一个是2.还有远程桌面的分辨率 想要修改vncserver的配置,先找配置文件路径 [root@jtsyb01 lo

  • Linux强制释放占用端口以及Linux防火墙端口开放方法详解

    在安装nginx,mysql,tomcat等等服务的时候,我们会遇到需要使用的端口莫名其妙被占用,下面介绍如何解决这类问题. 说到端口,还不得不提到防火墙,本文还会简单介绍如何配置防火墙开发端口. Linux查看端口情况的各种方法 所有端口的映射关系在 /etc/services 文件中有 Linux端口简单介绍,端口编号从0-65536,各编号端的用途如下: 0-1023:公认端口,与常见服务绑定(FTP,SSH) 1024-49151:注册端口,用于和一些服务绑定 49152-65535:动

  • 6种查看Linux进程占用端口号的方法详解

    对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口.由于 Linux 操作系统是一个软件,因此本文只讨论软件端口.软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序.大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字. 套接字是和 IP 地址.软件端

  • linux下mysql开启远程访问权限 防火墙开放3306端口

    开启mysql的远程访问权限 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限. 主流的有两种方法,改表法和授权法. 相对而言,改表法比较容易一点,个人也是比较倾向于使用这种方法,因此,这里只贴出改表法 1.登陆mysql mysql -u root -p 2.修改mysql库的user表,将host项,从localhost改为%.%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将l

  • linux socket通讯获取本地的源端口号的实现方法

    关于TCP IP网络通讯的资料非常多,TCP IP通过IP数据包模式进行端对端通讯.典型的TCP数据包如下 可以看到数据包包含了源端口号和目的端口号,客户端socket向服务端发起连接时,系统会给socket随机分配一个源端口号,我们可以通过getsocketname来获取连接成功的socket的原端口信息. 函数原型 #include <sys/socket.h> int getsockname(int sockfd, struct sockaddr *addr, socklen_t *ad

  • Linux端口映射转发的方法

    前言 当我们在对接第三方的时候,免不了会遇到白名单限制问题,导致我们本地开发环境受限,不能调用接口.难以完成整个业务流程. 分析如下场景: 比如第三方有台机器 IP 为 1.1.1.1  端口8080 正式环境为1.1.1.1:8080/pro/api 测试环境为1.1.1.1:8080/test/api 但是第三方的机器不允许任何IP都可以调用,他们只允许你方一台机器加入白名单 比如你线上的一台机器IP是2.2.2.2已经加入白名单,这没问题. 但是你要做开发 要调用他们测试环境的API,却发

  • Linux查看端口、进程情况及kill进程的方法

    看端口: ps -aux | grep tomcat 发现并没有8080端口的Tomcat进程. 使用命令:netstat –apn 查看所有的进程和端口使用情况.发现下面的进程列表,其中最后一栏是PID/Program name 发现8080端口被PID为9658的Java进程占用. 进一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看 就可以明确知道8080端口是被哪个程序占用了!然后判断是否使用KILL命令干掉! 方法二:直接使用 n

  • 在Linux中查看进程占用的端口号

    对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口.由于 Linux 操作系统是一个软件,因此本文只讨论软件端口.软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序.大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字. 套接字是和 IP 地址.软件端

  • Linux查看端口占用lsof -i:port的方法

    如下所示: # lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 940 root 48u IPv4 14396 0t0 TCP *:webcache (LISTEN) 以上这篇Linux查看端口占用lsof -i:port的方法)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Linux Centos7系统端口占用问题的解决方法

    前言 服务器为Linux-Centos7系统 , 昨天发生了一个非常诡异的情况 , tomcat在已关闭的情况下 , 依然显示其8080端口被占用 , 最后定位到占用端口的进程 , 解决问题 ,下面话不多说了,来一起看看详细的介绍吧. 1.查看占用端口的进程netstat -lnp|grep 8080 [root@izbp109iqt20o2h63tpcuvz java]# netstat -lnp|grep 8080 tcp6 0 0 :::8080 :::* LISTEN 4486/java

  • Linux下如何对端口流量进行统计

    在不修改源代码的情况下对程序暴露端口流量进行监控统计,可以利用Linux中自带的Iptable添加简单的规则让其起到端口流量统计的作用.但是需要注意的是在服务器重启.Iptable服务重启的时候统计数据会被重置清零. 添加需要统计的端口 1.输入监控 下面示例是监控目标端口是8080的输入流量 --dport(destination port 的缩写) iptables -A INPUT -p tcp --dport 8080 2.输出监控 下面示例是监控来源端口是8080的输出流量 --spo

  • 查看linux中某个端口(port)是否被占用的方法

    1.使用lsof lsof -i:端口号查看某个端口是否被占用   2.使用netstat 使用netstat -anp|grep 80 以上这篇查看linux中某个端口(port)是否被占用的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Linux下iptables 禁止端口和开放端口示例

    1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下面是命令实现: iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 再用命令 iptables -L -n 查看 是否设置好, 好看到全部 DROP 了 这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态 还要使用 service iptables save 进行保存 service iptables s

  • Linux中在防火墙中开启80端口方法示例

    linux如果刚安装好防火墙时我们常用的端口是没有增加的,也就是说不能访问,那么要怎么把常用端口增加到防火墙通过状态呢,下面我们以80端口为例子吧. 最近自己在学习Linux.搭建一个LNMP环境.在测试时一切都好.然后重启Linux后.再次访问网站无法打开.最终原因是在防火墙中没有加入 80 端口的规则.具体方法如下: 在CentOS下配置iptables防火墙,是非常必要的.来我们学习如何配置!,其它版本一下: 1.打开iptables的配置文件: 代码如下 vi /etc/sysconfi

  • linux 查看端口占用命令实例详解

     linux 查看端口占用命令实例详解 端口是系统非常重要的一个东东,我们经常需要查看哪个进程占用了哪个端口,或者哪个端口被哪个进程占用.废话不多说,直接上干货,教大家怎样查看系统端口占用情况. 方法一: 1.先用ps -ef | grep xxx(某个进程),可以查看某个进程的pid. 2.再用netstat -anp | grep pid号,可以查看到该进程占用的端口号! 方法二: 直接用lsof命令可以查看端口使用情况! 以上就是对linux 查看端口占用命令的讲解,如有疑问请留言,或者到

  • linux下查看端口是否被占用以及查看所有端口【推荐】

    1.查看服务器端口是否被占用 >lsof  -i:8081 2.查看服务器所有端口 >netstat -ntlp 3.查看服务器是否开放某端口 tcp端口:>netstat -ntpl udp端口:>netstat -nupl 常用参数: -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字. -l 仅列出有在 Listen (监听) 的服務状态 -p 显

  • linux下防火墙开启某个端口号及防火墙常用命令使用(详解)

    1.永久性生效,重启后不会复原 开启:chkconfigiptables on 关闭:chkconfigiptables off 2.即时生效,重启后复原 重启防火墙 方式一:/etc/init.d/iptables restart 方式二:service iptables restart 关闭防火墙: 方式一:/etc/init.d/iptables stop 方式二:service iptables stop 启动防火墙 方式一:/etc/init.d/iptables start 方式二:

  • 详解Linux查看程序端口占用情况

    今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占用. 使用命令: ps -aux | grep tomcat 发现并没有8080端口的Tomcat进程. 使用命令: netstat –apn 查看所有的进程和端口使用情况.发现下面的进程列表,其中最后一栏是PID/Program name 发现8080端口被PID为9658的Java进程占用. 进一步使用命令: ps -aux | grep java 或者直接: ps -aux | grep pid 查看 就可以明确知道808

  • Linux查看某个端口的连接数的方法

    一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80" | wc -l 2)统计httpd协议连接数 ps -ef | grep httpd | wc -l 3)统计已连接上的,状态为"established netstat -anp | grep ESTABLISHED | wc -l 4).查出哪个IP地址连接最多,将其封了 netstat -anp | grep ESTABL

  • Linux查找占用的端口,并杀死进程的方法

    我要使用4040端口,但是被其他的程序占用了 1. 查找占用的程序 netstat -apn | grep 4040 最后一项显示的是pid和对应的名称 2. 杀掉对应的进程,彻底杀死进程 kill -9 26105 以上这篇Linux查找占用的端口,并杀死进程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐