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

概述

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 ~]# 

在这里插入图片描述

结束

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

相关推荐

  1. LinuxLinux必备:groupdel命令使用方法

    2024-04-10 03:40:02       60 阅读
  2. 记录一些简单linux命令

    2024-04-10 03:40:02       24 阅读
  3. [Linux安全] Linux命令相关

    2024-04-10 03:40:02       29 阅读
  4. linux定时任务crontab命令

    2024-04-10 03:40:02       39 阅读
  5. :CentOS常见命令详解

    2024-04-10 03:40:02       30 阅读
  6. Linuxvim常用命令

    2024-04-10 03:40:02       54 阅读
  7. linux常用查看日志命令

    2024-04-10 03:40:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 03:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 03:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 03:40:02       82 阅读
  4. Python语言-面向对象

    2024-04-10 03:40:02       91 阅读

热门阅读

  1. Linux从入门到精通 --- 1.初始Linux

    2024-04-10 03:40:02       40 阅读
  2. 线程常见问题

    2024-04-10 03:40:02       38 阅读
  3. c++day6

    c++day6

    2024-04-10 03:40:02      33 阅读
  4. 【接口测试】接口测试面试基础常识

    2024-04-10 03:40:02       39 阅读
  5. 京东采集器使用教程 京东商家爬虫软件分享

    2024-04-10 03:40:02       38 阅读
  6. 数字排列的方法

    2024-04-10 03:40:02       37 阅读
  7. 题目:取一个整数a从右端开始的4~7位。

    2024-04-10 03:40:02       33 阅读
  8. 前端将列表数据转换为树形数据的函数

    2024-04-10 03:40:02       39 阅读
  9. CSS世界Ⅱ(文本)

    2024-04-10 03:40:02       40 阅读
  10. js sort() 方法

    2024-04-10 03:40:02       36 阅读