感谢 Linux,我们可以使用许多促进网络管理和诊断的工具。从这个意义上说,Linux ping 命令是系统管理员和网络管理员最有用的工具之一。
它的基本功能是确定网络中的一台主机是否可达。然而,在这篇文章中,我们将讨论 Linux Ping 命令的其他更高级的功能。
ping 命令有什么用?
ping 命令是使用网络的最基本工具之一。其目的是诊断网络连接 errors.
通过这种方式,可以知道网络节点是否失去了连接。另一方面,执行其他诊断任务也很有用,例如:
- 测量两个网络节点进行通信所花费的时间。
- 我们还能够识别特定主机的 IP 地址。我们可以在互联网和专用网络中使用此功能。
- ping 命令可用于bash脚本对网络节点执行自动检查。
- 它允许知道是否与特定设备有连接。
正如您所看到的,它是管理网络和服务器的必要命令。
ping 命令如何工作?
在 Linux 中,ping 命令的功能很容易解释。该命令将一系列小数据包发送到特定节点。
您可以使用 IP 地址或主机名来测试该节点。然后,发送数据包后,该命令会验证并测量从目标节点接收响应所需的时间。
正如您所料,响应时间可能会受到连接点之间的地理位置或两个节点之间使用的任何硬件等条件的影响。
例如,在有线专用网络中,该命令将比在具有多个路由器或网桥的网络中获得更好的时间。
但是,该命令生成的信息将判断网络状况是好还是坏。
该命令的语法如下:
ping [options] [destination]
ping 命令的一些最有用和最常用的选项如下:
- -c:使用此选项,您可以指定发送多少个数据包。
- -s:此选项允许您更改数据包的默认大小。
- -v:详细模式。
- -w:指定命令执行结束的时间(以秒为单位)。无论命令已发送或接收多少个数据包。
- -i:使用此选项,您可以指定要使用的网络接口。
目标节点可以通过 IP 地址或主机名指定。
我可以使用代理 ping 吗?
A proxy是充当网络上两点之间连接中介的服务器或应用程序。中间人直接向另一个节点发出请求。
问题是 Ping 命令需要节点之间有直接的网络连接。
因此,如果背后有代理,Ping 命令通常无法正常运行。
一个可能的解决方案是许多网站都提供 Ping 命令服务。另一方面,对于 ping 命令的某些任务,可以使用卷曲命令。另外,您可以使用 VPN,这样它就会隐藏您的 IP。
但是,在某些 Linux 发行版中,默认情况下不安装此命令。首先验证一下,没有安装的话再安装。
Ping IPv6 协议
通常,在使用 Ping 命令时,我们使用 IPv4 协议的 IP 地址。然而,随着 IPv6 协议的出现,这种格式的地址越来越常见。
Linux内核从2.2版本开始支持IPv6协议,因此目前所有Linux发行版都支持它。
基本语法如下:
$ ping -6 2001:4860:4860::8888
在旧版本上,有 ping6 命令。在最新版本的 Linux 上,ping6 不再存在,其功能已合并到 ping 中,并且其工作方式与您所看到的相同。
基本语法如下:
ping6 [options] [Destination]
使用选项 -c,我们可以指定要发送的数据包数量,使用 -i 指定您将使用的网络接口。例如:
ping6 2001:4860:4860::8888
Ping 特定端口
有时我们想知道节点上的特定端口是否处于活动状态。但是,ping 命令不提供此功能,但可以使用 Linux 上默认安装的 telnet 命令来实现此功能。
为此,只需使用以下语法:
telnet [host] [port]
telnet google.com 80
这样就可以用原始的方式来ping通网络节点的特定端口。
随时间 Ping
尽管 ping 命令显示有用的信息,但它可能有点简单。但是,可以稍微修改命令的操作,以使其显示数据包发送的日期。
这可以使信息赏心悦目,并且可能对脚本和日志有用。
这个语法足以做到这一点。但是,您需要安装 ccze 软件包。
ping [host] | xargs -n1 -i bash -c 'echo `date +%F\ %T`" {}"' | ccze
如您所见,它显示了每个数据包发送的时间。
Ping 给定子网上的所有主机
您可以向网络或子网上的所有主机发送 ping 信号。为此,添加选项 -b 并 ping 任何以 255 结尾的网络的广播 IP 地址就足够了。
例如:
ping -b -c 4 192.168.1.255
因此,如果目的地无法到达,可能是它们阻止了 ping 命令发送的 ICMP 数据包,也可能是网络问题或路由表出现问题。
如何结束 ping?
默认情况下,Linux 上的 ping 命令会不断向主机发送测试包。然而,一旦信息可用,就必须终止 ping 命令的执行。
为此,只需按以下键:
CTRL + C
这样,该命令将立即停止工作。
在特定计数后结束
您可以将数据包的数量限制为 10 或其他。当它发送完十个数据包后,它将停止。
ping -c 10 [host]
Linux 上 ping 命令位于哪里?
在像 Linux 这样的 Unix 衍生系统中,二进制文件通常可以在路径中找到:
/usr/bin/
.
在此目录中,您会发现许多我们在终端上用作命令的二进制文件。在 Linux 系列的其他操作系统中,也可以将其放在
/usr/sbin/
目录。
因此,我们可以使用 ls 命令来检查:
$ ls /usr/bin | grep ping
在此图中,您可以看到 ping 命令位于
/usr/bin/
.
另一种方法是,您可以使用 which 命令来查找 Linux 上的任何命令:
$ which ping
它将显示以下内容:
/usr/bin/ping
使用 ping 命令检查延迟
ping 命令提供的可能性之一是您可以测量连接响应时间。这就是延迟。
要使用 ping 命令测量延迟,只需使用它并注意屏幕输出:
ping -c 4 [host]
ping -c 4 192.168.1.1
正如你所看到的,四个数据包已被发送到目的地,并且有一定的响应时间。
在底部,有一行开头如下:
rtt min/avg/max/mdev
等号后的第二个值是延迟值。在本例中,该值为 6.798。
通过延迟,可以确定连接性较差的主机。这样我们就可以采取相应的措施。
找到理想的 MTU
MTU(最大传输单元)是静态表示可以通过网络发送的最大数据单元的大小(以字节为单位)的值。
目前,由于安全措施,越来越多的网络阻止 MTU 工作。然而,大多数以太网局域网使用 1500 字节 MTU。
如果您想使用 ping 命令找到理想的 MTU 值,请设置初始值,然后逐渐减小,直到没有错误为止。如果该值太高,我们将收到下一个错误:
ping: local error: Message too long
为此,请使用以下语法:
ping -M do -s [initial_value] [host]
例如:
ping -M do -s 1473 192.168.1.1
在这种情况下,封装尺寸的价值就非常大了。所以我会减少它。在本例中,最佳值为 1472。
如果您收到另一条消息,则必须将初始值逐一减少,直到获得所需的结果。
如果 MTU 值已知,则可用于改进网络行为,特别是在大型网络甚至城域网络的情况下。
在第 2 层上执行 Ping 操作(使用 arping)
使用 ping 命令,我们将能够在知道网络中特定节点的 IP 地址的情况下执行测试。这是因为 ping 命令工作在第 3 层开放系统互连模型(网络)。
另一方面,可以使用 Linux 中内置的另一个命令作为 arping。该命令的工作原理与 ping 非常相似,但适用于 OSI 模型的第 2 层。
该命令的语法如下:
$ sudo arping [Ip_address]
$ sudo arping 192.168.1.1
你会得到这样的结果:
该命令的屏幕输出首先显示发送数据包的大小,然后显示节点的 MAC 地址和响应时间。
请注意,Debian Linux 及其衍生版本上默认不安装此命令。所以你必须安装它,然后你才能以 root 身份运行它。
Ping 主机名
默认情况下,ping 命令使用目标的 IP 地址或主机名向目标发送测试数据包。还应该注意的是,Linux 上的大多数 ping 实现都没有解析DNS相反。
例如,如果您通过添加 IP 地址来使用 Ping 命令,则它只会在输出中返回主机的 IP 地址。相反,如果我们指定了主机名,它将解析它并在输出中显示 IP。
检查以下命令的输出:
$ ping google.com
Ping 路由(使用跟踪路由)
ping 命令不显示从源到目的地的路由。
如果与主机的连接丢失,这将非常有用,因为我们可以了解连接在哪个点丢失。
tracert 或traceroute 命令的工作方式与ping 命令非常相似。这样做的优点是它显示了数据包所经过的路径,从而显示了其路由。
就像大多数 Linux 发行版中都安装了 ping 命令一样。基本语法如下:
traceroute [hostname/IPaddres]
这样,我们就可以看到数据包所采用的路线。
如果 ping 失败则运行命令
假设您希望在 ping 命令失败时收到警报。为此,您需要将 ping 命令合并到 bash 脚本中以设置所需的条件。
例如,此 shell 脚本允许您检查 ping 命令是否失败:
#! /bin/bash
ping -c 1 [host]
If [ $? -eq 0]; then
#Your_command_here
Fi
设置 ping 数据包大小
ping 命令发送给主机的数据包的默认大小为 56 字节。它的值足够低,不会影响网络的运行。
但是,可以将其更改为其他值。为此,只需添加 -s 选项和所需的数据包大小即可。
例如:
ping -s [packet_size] hostname/IP
如果您希望数据包大小为 100 字节,只需使用以下命令:
ping -s 100 192.168.1.1
请记住,它可能会因 MTU 的不同而略有不同。
禁用 ping 命令
如果我们负责维护网络,我们可能希望随时禁用 ping 响应。我们可以根据需要暂时或永久地进行此操作。
如果我们想暂时停用它,以 root 用户身份使用此命令就足够了:
$ su
$ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
这将禁用 ping 命令响应,但仅限于您重新启动系统。
如果你想永久执行此操作,则必须编辑以下文件
/etc/sysctl.conf
并添加下一行:
$ nano /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1
然后保存文件并退出。要应用更改,请使用以下命令:
$ sysctl -p
这将禁用 ping 命令或 ICMP 数据包的响应。
结论
在这篇文章中,我们详细解释了 ping 命令在 Linux 上的工作原理。从它的实用性到禁用它。 Ping 是最容易使用的命令之一。
这使得负责网络运营的人员知道问题出在哪里,以便他可以采取行动。