如何在linux上使用arping命令

Linux arping命令类似于ping,但仅适用于本地网络。它的优势在于它在较低的网络级别上运行,有时当ping无法响应时,它会得到响应。下面是如何使用它。...

Linux arping命令类似于ping,但仅适用于本地网络。它的优势在于它在较低的网络级别上运行,有时当ping无法响应时,它会得到响应。下面是如何使用它。

arp协议

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

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

What Is a Data Packet?
RELATEDWhat Is a Data Packet?

地址解析协议是将IP地址映射到MAC地址的中间人。路由器通常是负责在网络中封送和定向网络数据包的设备,它建立并维护一个ARP表,将IP地址与MAC地址联系起来。

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

当一个新设备连接到您的网络时,它会被分配一个IP地址,但这不足以实际将流量路由到它。路由器需要获得MAC地址,这是拼图中缺失的部分。但是,由于IP地址本身没有足够的信息来将数据包路由到设备,所以第22个问题是它不能使用IP地址来查询硬件以获得MAC地址。

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

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

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

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

相关:互联网的基础:TCP/IP步入40

arping命令

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

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

在Ubuntu上,命令是:

sudo apt install arping

如何在linux上使用arping命令

在Manjaro上,您需要键入:

sudo pacman -Sy arping

如何在linux上使用arping命令

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

sudo arping 192.168.1.17

如何在linux上使用arping命令

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

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

ping 192.168.1.17

如何在linux上使用arping命令

您还可以将设备的网络名称与arping一起使用。

sudo arping fedora-36.local

如何在linux上使用arping命令

您可以使用-c(count)选项告诉arping在一组请求后停止。这个命令告诉arping尝试两次,然后停止。

sudo arping -c 2 192.168.1.18

如何在linux上使用arping命令

如果计算机中有多个网络接口,可以使用-I(接口)选项告诉arping使用哪个接口。

您可以使用ip-link命令列出网络接口。

ip link

如何在linux上使用arping命令

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

这个命令告诉arping使用我们选择的界面,而不是自己选择。

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

如何在linux上使用arping命令

在脚本中使用arping

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

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

#!/bin/bash

for ((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

该脚本接受两个命令行参数。它们被用作要使用arping的范围内IP地址的最后一个八位字节。因此,如果将20和30传递给脚本,循环将从192.168.1.20开始,并在使用IP地址192.168.130后终止。

这些参数在脚本中以$1和$2的形式访问。它们在C样式的for循环中使用。在for循环的每次旋转时,$device都被设置为范围内的下一个IP地址。

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

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

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

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

if语句测试$-一个变量,保存最后一个结束的进程的退出代码,以查看它是否为零。如果是,它使用echo将成功消息打印到终端窗口。如果测试失败,那么grep找不到任何字符串,这意味着ARP请求失败。

使用chmod命令和+x选项使脚本可执行。

chmod +x scan-range.sh

如何在linux上使用arping命令

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

sudo ./scan-range.sh 15 20
ping 192.168.1.15

如何在linux上使用arping命令

就像你在任何网络上一样,我们既有成功也有失败。但请注意,尽管192.168.1.15处的设备响应第二层ARP请求,但它没有响应第三层ping请求。

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

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

更深的洞察力

网络洋葱有很多层。如果ping没有给你带来任何帮助,那么就放下一层,看看arping能告诉你什么。

相关:如何使用Nmtui管理Linux Wi-Fi网络

  • 发表于 2022-10-02 17:14
  • 阅读 ( 18 )
  • 分类:互联网

你可能感兴趣的文章

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 309 )

如何在android和termux上使用linux命令行

...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...

  • 发布于 2021-03-18 07:26
  • 阅读 ( 376 )

如何在windows10上获得linux bash shell

... 如何在windows10上安装linux bash shell ...

  • 发布于 2021-03-21 11:48
  • 阅读 ( 288 )

linux下如何重命名文件

要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...

  • 发布于 2021-03-22 02:48
  • 阅读 ( 276 )

linux正在吃掉你的公羊吗?如何管理你的记忆

...的内存。为了理解到底发生了什么,我们必须看看Linux是如何管理内存的。 ...

  • 发布于 2021-03-23 08:31
  • 阅读 ( 317 )

如何在linux上使用groupadd管理用户组

... 相关:如何在Linux中更改密码 ...

  • 发布于 2021-03-26 17:15
  • 阅读 ( 187 )

如何在linux中添加用户

想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...

  • 发布于 2021-03-26 23:29
  • 阅读 ( 336 )

在linux中,“bash”是什么意思?

...在这篇短文中,我们将探讨Bash是什么,它做什么,以及如何开始使用它。 ...

  • 发布于 2021-03-28 13:14
  • 阅读 ( 454 )

如何在linux上使用wireshark过滤器

...的结果变得很容易。 如果你不了解Wireshark中的过滤器是如何工作的,你就永远不会脱离第一档,限制软件的功能。 安装wireshark 安装Wireshark时,系统会询问使用非根帐户的用户是否应该能够捕获网络跟踪。对这件事说不可能是个...

  • 发布于 2021-04-02 00:47
  • 阅读 ( 161 )

如何使用linux上的nmap查看网络上的所有设备

...道什么连接到你的家庭网络吗?你可能会感到惊讶。了解如何在Linux上使用nmap进行检查,这将允许您浏览连接到网络的所有设备。 你可能会认为你的家庭网络非常简单,深入研究它没有什么可以学到的。你也许是对的,但很可...

  • 发布于 2021-04-03 09:47
  • 阅读 ( 291 )
pye45741
pye45741

0 篇文章

相关推荐