17 个适合初学者的最佳 Linux 网络和故障排除命令
网络配置、诊断和一般Linux 故障排除是 系统管理的重要组成部分。即使对于使用 Linux 系统的开发人员来说,了解Linux 网络命令也是一个优势。
具体来说,如果您想成为 DevOps 工程师或成为 SRE 的一员,则必须了解所有 Linux 排障命令,因为它们将成为您日常活动的一部分。这篇文章将介绍 Linux 系统中原生可用的重要 Linux 网络排障命令。
1. hostname
Hostname命令用于查看服务器的主机名和设置主机名。
hostname
您可以使用 hostname 命令为服务器设置新的主机名。例如,
hostnamectl set-hostname aliyun01-2c2g40g3m
2. host
Host 命令用于反向查找 IP 或 DNS 名称。例如,如果您想查找附加了 IP 的 DNS,您可以使用主机命令,如下所示:
host 8.8.8.8
您也可以执行相反的操作来查找与域名关联的 IP 地址。例如,
host flashcat.cloud
3. ping
ping 网络实用程序用于检查远程服务器是否可达。它主要用于检查连接性和排除网络故障。它提供以下详细信息。
-
• 发送和接收的字节数
-
• 发送、接收和丢失的数据包
-
• 大约往返时间(以毫秒为单位)
Ping 命令具有以下语法。
ping
例如,
ping flashcat.cloud
ping 8.8.8.8
如果您想在不使用
ctrl+c
的情况下限制 ping 输出,则可以使用带有数字的
-c
参数,用于控制发多少个探测包,如下所示。
ping -c 10 flashcat.cloud
4. curl
Curl 实用程序主要用于从服务器传输数据或向服务器传输数据。但是,您可以使用它来排除网络故障。
对于网络故障排除,curl 支持 DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS MQTT POP3 POP3S RTMP RTMPS RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP 等协议。
例如,curl 可以使用 telnet 检查端口 22 上的连接:
curl -v telnet://192.168.33.10:22
您可以使用 curl 检查 FTP 连接。
curl ftp://ftptest.net
您还可以对 Web 服务器连接进行故障排除。
curl https://flashcat.cloud
5. wget
wget命令主要用于获取网页,也可以使用它来解决网络问题。例如,您可以使用 wget 对代理服务器连接进行故障排除。
wget -e use_proxy=yes http_proxy= http://externalsite.com
您可以通过获取文件来检查网站是否已启动。
wget flashcat.cloud
6. ip (ifconfig)
ip 命令用于显示和操作路由和网络接口。ip 命令是 的 ifconfig 较新版本。ifconfig 适用于所有系统,但最好使用 ip 命令而不是 ifconfig。下面让我们看一下命令的几个 ip 示例。
显示网络设备和配置:
ip addr
您可以将此命令与管道和 grep 结合使用以获得更精细的输出,例如 eth0 接口的 IP 地址。当您使用需要动态获取 IP 的自动化工具时,它非常有用。
以下命令获取eth0网络接口的 IP 地址:
ip a | grep eth0 | grep "inet"| awk -F" " '{print $2}'
获取特定接口的详细信息:
ip show eth0
您可以列出路由表:
ip route
ip route list
7. arp
ARP(地址解析协议)显示系统与之交互的本地网络IP地址和MAC地址的缓存表。
[root@aliyun01-2c2g40g3m ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.16.4 ether 02:42:c0:a8:10:04 C br-09ee572b74a4
_gateway ether ee:ff:ff:ff:ff:ff C eth0
192.168.16.2 ether 02:42:c0:a8:10:02 C br-09ee572b74a4
192.168.16.6 ether 02:42:c0:a8:10:06 C br-09ee572b74a4
8. ss
ss命令是netstat的替代命令. 您仍然可以在所有系统上使用netstat命令。使用ss命令,可以获得比netstat命令更多的信息。而且ss 命令速度很快,因为它从内核用户空间获取所有信息。现在让我们看一下ss命令的一些用法。
[root@aliyun01-2c2g40g3m~]# ss | head -n 5
NetidStateRecv-Q Send-Q LocalAddress:PortPeerAddress:PortProcess
u_str ESTAB 00/run/dbus/system_bus_socket 44778775*44778774
u_str ESTAB 00/run/systemd/journal/stdout 19742*19703
u_str ESTAB 00*35688*35689
u_str ESTAB 00/run/dbus/system_bus_socket 24539* 24538
因为内容输出的比较多,这里只取了前面 5 行,如果要查看所有内容,可以这样写:
ss | less
。
过滤掉 TCP、UDP 和 Unix 套接字
如果要过滤掉 TCP、UDP 或 UNIX 套接字详细信息,请在“ss”命令中使用“-t”、“-u”和“-x”标志。它将显示到特定端口的所有已建立的连接。如果您想使用“a”和特定标志来列出已连接和正在侦听的端口,如下所示。
SS -ta
SS -ua
SS -xa
列出所有监听端口
要列出所有侦听端口,请在 ss 命令中使用“-l”标志。要列出特定的 TCP、UDP 或 UNIX 套接字,请使用“-t”、“-u”和“-x”标志以及“-l”,如下所示。
[root@aliyun01-2c2g40g3m~]# ss -lt
StateRecv-Q Send-Q LocalAddress:PortPeerAddress:PortProcess
LISTEN 040960.0.0.0:512850.0.0.0:*
LISTEN 01280.0.0.0:ssh 0.0.0.0:*
LISTEN 050.0.0.0:612080.0.0.0:*
LISTEN 040960.0.0.0:200900.0.0.0:*
列出所有已建立的
要列出所有已建立的连接:
ss -t -r state established
要列出所有处于侦听状态的:
ss -t -r state listening
9. traceroute
traceroute是一个网络故障排除实用程序。使用跟踪路由,您可以找到特定数据包到达目的地所需的跳数。您基本上可以跟踪数据包从服务器到远程主机的路径。
例如,
traceroute google.com
输出:
traceroute to google.com (173.194.33.163),30 hops max,60byte 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
2100.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
3100.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
1066.249.94.214(66.249.94.214)6.313 ms 7.104 ms 209.85.249.34(209.85.249.34)5.986 ms
11209.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
上面的输出显示了从 devopscube AWS ec2 服务器到达 google.com 的跃点计数 (12)。当您想要解决与网络数据包未到达主机相关的问题时,此实用程序会派上用场。
10. mtr
该mtr实用程序是一个网络诊断工具,用于解决网络瓶颈问题。它结合了ping两者的功能traceroute 例如,以下命令traceroute实时显示输出。
mtr google.com
输出如下:
mtr report
您可以使用 –report 标志生成报告。当您运行 mtr 报告时,它会向目标发送 10 个数据包并创建报告。
mtr -n --report google.com
11. dig
如果您有任何与 DNS 查找相关的任务,您可以使用“ dig”命令来查询 DNS 名称服务器。
以下命令返回 twitter.com 的所有 DNS 记录和 TTL 信息:
dig twiter.com ANY
通过
+short
可以简化输出:
dig google.com ANY +short
使用 dig 获取特定 DNS 记录
例如,如果您想获取A record特定域名的 ,您可以使用 dig 命令:
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 查找。替换8.8.8.8为需要的IP
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
同样,您可以查询诸如 mx、soa 的记录。
13. nc( netcat )
(netcat)命令nc被称为网络命令的瑞士军刀。使用nc,您可以检查特定端口上运行的服务的连接性。例如,要检查ssh端口是否打开,可以使用以下命令。
nc -v -n 192.168.33.10 22
netcat还可用于通过 TCP/UDP 进行数据传输和端口扫描。
不建议在云环境中进行端口扫描。您需要请求云提供商在您的环境中执行端口扫描操作。
14. telnet
telnet命令用于排除端口上的TCP连接故障。要使用 telnet 检查端口连接,请使用以下命令。
telnet 10.4.5.5 22
15. route
“route”命令用于获取系统路由表的详细信息并对其进行操作。让我们看几个示例。
列出所有路由
执行不带任何参数的“route”命令,列出系统或服务器中所有的路由。
[root@aliyun01-2c2g40g3m~]# route
Kernel IP routing table
DestinationGatewayGenmaskFlagsMetricRefUseIface
default _gateway 0.0.0.0 UG 10000 eth0
172.17.0.00.0.0.0255.255.0.0 U 000 docker0
172.28.192.00.0.0.0255.255.240.0 U 10000 eth0
192.168.16.00.0.0.0255.255.240.0 U 000 br-09ee572b74a4
[root@aliyun01-2c2g40g3m~]# route -n
Kernel IP routing table
DestinationGatewayGenmaskFlagsMetricRefUseIface
0.0.0.0172.28.207.2530.0.0.0 UG 10000 eth0
172.17.0.00.0.0.0255.255.0.0 U 000 docker0
172.28.192.00.0.0.0255.255.240.0 U 10000 eth0
192.168.16.00.0.0.0255.255.240.0 U 000 br-09ee572b74a4
如上,如果您想获得不带任何主机名的数字形式的完整输出,可以在路由命令中使用“-n”标志。
16. tcpdump
该 tcpdump 命令主要用于对网络流量进行故障排除。
注意:分析命令的 tcpdump 输出需要一些学习,因此解释它超出了本文的范围。
tcpdump 命令适用于系统的网络接口。因此,您需要使用管理权限来执行该命令。
列出所有网络接口
sudo tcpdump --list-interfaces
在特定接口上捕获数据包
要获取特定接口上的数据包转储,您可以使用以下命令。
注意:按下 ctrl + c 可停止捕获数据包。
sudo tcpdump -i eth0
要限制数据包捕获,您可以使用带有数字的标志 -c 。比如,要捕获 10 个数据包,可以使用以下命令。
sudo tcpdump -i eth0 -c 10
捕获所有接口上的数据包
要捕获所有接口上的数据包,请使用如下所示 any 的标志。
sudo tcpdump -i any
17. lsof
lsof 是用于日常 Linux 故障排除的命令。此命令对于使用 Linux 系统的任何用户都同样重要。要列出所有打开的文件,请执行该 lsof 命令。
lsof
开发人员和DevOps工程师面临的常见错误之一是“绑定失败错误:地址已在使用中”。您可以使用以下命令查找与端口关联的进程 ID。您可以终止进程以释放端口。
lsof -i :8080
本文翻译自:https://devopscube.com/list-linux-networking-troubleshooting-and-commands-beginners/
秋
招已经开始啦,大家如果不做好充足准备的话,
秋
招很难找到好工作。
送大家一份就业大礼包,大家可以突击一下春招,找个好工作!