打开网易新闻 查看精彩图片

Linux 命令类似于,但仅适用于本地网络。它的优点是它在较低的网络级别上运行,有时在不能得到响应时得到响应。以下是如何使用它。

arping

ping

ping

ARP 协议

IP 地址是物联网设备的数字标签。它用作地址,以便适当的网络流量到达正确的设备。但局域网上的大多数设备都有动态IP 地址。也就是说,他们的 IP 地址可能会在下次启动时发生变化。

为了能够正确地将网络流量路由到适当的设备,必须采用将 IP 地址映射到媒体访问控制 (MAC) 地址的方案。MAC 地址是在设备制造时建立的唯一标识。IP 地址是一个 逻辑 地址。MAC 地址是 物理 地址。

地址解析协议是将 IP 地址映射到 MAC 地址的中间人。负责在您的网络中编组和引导网络数据包的设备(通常是路由器)构建并维护一个将 IP 地址与 MAC 地址联系起来的 ARP 表。

如果路由器需要将数据路由到它不知道的设备,它会发出 ARP 请求以获取新设备的 MAC 地址。

当新设备连接到您的网络时,它会被分配一个 IP 地址,但这还不足以将流量实际路由到它。路由器需要获取 MAC 地址,这是拼图中缺失的部分。但由于 IP 地址本身不足以将数据包路由到设备,因此Catch-22无法使用 IP 地址查询硬件以获取 MAC 地址。

开放系统互连模型将构成工作网络的技术分组为一系列层。没有低层,高层就无法运行。OSI 模型有七层。

  • 第 7 层是最顶层,即应用层。它向计算机用户提供信息并从他们那里接收信息。
  • 第 6 层是表示层。这可确保数据在进出网络格式时处于正确的格式或状态。加密和解密发生在这一层。
  • 第 5 层是会话层。会话是指两个或多个设备之间的网络连接。该层涉及诸如连接的启动、握手、超时和不再需要的连接中断等事务。
  • 第 4 层是传输层。这是以协调方式在网络中移动数据的层。该层关心诸如传输速率和数据量之类的事情。传输控制协议(TCP/IP中的 TCP)在这一层运行。
  • 第三层是网络层。这是路由和数据包转发发生的地方。它是 Internet 协议(TCP/IP 中的 IP)运行的层。
  • 第 2 层是数据链路层。它用于在可直接寻址的设备之间发送数据包,使用广播到每个设备或单播到特定 MAC 地址。
  • 第 1 层是物理层。这与物理基础设施有关,包括电缆、路由器和网络交换机。Wi-Fi 中使用的无线电波也属于这一类。

当路由器收到一个不在其表中的 IP 地址的数据包时,它会向整个网络发送一个广播数据包。它有效地询问“谁有这个 IP 地址?” 这是第二层消息,因此它不依赖于 IP 路由。

具有匹配地址的设备通过发回其 MAC 地址进行响应。该设备的 IP 地址和 MAC 地址可以添加到映射表中。现在可以将常规 IP 流量路由到设备,因为其 IP 地址和 MAC 地址之间的关系已建立并记录。

arping 命令

所有聪明的 ARP 东西都会在后台自动运行,构建和维护 ARP 表。该命令将 ARP 查询的一些功能带到终端窗口。它在 OSI 第 2 层运行,如果没有,它可以从设备请求响应。

arping

ping

在 Fedora 36上已经安装了,但我们需要在 Manjaro 21 和 Ubuntu 22.04 上安装它。

arping

在 Ubuntu 上,命令是:

sudo apt install arping

在 Manjaro 上,您需要输入:

sudo pacman -Sy arping

最简单的使用方法是使用 IP 地址。这必须是连接到本地网络的可直接寻址设备的地址。因为在第二层运行,所以不可能进行路由。您需要使用with 。

arping

arping

sudo

arping

须藤arping 192.168.1.17

打开网易新闻 查看精彩图片

按 Ctrl+C 停止。返回的信息是响应设备的 MAC 地址、请求的索引号以及请求完成的往返时间。

arping

arping

将输出与以下命令的输出进行比较。该命令返回有关网络数据包往返时间的更多信息。该命令为您提供的时间统计信息较少,但它确实包含设备的 MAC 地址。

ping

ping

arping

192.168.1.17

打开网易新闻 查看精彩图片

您还可以将设备的网络名称与.

arping

sudo arping fedora-36.local

打开网易新闻 查看精彩图片

您可以使用(count) 选项告诉 在设定数量的请求后停止。该命令告诉尝试两次然后停止。

-c

arping

arping

须藤arping -c 2 192.168.1.18

打开网易新闻 查看精彩图片

如果您的计算机中有多个网络接口,您可以使用(interface) 选项来告知要使用哪个接口。

arping

您可以使用该命令列出您的网络接口。

ip link

ip链接

打开网易新闻 查看精彩图片

这台电脑有三个接口。虚拟接口用作同一台计算机上软件之间内部连接的环回。在这里对我们没用。我们可以使用以太网连接或无线接口。

lo

enp3s0

wlan0

该命令告诉 使用我们选择的接口,而不是自己选择。

arping

sudo arping -c 2 -I enp3s0 manjaro-21.local

打开网易新闻 查看精彩图片

在脚本中使用 arping

通过在脚本中封装一个循环,我们可以让它在一系列 IP 地址上工作。复制此脚本中的文本并将其保存到名为“scan-range.sh”的文件中。

arping

您需要编辑脚本并将所有出现的 192.168.1 替换为您网络的 IP 地址。

#!/bin/bashfor ((device=$1; device<=$2; device++))do arping -c 1 192.168.1.$device | grep -E "1 response|1 packets received" > /dev/null if [ $? == 0 ]; then echo "192.168.1.$device responded." else echo "192.168.1.$device didn't respond." fi done

该脚本接受两个命令行参数。这些用作您要使用的范围的 IP 地址的最后一个八位组。因此,如果将 20 和 30 传递给脚本,则循环将从 192.168.1 开始。20并在使用 IP 地址 192.168.1 后终止。30.

arping

参数在脚本内部以和访问。这些用于 C 风格的循环。在循环的每次旋转中,设置为范围内的下一个 IP 地址。

$1

$2

for

for

$device

该脚本使用我们已经看到的相同格式,但这次我们只要求向范围内的每个设备发送一个 ARP 请求。

arping -c

命令的输出通过管道传输。

arping

grep

可以在您的脚本中简化语法。正在寻找两个字符串之一,“1 个响应”或“1 个收到的数据包”。这是因为测试计算机上有不同的版本并且它们使用不同的术语。如果找到这些短语中的任何一个,则其退出值将为零。

grep

grep

arping

grep

当您知道您的版本使用哪些短语时,您可以通过删除其他短语来简化语法。

arping

grep

该语句测试- 一个保存最后一个结束进程的退出代码的变量 - 看它是否为零。如果是,它用于向终端窗口打印一条成功消息。如果测试失败,则没有找到任何一个字符串,这意味着 ARP 请求失败。

if

echo

grep

使用命令和选项使您的脚本可执行。

chmod

chmod +x 扫描范围.sh

我们将运行它并扫描从 15 到 20 的 IP 范围。其中一些地址没有连接设备,因此我们应该会看到一些故障。记得使用. 我们还将尝试使用192.168.1.15 的设备。

sudo

ping

须藤 ./scan-range.sh 15 20

192.168.1.15

打开网易新闻 查看精彩图片

就像您在任何网络上一样,我们得到了成功和失败的混合。但是请注意,虽然 192.168.1.15 的设备响应了第二层 ARP 请求,但它不响应第三层 请求。

ping

如果您 p
ing 过设备并注意到故障,您可能会倾向于检查它是否已插入、在线以及是否可以 退出设备 192.168.1.15。

ping

但是您可以验证它是否已连接、在线和网络可访问。这将指导您进行故障排除以开始调查路由和 ARP 表问题。

arping

更深入地洞察

网络洋葱有很多层。如果没有让您到任何地方,请下拉一层,看看能告诉您什么。

ping

arping