Linux中排除网络故障时,必须要会的Linux命令运维必看!

2022-06-02 18:53:57 浏览数 (1)

来源:运维漫谈

接口信息

当你需要了解有关你登录的设备的网络接口的更多信息时使用接口信息命令。

IP 命令

查看所有 IP 地址:

代码语言:javascript复制
ip a

可以使用 - 4 或 - 6 选项添加过滤器仅显示 IPv4 或 IPv6 地址。

代码语言:javascript复制
ip -4 a
ip -6 a

查看网络信息的另一种方法是使用 ifconfig,它比 ip 命令更容易阅读,显示的信息量没有太大差异,一个显著的区别是 ifconfig 显示一些基本的传输 / 接收统计信息,这些统计信息可能很有用,一目了然。

代码语言:javascript复制
ifconfig

网络状态命令

netstat 命令对于发现机器上各种服务正在侦听的端口很有用,-t 可以选择 TCP 和 - u UDP,使用 - l 侦听端口的选项,如果你更喜欢查看 IP 地址而不是主机名,请使用该 - n 选项。

添加多个选项时,可以将它们组合在一起,如下所示。

代码语言:javascript复制
netstat -tul

如果要查看侦听端口的服务的进程 ID (pid),请使用该 - p 选项,需要使用 sudo 此命令来查看 pid,否则,它不会显示。

代码语言:javascript复制
sudo netstat -tulp

网络可用性

网络可用性命令可用于快速检查你是否可以访问网络上的主机或确定主机是否已打开电源(假设它已连接到网络)。

Ping 命令

最著名的网络命令是 ping,可以快速查看是否可以通过网络访问设备,前提是它没有被防火墙阻止,由于流量不需要由路由器路由(流量保持本地),因此始终允许同一网络内的 Ping。

可以使用 ping 带有 IP 地址或主机名的命令。

代码语言:javascript复制
ping 192.168.1.10
ping rumenz.com

ping 将继续 ping 直到停止命令(取决于你使用的终端,可以使用键盘快捷键(例如 “Ctrl Shift C”)关闭命令)

要指定 ping 数,请使用该 - c 选项以及要执行的 ping 数。

代码语言:javascript复制
ping -c 3 192.168.1.10

如果启用了 IPv6,则该 ping 命令可能默认使用 IPv6 IP 地址,可以使用 - 4 或 - 6 选项指定使用 IPv4 或 IPv6 地址。

代码语言:javascript复制
ping -4 192.168.1.10
ping -6 192.168.1.10

可以同时使用多个选项,下面的命令使用 IPv4 地址并 ping 3 次。

代码语言:javascript复制
ping -4 -c 3 192.168.1.10

某些防火墙配置为禁用 ping,但如果你有多个内部网络,我建议你在本地网络上允许 ping,即使你 ping 阻止了 WAN 地址,因为这对于故障排除非常有用。如果你担心如果你的内部网络或 DMZ 之一受到威胁,会更容易发现网络上的设备,则不允许从你的内部网络向你的 DMZ 发出 ping 或从你的 DMZ 发出 ping,阻止进出 DMZ 的 ping 有助于进一步隔离该网络。

跟踪路由命令

跟踪路由对于查看到达 Internet 上另一个网络所采用的路径很有用,除非你的网络中有多个路由器,否则它在你的本地网络上用处不大。

对于大多数家庭用户来说,情况并非如此,但一些家庭实验室可能会使用路由器来运行单独的内部网络,某些 traceroute 输出中有星号或问号,这是因为跟踪的整个路径可能并不总是显示,特别是如果防火墙配置为出于安全考虑丢弃 ICMP 流量。

基本 traceroute 命令如下所示,可以使用 IP 地址或主机名。

代码语言:javascript复制
traceroute 8.8.8.8
traceroute rumenz.com

与 一样 ping,可以指定 IPv4 和 IPv6。traceroute 默认为 IPv4,不像 ping 需要指定该 - 4 选项。

代码语言:javascript复制
traceroute -4 google.com
traceroute -6 google.com

traceroute 还有许多其他选项,但基本命令可能对许多用户来说已经足够了。

域名系统

DNS 命令在分配主机名和 / 或覆盖路由器中的 DNS 值时尤其有用,可以确定主机名是否指向正确的 IP 地址。

主机命令

要在本地网络或 Internet 上查找与域名关联的 IP 地址,请使用该 host 命令。

代码语言:javascript复制
host rumenz.com

如果要指定用于 DNS 查找的 DNS 服务器。

代码语言:javascript复制
host google.com 1.1.1.1

dig命令

如果希望获得更详细的 DNS 信息,该 dig 命令很有用,基本用法与 host 命令类似。

代码语言:javascript复制
dig rumenz.com

还可以指定用于查找的 DNS 服务器。

代码语言:javascript复制
dig @8.8.8.8 google.com

如果想要一个域的所有 DNS 记录,可以使用该 any 选项。

代码语言:javascript复制
dig google.com any

还可以指定其他 DNS 记录,例如 MX 记录。

代码语言:javascript复制
dig google.com mx

当你想知道给定 IP 地址的主机名 / 域名时,反向 DNS 查找很有用,结合使用 - x 选项和 IP 地址即可。

代码语言:javascript复制
dig -x 8.8.8.8

系统解析命令

systemd-resolve 命令可用于检查当前的 DNS 服务器设置为什么,当我在设置新的内部网络或弄乱路由器上的 DNS 设置时对 DNS 问题进行故障排除时,我发现这很有帮助。如果运行以下命令,将看到一行 Current DNS Server,DNS Servers 其中列出了通过 DHCP 或手动设置的 DNS。

代码语言:javascript复制
systemd-resolve --status

当我更改某些 DNS 设置以使用拆分 DNS(也称为水平拆分、拆分域等)时,我发现能够刷新 DNS 解析器缓存很有用,以便我的系统更快地开始解析新的 IP 地址。要刷新缓存,只需使用 --flush-caches 选项。

代码语言:javascript复制
sudo systemd-resolve --flush-caches

该 systemd-resolve 命令仅对使用 systemd.

DHCP

DHCP 命令非常有用,尤其是当你由于对路由器或交换机所做的更改而想要手动释放和更新 DHCP 租约时。

Dhclient 命令

当通过 DHCP 为路由器静态分配 IP 地址、更改路由器 / 交换机上的 DHCP 地址范围或其他与 DHCP 相关的网络更改,可以使用 dhclient 命令更轻松地更新设备 DHCP 租期。

如果不使用该命令,要么必须以物理方式或通过操作系统控制面板断开并重新连接到网络,要么等待 DHCP 租约到期。

要在你的设备上释放和续订 DHCP 租约,你必须按所示顺序输入以下两个命令,还需要 sudo 此命令的权限。

代码语言:javascript复制
sudo dhclient -r
sudo dhclient

0 人点赞