初学者必备的 17 个最佳 Linux 网络和故障排除命令

网络配置、诊断和一般 Linux 故障排除是系统管理的重要组成部分。即使对于使用 Linux 系统的开发人员来说,了解 Linux 网络命令也是一个额外的优势。

这篇文章将介绍 Linux 系统中本机可用的重要 linux 网络和故障排除命令

最好的 Linux 网络和故障排除命令

以下是可用的故障排除命令列表。

命令 描述
hostname 检查并设置服务器的主机名。
host 获取主机 DNS 详细信息
ping 检查是否可以使用 ICMP 协议访问远程服务器。它还显示数据包的往返时间。
curl 用于传输数据的跨平台实用程序。它可用于解决多个网络问题。
wget 用于下载文件的实用程序。可用于对代理连接和连接进行故障排除。
ip ifconfig 的替代品。可用于配置和检索有关系统网络接口的信息
arp 用于查看和管理 arp 缓存的实用程序。
ss/netstat 主要用于检查端口和 Unix 套接字上的连接和 PID。
traceroute 此实用程序使用 ICMP 协议,并查找读取目标服务器所涉及的跃点。它还显示跃点之间所需的时间。
mtr MTR 是 和 ping traceroute 的混合体。它还提供其他信息,例如中间主机和响应能力。
dig 帮助您获取与域名关联的 DNS 记录。
nslookup 类似于 dig 的命令。
nc 实用程序来调试 TCP/UDP 套接字。
telnet 它可用于测试端口上的远程连接
route 帮助您获取所有路由表信息
tcpdump 此实用程序可帮助您捕获网络数据包并分析它们是否存在网络问题。
lsof 列出所有打开的文件以及打开它的进程信息

让我们了解每个命令,看看如何使用它对 Linux 进行故障排除。

重要提示:这篇文章中提到的每个命令/实用程序都有许多选项和标志。每个命令都有一个手册页,您可以使用它来标识用例所需的标志和选项。例如,对于命令,您只需在终端中键入它即可获取有关该命令的所有详细信息。ip man ip

1. hostname

Hostname 命令用于查看计算机的主机名并设置主机名。

hostname

可以使用 hostname 命令为计算机设置新的主机名。例如

sudo hostname temp.com

如果使用上面命令设置主机名,则重新启动计算机时,主机名将重新更改为主机名文件中指定的名称(例如:/etc/hostname)

因此,如果要永久更改主机名,可以使用服务器上存在的文件或相关主机名文件。

  1. 对于 ubuntu 机器,您可以在 /etc/hostname 文件中更改它。
  2. 对于 RHEL、CentOS 和 Fedora,您可以在 /etc/sysconfig/network 文件中更改它。

2. host

Host 命令用于反向查找 IP 或 DNS 名称。

例如,如果要查找附加了 IP 的 DNS,可以使用 host 命令,如下所示。

host 8.8.8.8

您也可以执行相反的操作来查找与域名关联的 IP 地址。例如

host devopscube.com

3. ping

ping 网络实用程序用于检查远程服务器是否可访问。它主要用于检查连接和排除网络故障。

它提供了以下详细信息。

  1. 发送和接收的字节数
  2. 发送、接收和丢失的数据包
  3. 大致往返时间(以毫秒为单位)

Ping 命令的语法如下。

ping 

例如

ping baidu.com

ping IP 地址

ping 8.8.8.8

如果要在不使用 ctrl+c 的情况下限制 ping 输出,则可以使用带有数字的“-c”标志,如下所示。

ping -c 1 devopscube.com

4. curl

curl 实用程序主要用于从服务器传输数据或向服务器传输数据。但是,您可以使用它进行网络故障排除。

例如,可以使用 telnet 检查端口 22 上的连接。curl

curl -v telnet://192.168.33.10:22

您可以使用 curl 检查 FTP 连接。

curl ftp://ftptest.net 

您还可以对 Web 服务器连接进行故障排除。

curl http://devopscube.com -I

5. wget

该命令主要用于获取网页。wget

您也可以使用它来解决网络问题。wget

例如,您可以使用 wget 对代理服务器连接进行故障排除。

wget -e use_proxy=yes http_proxy= http://externalsite.com

您可以通过获取文件来检查网站是否正常运行。

wget www.google.com

6. ip(ifconfig)

ip 命令用于显示和操作路由和网络接口。ip 命令是 ifconfig 的较新版本。 ifconfig 适用于所有系统,但最好使用 ip 命令而不是 ifconfig

让我们看一下 ip 命令的几个例子。

显示网络设备和配置
ip addr

您可以将此命令与管道和 grep 一起使用,以获得更精细的输出,例如 eth0 接口的 IP 地址。当您使用需要动态获取 IP 的自动化工具时,它非常有用。

以下命令获取网络接口的 IP 地址。

ip a | grep eth0  | grep "inet" | awk -F" " '{print $2}'

获取特定接口的详细信息

ip a show eth0

您可以列出路由表。

ip route
ip route list

7. arp

ARP(地址解析协议)显示与系统交互的本地网络 IP 地址和 MAC 地址的缓存表。

arp

示例输出,

vagrant@dcubelab:~$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.2.3                 ether   52:54:00:12:35:03   C                     eth0
192.168.33.1             ether   0a:00:27:00:00:00   C                     eth1
10.0.2.2                 ether   52:54:00:12:35:02   C                     eth0

8. ss(网络统计)

该命令是 netstat 的替代。您仍然可以在所有系统上使用该命令

使用命令,您可以获得比命令更多的信息。ss 命令速度很快,因为它从内核用户空间获取所有信息。

现在让我们看一下 ss 命令的几种用法。

列出所有连接

ss” 命令将列出计算机上的所有 TCP、UDP 和 Unix 套接字连接。

ubuntu@devopscube:~$ ss
Netid  State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
u_str  ESTAB      0      0                    * 7594                  * 0
u_str  ESTAB      0      0      @/com/ubuntu/upstart 7605                  * 0  
u_str  ESTAB      0      0                    * 29701                 * 0
u_str  ESTAB      0      0      /var/run/dbus/system_bus_socket 29702                 * 0
tcp    ESTAB      0      400      172.31.18.184:ssh         1.22.167.31:61808

该命令的输出将很大,因此您可以使用“ ssss | less”命令使输出可滚动。

过滤掉 TCP、UDP 和 Unix 套接字

如果要过滤掉 TCP、UDP 或 UNIX 套接字详细信息,请在 “ss” 命令中使用 “-t” “-u” 和 “-x” 标志。它将显示与特定端口的所有已建立连接。如果要使用带有特定标志的“a”列出连接的端口和侦听端口,如下所示。

ss -ta
ss -ua
ss -xa
列出所有侦听端口

要列出所有侦听端口,请使用带有 ss 命令的“-l”标志。要列出特定的 TCP、UDP 或 UNIX 套接字,请使用带有“-l”的“-t”、“-u”和“-x”标志,如下所示。

ubuntu@devopscube:~$ ss -lt
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                     *:ssh                      *:*
LISTEN     0      50                     :::http-alt                 :::*
LISTEN     0      50                     :::55857                   :::*
LISTEN     0      128                    :::ssh                     :::*
LISTEN     0      50                     :::53285                   :::*
ubuntu@devopscube:~$
列出所有已建立的

若要列出所有已建立的端口,请使用如下所示的标志。state established

ss -t -r state established

要列出处于侦听状态的所有套接字,

ss -t -r state listening

9. traceroute

如果您的系统或服务器中没有实用程序,则可以从本机存储库安装它。traceroute

traceroute是一个网络故障排除实用程序。使用 traceroute,您可以找到特定数据包到达目的地所需的跃点数。您基本上可以跟踪数据包从服务器到远程主机的路径。

例如

traceroute google.com

这是输出。

traceroute to google.com (173.194.33.163), 30 hops max, 60 byte packets
 1  ec2-50-112-0-84.us-west-2.compute.amazonaws.com (50.112.0.84)  1.974 ms  1.895 ms  1.899 ms
 2  100.64.1.247 (100.64.1.247)  1.414 ms 100.64.1.137 (100.64.1.137)  1.127 ms 100.64.1.97 (100.64.1.97)  1.313 ms
 3  100.64.0.198 (100.64.0.198)  1.443 ms 100.64.0.62 (100.64.0.62)  2.160 ms 100.64.0.60 (100.64.0.60)  2.116 ms
10  66.249.94.214 (66.249.94.214)  6.313 ms  7.104 ms 209.85.249.34 (209.85.249.34)  5.986 ms
11  209.85.244.65 (209.85.244.65)  6.157 ms  6.341 ms  6.574 m.
.
12  sea09s18-in-f3.1e100.net (173.194.33.163)  6.302 ms  6.517 ms  6.071 ms
ubuntu@devopscube:~$

上面的输出显示了从 devopscube AWS ec12 服务器到达 google.com 的跃点计数 (2)。

当您想要解决与网络数据包未到达主机相关的问题时,此实用程序会派上用场。

10. mtr

该实用程序是一种网络诊断工具,用于解决网络瓶颈问题。它结合了两者和mtr ping traceroute

例如,以下命令实时显示输出。traceroute

mtr google.com

这是输出。

初学者必备的 17 个最佳 Linux 网络和故障排除命令_第1张图片

mtr report

您可以使用 –report 标志生成报告。运行 mtr report时,它会向目标发送 10 个数据包并创建报告。

mtr -n --report google.com

初学者必备的 17 个最佳 Linux 网络和故障排除命令_第2张图片

11. dig

如果您有任何与DNS查找相关的任务,则可以使用“”命令查询DNS名称服务器。dig

使用 dig 获取所有 DNS 记录

以下命令返回 twitter.com 的所有 DNS 记录和 TTL 信息

dig twiter.com ANY

初学者必备的 17 个最佳 Linux 网络和故障排除命令_第3张图片

用于获取不冗长的输出。+short

dig google.com ANY +short
使用 dig 获取特定的 DNS 记录

例如,如果要获取特定域名的 ,可以使用 dig 命令。 将提供不冗长的信息A record+short

dig www.google.com A +short

同样,您可以使用以下命令单独获取其他记录信息。

dig google.com CNAME +short
dig google.com MX +short
dig google.com TXT +short
dig google.com NS +short
使用 dig 反向 DNS 查找

您可以使用以下命令通过 dig 执行反向 DNS 查找。替换为所需的 IP8.8.8.8

dig -x 8.8.8.8

12. nslookup

Nslookup(名称服务器查找)实用程序用于检查 DNS 条目。它类似于 dig 命令。

要检查域的 DNS 记录,可以使用以下命令。

nslookup google.com

您还可以使用 IP 地址进行反向查找。

nslookup 8.8.8.8

要获取域名的所有 DNS 记录,您可以使用以下命令。

nslookup -type=any google.com

同样,您可以查询 等记录mxsoa

13. nc (netcat)

nc(netcat) 命令被称为网络命令的瑞士军队。

使用 nc,可以检查在特定端口上运行的服务的连接性。

例如,要检查 ssh 端口是否打开,可以使用以下命令。

nc -v -n 192.168.33.10 22

netcat 还可用于通过 TCP/UDP 传输数据和端口扫描。

不建议在云环境中进行端口扫描。您需要请求云提供商在您的环境中执行端口扫描操作。

14. telnet

telnet命令用于对端口上的TCP连接进行故障排除。

若要使用 telnet 检查端口连接,请使用以下命令。

telnet 10.4.5.5 22 8080

15. route

“” 命令用于获取系统的路由表的详细信息并对其进行操作。让我们看一下 route 命令的几个示例。route

列出所有路由

执行不带任何参数的 “” 命令以列出系统或服务器中的所有现有路由。route

ubuntu@devopscube:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ip-172-31-16-1. 0.0.0.0         UG    0      0        0 eth0
172.17.0.0      *               255.255.0.0     U     0      0        0 docker0
172.31.16.0     *               255.255.240.0   U     0      0        0 eth0
ubuntu@devopscube:~$

如果要在没有任何主机名的情况下以数字形式获得完整输出,则可以在 route 命令中使用“-n”标志。

ubuntu@devopscube:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.16.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.31.16.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0
ubuntu@devopscube:~$

16. tcpdump

该命令主要用于对网络流量进行故障排除。tcpdump

注意:tcpdump 分析命令的输出需要一些学习,因此解释它超出了本文的范围。

tcpdump 命令适用于系统的网络接口。因此,您需要使用管理权限来执行该命令。

列出所有网络接口

使用以下命令列出所有接口。

sudo  tcpdump --list-interfaces
捕获特定接口上的数据包

若要获取特定接口上的数据包转储,可以使用以下命令。

注意:按下可停止捕获数据包。ctrl + c

sudo tcpdump -i eth0

若要限制数据包捕获,可以使用带有数字的标志。-c

例如

sudo tcpdump -i eth0 -c 10
捕获所有接口上的数据包

要捕获所有接口上的数据包,请使用如下所示的标志。any

sudo tcpdump -i any

17. lsof

lsof 是用于日常 Linux 故障排除的命令。对于使用 Linux 系统的任何人来说,此命令都同样重要。

要列出所有打开的程序,请执行该命令。lsof

lsof

开发人员和DevOps工程师面临的常见错误之一是“绑定失败错误:地址已在使用中”。您可以使用以下命令查找与端口关联的进程 ID。您可以终止进程以释放端口。

lsof -i :8080

第三方网络故障排除实用程序

第三方解决方案提供了更多网络疑难解答命令行实用程序。

您需要单独安装它们,并将它们用于故障排除目的。由于安全合规性的原因,并非每个组织都允许您这样做。

我们在下表中将一些工具信息组织在不同的类别下。

类别 开源工具
网络扫描仪 Nmap、Zenmap(Nmap 的 GUI)
数据包分析器 Wireshark、Tcpdump
带宽监视器 BandwidthD, Cacti
端口扫描仪 Nmap, Masscan
Ping/Traceroute 工具 MTR(My Traceroute)
无线网络分析仪 Wireshark(用于无线)、Kismet
网络模拟器 GNS3,Mininet
DNS 工具 DNSperf
网络性能测试 iperf

结论

在本文中,我们介绍了用于网络故障排除和配置的重要 Linux 命令行实用程序。

如果您刚开始使用系统管理、DevOps 或 SRE 角色,则必须了解这些实用程序以支持您正在处理的项目。

每个实用程序都有许多功能,您可以进一步探索以满足您的要求。

你可能感兴趣的:(linux,网络,运维)