我可以用代理 ping 吗?

代理是一种服务器或者应用程序,它充当网络上两点之间连接的中介。

是中间人直接向另一个节点发出请求。

问题是 Ping 命令需要节点之间的直接网络连接。

因此,如果背后有代理,Ping 命令一般无法正常工作。

一个可能的解决方案是许多网站都提供 Ping 命令服务。
另一方面,对于 ping 命令的某些任务,可以使用 curl 命令。

此外,我们可以使用 VPN 来隐藏 IP。

但是,在某些 Linux 发行版中,默认情况下不安装此命令。
先验证一下,如果没有安装再安装。

使用 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 值已知,则可用于改善网络行为,尤其是在大型甚至城域网络中。

ping 命令如何工作?

在 Linux 中,ping 命令的功能很容易解释。
该命令将一系列小数据包发送到特定节点。

我们可以使用 IP 地址或者主机名测试此节点。
然后,在我们发送数据包后,该命令会验证并测量从目标节点接收响应所需的时间。

正如我们所料,响应时间可能会因连接点之间的地理位置或者两个节点之间使用的任何硬件等条件而受到影响。

例如,在有线专用网络中,与具有多个路由器或者网桥的网络相比,该命令将获得更好的时间。

但是,该命令将生成的信息将判断网络的好坏。

命令的语法如下:

ping [options] [destination]

ping 命令的一些最有用和最常用的选项如下:

  • -c:使用此选项,我们可以指定要发送的数据包数量。
  • -s:此选项允许我们更改数据包的默认大小。
  • -v:详细模式。
  • -w:指定命令执行结束的时间(以秒为单位)。无论命令发送或者接收了多少数据包。
  • -i:使用此选项,我们可以指定要使用的网络接口。

目标节点可以由 IP 地址或者主机名指定。

设置ping包大小

ping 命令向主机发送的默认数据包大小为 56 字节。
这是一个足够低的值,不会影响网络的运行。

但是,可以将其更改为其他值。
为此,只需添加具有所需数据包大小的 -s 选项。

例如:

ping -s [packet_size] hostname/IP

如果我们希望数据包大小为 100 字节,只需使用以下命令:

ping -s 100 192.168.1.1

请记住,它可能会因 MTU 的不同而略有不同。

Linux ping 命令示例

Linux ping 命令是系统管理员和网络管理员最有用的工具之一。

ping 命令是处理网络的最基本工具之一。
其目的是诊断网络连接错误。

通过这种方式,可以知道网络节点是否已失去连接。
另一方面,执行其他诊断任务也很有用,例如:

  • 测量两个网络节点进行通信所花费的时间。
  • 我们还将能够识别特定主机的 IP 地址。我们可以在 Internet 和专用网络中使用此功能。
  • 可以在 bash 脚本中使用 ping 命令对网络节点执行自动检查。
  • 它允许知道是否与特定设备有连接。

如我们所见,它是管理网络和服务器的必要命令。

禁用 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 第 2 层(使用 arping)

使用 ping 命令,我们将能够在知道网络中特定节点的 IP 地址的情况下执行测试。
这是因为 ping 命令适用于 OSI 模型(网络)的第 3 层。

另一方面,可以使用 Linux 中内置的另一个命令作为 arping。
此命令的工作方式与 ping 非常相似,但适用于 OSI 模型的第 2 层。

命令的语法如下:

$ sudo arping [Ip_address]
$ sudo arping 192.168.1.1

Ping 特定端口

有时我们想知道节点上的特定端口是否处于活动状态。
但是,ping 命令不提供此功能,但可以使用 Linux 上默认安装的 telnet 命令来实现。

为此,只需使用以下语法:

telnet [host] [port]
telnet google.com 80

这样,就可以以原始方式ping 网络节点的特定端口。

如何结束ping?

默认情况下,Linux 上的 ping 命令会不断地向主机发送测试包。
但是,一旦信息可用,就必须终止 ping 命令的执行。

为此,只需按以下键:

CTRL + C

在特定计数后结束

我们可以将数据包计数限制为 10 或者其他。
当它发送完十个数据包时,它将停止。

ping -c 10 [host]

Ping 给定子网上的所有主机

我们可以向网络或者子网上的所有主机发送 ping 信号。
为此,添加选项 -b 并 ping 以 255 结尾的任何网络的广播 IP 地址就足够了。

例如:

ping -b -c 4 192.168.1.255

因此,如果目的地不可达,可能他们阻止了 ping 命令发送的 ICMP 数据包,或者可能存在网络问题或者路由表上的问题。

ping 命令在 Linux 上位于何处?

在像 Linux 这样的 Unix 派生系统中,通常可以在路径中找到二进制文件:

/usr/bin/

在这个目录中,你会发现许多我们在终端上用作命令的二进制文件。
在 Linux 家族的其他操作系统中,也可以将其放在

/usr/sbin/

目录。

因此,我们可以使用 ls 命令来检查它:

$ ls /usr/bin | grep ping

在此图像中,我们可以看到 ping 命令位于

/usr/bin/

另一种方法,我们可以使用 which 命令在 Linux 上定位任何命令:

$ which ping

它将显示以下内容:

/usr/bin/ping

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 命令使用目标的 IP 地址或者主机名将测试数据包发送到目标。
还应该注意的是,Linux 上的大多数 ping 实现都不会反向解析 DNS。

例如,如果我们通过添加 IP 地址使用 Ping 命令,它只会在输出中返回主机的 IP 地址。
相反,如果我们指定了一个主机名,它将解析它并在输出中显示 IP。

检查以下命令的输出:

$ ping google.com

Ping 路由(使用 traceroute)

ping 命令不显示从源到目的地的路由。

这在与主机的连接丢失的情况下非常有用,因为我们可以了解连接丢失的时间。

tracert 或者 traceroute 命令的工作方式与 ping 命令非常相似。
这样做的好处是它显示了数据包所走的路径,从而显示了它的路由。

就像大多数 Linux 发行版中都安装了 ping 命令一样。
基本语法如下:

traceroute [hostname/IPaddres]

带时间的ping

虽然 ping 命令显示了有用的信息,但它可能有点简单。
但是,可以稍微修改命令的操作,使其显示数据包发送的日期。

我们需要安装 ccze 包。

ping [host] | xargs -n1 -i bash -c 'echo `date +%F\ %T`" {}"' | ccze

它将显示了每个发送数据包的时间。

如果 ping 失败则运行命令

假设我们希望在 ping 命令失败时收到警报。
为此,我们需要将 ping 命令合并到 bash 脚本中以设置所需的条件。

例如,这个 shell 脚本允许我们检查 ping 命令是否失败:

#! /bin/bash
ping -c 1 [host]
If [ $? -eq 0]; then
    #Your_command_here
Fi
日期:2020-07-15 11:16:45 来源:oir作者:oir