12.Linux运维中常用的网络命令

本文详细介绍了Linux运维中的四个重要网络命令:ping用于检测连通性,netstat监控套接字和端口状态,nc提供网络通信功能,tcpdump则用于网络抓包。展示了这些命令的基本用法和选项,帮助读者理解和掌握Linux网络管理工具。
摘要由CSDN通过智能技术生成

概述

Linux运维中常用的网络命令

命令

ping

ping命令最简单也最常用,Windows和Linux上都有该命令可用,功能基本一致,只不过默认的一些配置不同。ping命令主要用于探测某个地址的连通性,同时支持IPv4和IPv6的地址探测。
在windows下使用ping命令,默认发送4次发包后停止,但是在Linux上使用ping命令时,必须加上 -c 选项指定发包个数后终止进程。
以下是ping命令的一些常用选项:

  • -4 : 探测IPv4的地址,默认值
  • -6 : 探测IPv6的地址
  • -c : 发送指定数目的icmp包后停止
  • -i interval : 指定每个包发送的间隔时间
  • -W timeout : 指定等待响应的时间,单位为s

以下是关于ping命令的一些使用实例

[root@ks2p-hadoop01 ~]# time ping ks2p-hadoop04 -c4
PING ks2p-hadoop04 (10.57.12.20) 56(84) bytes of data.
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=1 ttl=64 time=0.112 ms
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=2 ttl=64 time=0.113 ms
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=3 ttl=64 time=0.147 ms
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=4 ttl=64 time=0.110 ms

--- ks2p-hadoop04 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.110/0.120/0.147/0.018 ms

real    0m3.008s
user    0m0.004s
sys     0m0.002s
[root@ks2p-hadoop01 ~]# 
# 可以看到,ping命令默认发包间隔时间为1秒,当通过 `-i` 选择指定发包间隔后,对于4个包的总时间
# 就为(4-1)*3=9s,加上一些其它的耗时,正好9s多
[root@ks2p-hadoop01 ~]# time ping ks2p-hadoop04 -c4 -i 3
PING ks2p-hadoop04 (10.57.12.20) 56(84) bytes of data.
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=1 ttl=64 time=0.110 ms
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=2 ttl=64 time=0.187 ms
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=3 ttl=64 time=0.120 ms
64 bytes from ks2p-hadoop04 (10.57.12.20): icmp_seq=4 ttl=64 time=0.121 ms

--- ks2p-hadoop04 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.110/0.134/0.187/0.032 ms

real    0m9.004s
user    0m0.000s
sys     0m0.005s
[root@ks2p-hadoop01 ~]# 

netstat

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般会用该命令查看系统是否正在监听某些端口,据此判断对应服务是否正常运行。
以下是该命令的一些常用选项:

  • -a : 显示所有监听和非监听的套接字
  • -l : 只显示监听套接字
  • -p : 显示对应套接字所属进程的PID和名称
  • -n : 显示数字形式的地址
  • -e : 显示一些额外信息
  • -t|--tcp : 显示tcp连接的套接字信息
  • -u|--udp : 显示udp连接的套接字信息

通常netstat命令会与grep命令配合使用,找出某个监听的端口,示例如下:

[root@ks2p-hadoop01 ~]# netstat -alntp | grep redis
tcp        0      0 10.57.12.18:26379       0.0.0.0:*               LISTEN      61840/redis-server  
tcp        0      0 10.57.12.18:16379       0.0.0.0:*               LISTEN      61840/redis-server  
tcp        0      0 10.57.12.18:26379       10.57.12.22:7422        ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:9952        10.57.12.21:26379       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:16191       10.57.12.20:26379       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:7680        10.57.12.19:26379       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:26379       10.57.12.20:26529       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:26379       10.57.12.23:31119       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:26379       10.57.12.21:31010       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:26379       10.57.12.19:18758       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:17910       10.57.12.23:26379       ESTABLISHED 61840/redis-server  
tcp        0      0 10.57.12.18:15097       10.57.12.22:26379       ESTABLISHED 61840/redis-server  
[root@ks2p-hadoop01 ~]# 
[root@ks2p-hadoop01 ~]# netstat -alntp | grep 222
tcp        0      0 10.57.12.18:8031        10.57.12.20:57222       ESTABLISHED 58749/java          
tcp6       0      0 10.57.12.18:10050       10.58.1.15:51222        TIME_WAIT   -   

nc

nc工具号称网络界的 瑞士军刀 。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
它的基本功能如下:

  • 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  • 端口的扫描,nc可以作为client发起TCP或UDP连接
  • 机器之间传输文件
  • 机器之间网络测速

它的常用选项如下:

  • -l,--listen : 监听某个端口并等待连接,而不是连接远端节点
  • -v : 显示详情
  • -u : 指定使用udp协议
  • -t : 指定使用tcp协议,默认值
  • -w : 连接超时时间
  • -z : 在作为客户端连接时,不发送任何数据

扫描端口示例:

[root@ks2p-hadoop01 ~]# nc -v -z -w2 ks2p-hadoop04 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.57.12.20:22.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
[root@ks2p-hadoop01 ~]# nc -v -z -w2 ks2p-hadoop04 21
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection refused.
[root@ks2p-hadoop01 ~]# 

作为服务实例:

# nc -l 5000 会卡住
[root@ks2p-hadoop01 ~]# nc -l 5000


接着打开另一个终端,使用netstat命令查看5000的连接情况:

[root@ks2p-hadoop01 ~]# netstat -anltp | grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      75469/nc                 
tcp6       0      0 :::5000                 :::*                    LISTEN      75469/nc   

如果想启动一个监听udp连接的服务,使用 -u 选项即可:

nc -l -u 5000
# 打开另一个终端,使用netstat命令查看,同上
netstat -anltp | grep 5000

在新的终端可以使用nc工具作为客户连接,这样还可以传文字到nc启动的服务上:

# 客户端一次输入hello和world字符串
[root@ks2p-hadoop01 ~]# nc 10.57.12.18 5000 -v
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.57.12.18:5000.
hello
world

# 服务端收到了hello和world字符串并打印在控制台
[root@ks2p-hadoop01 ~]# nc -l 5000
hello
world

使用nc完成文件的传输:
后续补充

lsof

一般运维上会使用 lsof 命令获取监听某个端口的进程,用法如下:

[root@ks2p-hadoop01 ~]# lsof -i :22
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd     23797 root    3u  IPv4   100580      0t0  TCP *:ssh (LISTEN)
sshd     23797 root    4u  IPv6   100582      0t0  TCP *:ssh (LISTEN)
sshd    200115 root    3u  IPv4 14151447      0t0  TCP ks2p-hadoop01:ssh->172.24.4.90:61300 (ESTABLISHED)
ssh     200181 root    3u  IPv4 14146690      0t0  TCP ks2p-hadoop01:45050->10.32.44.20:ssh (ESTABLISHED)
sshd    200324 root    3u  IPv4 14153933      0t0  TCP ks2p-hadoop01:ssh->10.35.232.134:50132 (ESTABLISHED)

上述命令检查占用22端口的进程信息,可以清楚地看到ssh 服务占用了系统的22端口。
lsof命令主要是显示打开的文件情况,正如官方文档所述:

lsof -list open files

常用选项有:

  • -i : 列出符合条件的进程
  • -c : 列出指定进程所打开的文件
  • -g : 列出PGID号
  • -p : 列出指定进程号所打开的文件

示例如下:

[root@ks2p-hadoop01 ~]# lsof -c grafana-server
[root@ks2p-hadoop01 ~]# 
[root@ks2p-hadoop01 ~]# lsof -g -c grafana-server
[root@ks2p-hadoop01 ~]# 

tcpdump

此工具非常强大,也非常有用,一般做网络排查时会用到,它就是tcpdump 命令,用来进行网络抓包。
以下是该命令最常用的选项:

  • -e : 输出的每行中都将包括数据链路层头部信息
  • -c : 指定收包数
  • -i interface : 指定工具监听的网卡,后面直接跟网卡名
  • -n : 对地址以数字方式显式,否则显式为主机名
  • -nn : 除了-n选项的作用外,还会将协议、端口等显示为数值
  • -v|-vv|-vvv : 显示更多详情
  • -w : 将抓包数据输出到文件中而不是标准输出

以下是关于 tcpdump 命令的一些示例:

# 截获所有从ks2p-hadoop01发向ks2p-hadoop04节点且经过网卡ens33的包
[root@ks2p-hadoop01 ~]# tcpdump -i ens33 src host ks2p-hadoop01 and dst ks2p-hadoop04
tcpdump: ens33: No such device exists
(SIOCGIFHWADDR: No such device)
[root@ks2p-hadoop01 ~]# 
[root@ks2p-hadoop01 ~]# tcpdump -i em1 src host ks2p-hadoop01 and dst ks2p-hadoop04
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em1, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
[root@ks2p-hadoop01 ~]# 

在这里插入图片描述

结束

后续会如有遗漏,会再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流月up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值