• linux 测试网络连通性方法


    一、telnet 方法

    telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式。
    它为用户提供了在本地计算机上完成远程主机工作的能力。因此我们可以使用telnet 来测试远程机器的连通性。

    telnet 软件包安装

    1、检测 telnet 包是否安装

    rpm -qa | grep telnet
    
    • 1

    2、未安装,则安装 telnet 软件包

    yum install telnet -y
    
    • 1

    3、检测安装包是否安装成功

    rpm -qa|grep telnet
    telnet-0.17-64.el7.x86_64
    
    • 1
    • 2

    以上我们完成了 telnet 客户端软件的安装。

    命令格式

    telnet serverIP port
    
    • 1

    例如:连接一个存在的端口,连接成功

    telnet 192.168.1.110 8081
    
    Trying 192.168.1.110…
    Connected to 192.168.1.110.
    Escape character is ‘^]’.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    连接一个不存在的端口,连接被拒绝

    telnet 192.168.1.110 8088
    Trying 192.168.1.110…
    telnet: connect to address 192.168.1.110: Connection refused
    
    • 1
    • 2
    • 3

    二、wget 方法

    wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP 协议下载,并可以使用 HTTP 代理。
    wget 名称的由来是 “World Wide Web” 与 “get” 的结合,它也可以用来测试端口的连通性。

    具体用法格式如下 :

    wget ip:port
    
    • 1

    例如:连接一个存在的端口

    wget 192.168.1.100:8081
    –2022-11-15-- http://192.168.1.100:8081/
    Connecting to 192.168.1.100:8081… connected.
    …
    
    • 1
    • 2
    • 3
    • 4

    连接一个不存在的端口

    wget 192.168.1.110:8088
    –2021-11-25-- http://192.168.1.110:8088/
    Connecting to 192.168.1.110:8088… failed: Connection refused.
    
    • 1
    • 2
    • 3

    三、curl 方法

    curl 是利用 URL 语法在命令行方式下工作的开源文件传输工具。也可以用来测试端口的连通性。 适合验证第三方提供的地址是否可以连通

    具体用法格式如下 :

    curl ip:port
    
    • 1

    例如:连接一个存在的端口,输出正常信息

    curl 192.168.1.110:8080
    ...
    
    • 1
    • 2

    连接一个不存在的端口,拒绝连接

    curl 192.168.1.110:8088
    curl: (7) Failed connect to 192.168.1.110:8088; Connection refused
    
    • 1
    • 2

    其它使用方式(请求第三方地址是否连通)

    格式 curl -vL 地址
    例如:curl -vL http://www.baidu.com
    
    • 1
    • 2

    通过代理访问

    格式:cutl -x 代理地址+端口 -v 请求地址
    
    • 1

    不通过代理访问

    curl -x "" 请求地址
    或者
    curl --noproxy '*' 请求地址
    
    • 1
    • 2
    • 3

    发送post请求方式

    curl -X POST -d 'a=1&b=nihao' URL
    
    • 1

    发送curl from表单格式请求

    curl -d "key=value&key=value" "URL"
    
    • 1

    发送json报文格式请求

    curl -H "Content-Type:application/json" -X POST -d 'json报文' 'URL'
    
    • 1

    发送XML报文格式请求方式

    echo ' xml报文'|curl -X POST -H 'Content-type:text/xml' -d @- URL
    
    • 1

    三、ssh方法

    ssh 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在 linux上可以通过 ssh 命令来测试端口的连通性。

    具体用法格式如下:

    ssh -v -p port username@ip
    或者
    ssh -v -p port ip
    
    • 1
    • 2
    • 3

    说明:

    -v 调试模式(会打印日志).
    -p 指定端口
    username:远程主机的登录用户
    ip:远程主机

    例如:连接一个存在的端口

    ssh -v -p 8081 192.168.1.110
    OpenSSH_7.4pl, OpenSSL 1.0.2k-fips 26 Jan 2022
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 58: Applying options for *
    debug1: Connecting to 192.168.1.110 [192.168.1.110] port 8081.
    debug1: Connection established. //出现该行表示连接成功
    …
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    连接一个不存在的端口

    ssh -v -p 8081 192.168.1.110
    ssh: connect to host 192.168.1.110 port 8081: Connection refused
    
    • 1
    • 2

    四、tcping 工具方法

    tcping 是一个可以替代 ping 命令来检测网络状态的一个工具。因为 ping 命令只能检测ICMP报文,当对方禁止了 ping协议,自然 ping 命令也就无法检测了,这个时候可以通过 tcping 命令来检测网络的连通性。 tcping 有 windows 版和 linux 版本,可以根据自己的需求自行下载使用。

    windows 版本下载地址
    https://www.elifulkerson.com/projects/tcping.php

    使用例子如下:

    D:\ceshi> tcping.exe 192.168.1.110 8081
    Probing 192.168.1.110:8081/tcp - Port is open -time=4.706ms
    Probing 192.168.1.110:8081/tcp - Port is open -time=0.946ms
    Probing 192.168.1.110:8081/tcp - Port is open -time=0.806ms
    Probing 192.168.1.110:8081/tcp - Port is open -time=1.706ms
    Ping statistics for 192.168.1.110:8081
    4 probes sent.
    4 successful, 0 failed. <0.00% fail>
    Approximate trip times in milli-seconds:
    Minimum = 0.806ms, Maximum = 4.706ms, Average = 1.885ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    linux 版下载地址
    地址http://linuxco.de/tcping/tcping-1.3.5.tar.gz

    使用例子如下:

    gcc -o tcping tcping.c
    cp tcping /usr/bin
    tcping www.baidu.com 80
    www.baidu.com port 80 open.
     
    tcping 10.25.12.153 2335
    10.25.12.153 port 2335 open
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    五、tcpdump 方法

    当需要测试报文是否发送到对端,也可以使用 tcpdump 命令进行抓包分析。
    通常使用的方式是通过 tcpdump 命令抓取数据包,然后通过
    wireshake 工具进行分析。

    使用方式如下:
    监视指定网络接口、某个具体端口号接收的tcp报文的数据包

    tcpdump -i eth0 -n tcp port 8081
    
    • 1

    也可以指定ip, 例如获取所有192.168.1.110 的主机收到的和发出的所有数据包

    tcpdump host 192.168.1.110
    
    • 1

    也可以把抓取的数据包保存到cap格式的文件中,通过使用wireshark进行分析

    tcpdump tcp -i eth0 -w /ceshi.cap
    
    • 1

    六、netstat查看网络链接状况命令

    命令格式如下:netstat [选项]

    netstat 参数如下:

    -a 显示所有socket,包括正在监听的。
    -c 每隔1秒就重新显示一遍,直到用户中断它。
    -i 显示所有网络接口的信息,格式同“ifconfig -e”。
    -n 以网络IP地址代替名称,显示出网络连接情形。
    -r 显示核心路由表,格式同“route -e”。
    -t 显示TCP协议的连接情况。
    -u 显示UDP协议的连接情况。
    -v 显示正在进行的工作。

    命令说明
    netstat -anp显示系统端口使用情况
    netstat -nuplUDP类型的端口
    netstat -ntplTCP类型的端口
    netstat -l只显示所有监听端口
    netstat -lt只显示所有监听tcp端口

    例如:查看本机开启的端口。

    这是本机最常用的方式,使用选项"-tuln"。因为使用了"-I"选项,所以只能看到监听状态的连接,而不能看到已经连接状态的连接。

    netstat -tuln
    
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp  0  0 0.0.0.0:3306  0.0.0.0:* LISTEN
    tcp  0  0 0.0.0.0:11211 0.0.0.0:* LISTEN
    tcp  0  0 0.0.0.0:22 0.0.0.0:* LISTEN
    tcp  0  0:::11211 :::* LISTEN
    tcp  0  0 :::80 :::* LISTEN
    tcp  0   0 :::22 :::* LISTEN
    udp  0   0 0.0.0.0:11211 0.0.0.0:*
    udp  0   0:::11211 :::*
    #协议接收队列发送队列本机的 IP 地址及端口号 远程主机的 IP 地址及端口号 状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这个命令的输出较多。 1) Proto:网络连接的协议,一般就是 TCP 协议或者 UDP 协议。 2)
    Recv-Q:表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。 3)
    Send-Q:表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,不具备 ACK 标志的数据包。 4) Local
    Address:本机的 IP 地址和端口号。 5) ForeignAddress:远程主机的 IP 地址和端口号。 6)
    State:状态。常见的状态主要有以下几种。
    -LISTEN:监听状态,只有 TCP 协议需要监听,而 UDP 协议不需要监听。
    -ESTABLISHED:已经建立连接的状态。如果使用"-I"选项,则看不到已经建立连接的状态。
    -SYN_SENT:SYN 发起包,就是主动发起连接的数据包。
    -SYN_RECV:接收到主动连接的数据包。
    -FIN_WAIT1:正在中断的连接。
    -FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认。
    -TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束。
    -CLOSED:套接字没有被使用。

    在这些状态中,我们最常用的就是 LISTEN 和 ESTABLISHED 状态,一种代表正在监听,另一种代表已经连接。

    查看本机有哪些程序开启的端口。

    如果使用"-p"选项,则可以查看到是哪个程序占用了端口,并且可以知道这个程序的 PID。

    例如:

    netstat -tulnp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address  Foreign Address State PID/Program name
    tcp  0  0 0.0.0.0:3306  0.0.0.0:* LISTEN 2359/mysqld
    tcp  0  0 0.0.0.0:11211  0.0.0.0:* LISTEN 1563/memcached
    tcp  0  0 0.0.0.0:22  0.0.0.0:* LISTEN 1490/sshd
    tcp  0  0 :::11211 :::* LISTEN 1563/memcached
    tcp  0  0 :::80 :::* LISTEN 21025/httpd
    tcp  0  0 :::22 :::*
    LISTEN 1490/sshd
    udp  0  0 0.0.0.0:11211  0.0.0.0:* 1563/memcached
    udp  0  0:::11211 :::* 1563/memcached
    #比之前的命令多了一个"-p"选项,结果多了可以知道是哪个程序占用了端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    参考连接:https://blog.csdn.net/whatday/article/details/127185718

  • 相关阅读:
    汽车SOA-AUTOSAR-IOS架构分析
    学习笔记-Secure-Linux
    LeetCode 438. 找到字符串中所有字母异位词
    java国密加密SM2
    golang——接口
    EDP .Net开发框架--业务模型
    42.【Java 基础之数组】
    jQWidgets 15.0 for JavaScript Crack
    docker容器必须要有前台进程
    【云原生--Kubernetes】Helm 工具安装
  • 原文地址:https://blog.csdn.net/weixin_45894220/article/details/127865437