15、Linux:IP及端口检查命令

本机IP:10.129.49.102,连接测试主机:10.129.49.104

一、查询IP

1、查询当前服务器的 IP 信息

ifconfig
---或使用:
ip addr

请注意,ifconfig 命令用于查询时,主要查询 IP 地址,子网掩码和MAC地址等三类信息。当然,ifconfig 命令还可用于临时修改 IP 信息,只不过服务器一旦重启,配置则会失效。

临时配置 IP 地址,格式如下:

ifconfig 网卡名称 IP地址

临时配置IP地址,广播地址,子网掩码等信息,格式如下:

ifconfig 网卡名称 192.168.xx.xx broadcast 192.168.1.255 netmask 255.255.255.0

2、查询出口 IP 地址

curl cip.cc

出口 IP 也称外网 IP(公网 IP),它是路由器连接其他网络端口的 IP,如果自己在内网要发送信息到外部并被识别,需要配置公网 IP 地址。

二、查看端口号

1、lsof 命令

lsof(list open files)是一个列出当前系统打开文件的工具,该命令可进行系统监控、网络信息查看等,但需要 root 用户权限求执行。

用于端口号情况查看的常用命令,有:

# 【按端口查】查询指定端口号情况
lsof -i :端口号
# 【按用户查】查询该用户下的端口情况
lsof -a -u 用户名 -i
# 【按协议类型查】查询IPv4协议有关的端口情况
lsof -i 4
# 【按tcp查】查看所有tcp端口情况
lsof -i tcp
# 【按tcp查】查看tcp端口9001情况
lsof -i tcp:9001
# 【按udp查】查看所有udp端口情况
lsof -i udp
# 【按udp查】查看udp端口121情况
lsof -i udp:121

2、netstat 命令

netstat 命令用于显示网络状态,Linux 服务器默认都装有这个命令。用于端口号情况查看的常用命令,有:

# 查看所有端口情况
netstat -tunplp
# 查看22端口情况
netstat -anp | grep ":22"
netstat -tunplp | grep 22
# 或
netstat -tunplp | grep ":22"
netstat -tunplp | grep 22

三、连通性检测命令

1、ping 命令

ping [选项] IP地址或主机名

检测主机 IP 连通性,示例如下:

[wxx@localhost ~]$ ping 10.129.49.102
PING 10.129.49.102 (10.129.49.102) 56(84) bytes of data.
64 bytes from 10.129.49.102: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from 10.129.49.102: icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from 10.129.49.102: icmp_seq=3 ttl=64 time=0.063 ms

请注意,ping 命令只能检测主机 IP 的连通性,不适用检测端口。

ping 命令可以加些选项参数,以满足不同的检测需求,比如 [-c 数据包接收次数] ;[-s 设置发送包大小];[-i 设置发送周期] 等。

2、telnet 命令

telnet 协议是 TCP/IP 协议家族中的一员,是互联网远程登陆服务的主要方式和标准协议。它为用户提供了在本地计算机上完成远程主机工作的能力,在终端使用者的电脑上使用 telnet 程序,用它连接到服务器。

通过 telnet 命令,可测试IP及端口的连通性,常用到的命令格式,如下:

telnet 域名 port
telnet ip port

如果刚开始使用 telnet 命令,会出现 "-bash: telnet: command not found" 错误提示,原因是没有安装 telnet 软件包。

接着,就去安装它。需要注意的是 telnet 是挂在xinetd下的,需要确认是否安装了xinetd服务,检查和安装步骤如下:

# 检查 telnet 和 xinetd
rpm -qa | grep telnet
rpm -qa | grep xinetd
# 二者都没安装的话,通过yum安装
yum install xinetd telnet telnet-server -y

这里,遇到了以下错误:

Error downloading packages:
  1:telnet-server-0.17-66.el7.x86_64: [Errno 256] No more mirrors to try.
  1:telnet-0.17-66.el7.x86_64: [Errno 256] No more mirrors to try.
  2:xinetd-2.3.15-14.el7.x86_64: [Errno 256] No more mirrors to try.

更换下镜像源即可。后续关于如何配置、激活以及避免防火墙阻止 telnet 服务的,这里不再描述。

测试示例:

telnet 10.129.49.104 9200

Trying 10.129.49.104...
Connected to 10.129.49.104.
Escape character is '^]'.

最后一行是提示语,使用 ctrl + ] 可进入 telnet 交互命令行。

请注意,telnet 命令用于登录和管理远程主机,适用于局域网网络设备的远程连接,但它采用的是明文传送报文,缺乏安全性。因此,实际中很多 Linux 服务器都不开放 telnet 服务,而改用更安全的 ssh 方式。

3、ssh 命令

相对于 telnet 服务,ssh 是加密连接的,更适用于服务器远程连接和管理。

用来测试 IP 及端口的连通性,命令格式如下:

ssh [选项] 端口号 用户名@ip地址
# 或者
ssh [选项] 端口号 ip地址

可选项中,常用的参数有-v,-p,其中,-v表示调试打印日志,-p表示指定端口号。

使用 ssh 测试下目标主机的连通性,如下:

ssh -v -p 9200 10.129.49.104

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to 10.129.49.104 [10.129.49.104] port 9200.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/wxx/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: ssh_exchange_identification: HTTP/1.0 400 Bad Request


debug1: ssh_exchange_identification: content-type: application/json; charset=UTF-8


debug1: ssh_exchange_identification: content-length: 203


debug1: ssh_exchange_identification: 


ssh_exchange_identification: Connection closed by remote host

可看到,目标主机没有设置和开发 ssh 服务,连接被关闭,暂不可连接。

4、curl 命令

前面查询出口 IP 使用的就是 curl 命令。它是一个利用 URL 规则在命令行下工作的文件传输工具,支持包括 HTTP、HTTPS、FTP 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。

用来测试 IP 及端口的连通性,命令格式如下:

curl ip:port

如果测试的端口号不存在,显示信息如下:

curl 10.129.49.104:9002

curl: (56) Recv failure: Connection reset by peer

如果测试的 IP 和端口号都正常,显示信息如下:

curl 10.129.49.104:9200
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "iHXx-eIsTTinhm5sY-S9_A",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "757314695644ea9a1dc3tecd26d1a43856725e65",
    "build_date" : "2020-06-14T15:35:50.234039Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

5、wget 命令

wget 是一个 GPL 许可证下的自由软件,支持 HTTP、FTP 等下载方式,支持代理服务器,支持断点续传等功能。wget 功能强大,非常好用,常用来下载文件,但也可以用来测试主机的连通。

测试主机连通性,命令格式如下:

wget ip:port

如果测试的IP或端口号不存在,会一直重试,显示如下:

wget 10.129.49.194:9002
--2023-02-27 16:05:38--  http://10.129.49.194:9002/
Connecting to 10.129.49.194:9002... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

--2023-02-27 16:05:39--  (try: 2)  http://10.129.49.194:9002/
Connecting to 10.129.49.194:9002... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

如果测试的 IP 和端口号都正常,显示信息如下:

wget 10.129.49.104:9200
--2023-02-27 16:09:27--  http://10.129.49.104:9200/
Connecting to 10.129.49.104:9200... connected.
HTTP request sent, awaiting response... 200 OK
Length: 531 [application/json]
Saving to: ‘index.html’

100%[=========================================================================>] 531         --.-K/s   in 0s      

2023-02-27 16:09:27 (74.7 MB/s) - ‘index.html’ saved [531/531]

以上检测IP及端口的连通性命令非常实用,特此总结和记录一下。