运维过程中排除Linux网络问题的命令

运维过程中排除Linux网络问题的命令

1:IP 命令
查看所有 IP 地址:
	ip a
	可以使用 - 4 或 - 6 选项添加过滤器仅显示 IPv4 或 IPv6 地址。
	[root@virtual_host ~]# ip -4 a
	[root@virtual_host ~]# ip -6 a
2:ifconfig
查看网络信息的另一种方法是使用 ifconfig,它比 ip 命令更容易阅读,显示的信息量没有太大差异,一个显著的区别是 ifconfig 显示一些基本的传输 / 接收统计信息,这些统计信息可能很有用,一目了然。
netstat 命令对于发现机器上各种服务正在侦听的端口很有用,-t 可以选择 TCP 和 - u UDP,使用 - l 侦听端口的选项,如果你更喜欢查看 IP 地址而不是主机名,请使用该 - n 选项。
添加多个选项时,可以将它们组合在一起,如下所示。
	[root@virtual_host ~]# netstat -tul
如果要查看侦听端口的服务的进程 ID (pid),请使用该 - p 选项,需要使用 sudo 此命令来查看 pid,否则,它不会显示。
	[root@virtual_host ~]# sudo netstat -tulp

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

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

可以使用 ping 带有 IP 地址或主机名的命令。
	[root@virtual_host ~]# ping 10.0.0.254
	[root@virtual_host ~]# ping registry.kubernetes.com
	
ping 将继续 ping 直到停止命令(取决于你使用的终端,可以使用键盘快捷键(例如 “Ctrl + Shift + C”)关闭命令)

要指定 ping 数,请使用该 - c 选项以及要执行的 ping 数。
	[root@virtual_host ~]# ping -c 3 10.0.0.254
	PING 10.0.0.254 (10.0.0.254) 56(84) bytes of data.
	64 bytes from 10.0.0.254: icmp_seq=1 ttl=128 time=0.458 ms
	64 bytes from 10.0.0.254: icmp_seq=2 ttl=128 time=0.266 ms
	64 bytes from 10.0.0.254: icmp_seq=3 ttl=128 time=0.108 ms

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

    [root@virtual_host ~]# ping -6 registry.kubernetes.com
	ping: registry.kubernetes.com: Name or service not known

    [root@virtual_host ~]# ping -4 registry.kubernetes.com
    PING registry.kubernetes.com (10.0.0.13) 56(84) bytes of data.
    64 bytes from registry.kubernetes.com (10.0.0.13): icmp_seq=1 ttl=64 time=0.281 ms
    64 bytes from registry.kubernetes.com (10.0.0.13): icmp_seq=2 ttl=64 time=0.376 ms
    64 bytes from registry.kubernetes.com (10.0.0.13): icmp_seq=3 ttl=64 time=0.358 ms
    
	可以同时使用多个选项,下面的命令使用 IPv4 地址并 ping 3 次。
    [root@virtual_host ~]# ping -4 -c 3 registry.kubernetes.com
    PING registry.kubernetes.com (10.0.0.13) 56(84) bytes of data.
    64 bytes from registry.kubernetes.com (10.0.0.13): icmp_seq=1 ttl=64 time=0.315 ms
    64 bytes from registry.kubernetes.com (10.0.0.13): icmp_seq=2 ttl=64 time=0.341 ms
    64 bytes from registry.kubernetes.com (10.0.0.13): icmp_seq=3 ttl=64 time=0.308 ms

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

跟踪路由命令

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

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

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

	[root@virtual_host ~]# traceroute 8.8.8.8
    traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
     1  gateway (10.0.0.254)  0.165 ms  0.105 ms  0.148 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
     7  * * *
     8  * * *
     9  * * *
    10  * * *
    11  * * *
    12  * * *
    13  * * *
    14  * * *
    15  * * *
    16  * * *
    17  * * *
    18  * * *
    19  * * *
    20  * * *
    21  * * *
    22  * * *
    23  * * *
    24  * * *
    25  * * *
    26  * * *
    27  * * *
    28  * * *
    29  * * *
    30  * * *

	[root@virtual_host ~]# traceroute registry.kubernetes.com
    traceroute to registry.kubernetes.com (10.0.0.13), 30 hops max, 60 byte packets
     1  registry.kubernetes.com (10.0.0.13)  0.385 ms  0.314 ms  0.348 ms
	与 一样 ping,可以指定 IPv4 和 IPv6。traceroute 默认为 IPv4,不像 ping 需要指定该 - 4 选项。
	
	[root@virtual_host ~]# traceroute -4 registry.kubernetes.com
    traceroute to registry.kubernetes.com (10.0.0.13), 30 hops max, 60 byte packets
     1  registry.kubernetes.com (10.0.0.13)  0.308 ms  0.313 ms  0.284 ms

	[root@virtual_host ~]# traceroute -6 registry.kubernetes.com
    4registry.kubernetes.com: Name or service not known
    Cannot handle "host" cmdline arg `registry.kubernetes.com' on position 1 (argc 2)
    # traceroute 还有许多其他选项,但基本命令可能对许多用户来说已经足够了。
    
域名系统
DNS 命令在分配主机名和 / 或覆盖路由器中的 DNS 值时尤其有用,可以确定主机名是否指向正确的 IP 地址。

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

    [root@virtual_host ~]# host baidu.com
    baidu.com has address 220.181.38.251
    baidu.com has address 220.181.38.148
    baidu.com mail is handled by 20 jpmx.baidu.com.
    baidu.com mail is handled by 10 mx.maillb.baidu.com.
    baidu.com mail is handled by 15 mx.n.shifen.com.
    baidu.com mail is handled by 20 mx1.baidu.com.
    baidu.com mail is handled by 20 usmx01.baidu.com.
    baidu.com mail is handled by 20 mx50.baidu.com.
    # 如果要指定用于 DNS 查找的 DNS 服务器。
    [root@virtual_host ~]# host baidu.com 8.8.8.8
    Using domain server:
    Name: 8.8.8.8
    Address: 8.8.8.8#53
    Aliases: 

    baidu.com has address 220.181.38.148
    baidu.com has address 220.181.38.251
    baidu.com mail is handled by 20 mx50.baidu.com.
    baidu.com mail is handled by 10 mx.maillb.baidu.com.
    baidu.com mail is handled by 15 mx.n.shifen.com.
    baidu.com mail is handled by 20 mx1.baidu.com.
    baidu.com mail is handled by 20 jpmx.baidu.com.
    baidu.com mail is handled by 20 usmx01.baidu.com.
dig命令
如果希望获得更详细的 DNS 信息,该 dig 命令很有用,基本用法与 host 命令类似。
	[root@virtual_host ~]# dig baidu.com
还可以指定用于查找的 DNS 服务器。

	[root@virtual_host ~]# dig @8.8.8.8 baidu.com
如果想要一个域的所有 DNS 记录,可以使用该 any 选项。

	[root@virtual_host ~]# dig baidu.com any
还可以指定其他 DNS 记录,例如 MX 记录。

	[root@virtual_host ~]# dig baidu.com mx
当你想知道给定 IP 地址的主机名 / 域名时,反向 DNS 查找很有用,结合使用 - x 选项和 IP 地址即可。

	[root@virtual_host ~]# dig -x 8.8.8.8

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

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

	[root@virtual_host ~]# sudo systemd-resolve --flush-caches
该 systemd-resolve 命令仅对使用 systemd.


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

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

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

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

    [root@virtual_host ~]# sudo dhclient -r
    [root@virtual_host ~]# sudo dhclient
posted @ 2022-02-06 12:32  Layzer  阅读(53)  评论(0编辑  收藏  举报