网络 - 与其他计算机共享 - 如何查找客户端的 IP 地址?

Aar*_*onD 8 networking lan ethernet raspberrypi

硬件是这样的:

  • 可通过 WiFi 上网的笔记本电脑。路由器几乎无法访问。
  • Headless Banana/Raspberry/Your-Favorite-Flavor Pi 需要一个 SD 镜像和一些额外的包。

因此,我在 Pi 和笔记本电脑之间使用了一条临时交叉电缆,将笔记本电脑的以太网端口设置为“与其他计算机共享”(*),对 SD 卡进行映像,然后启动 Pi。现在,Pi 有什么地址以便我可以通过 SSH 访问它?

我不必强制一个特定的地址,就像这个问题想要的那样。我只想知道它是什么。


(*) 网络通知->编辑连接... ->有线连接 1 ->编辑按钮-> IPv4 设置选项卡->方法 = 共享给其他计算机

Ser*_*nyy 7

你可以做几件事。假设您有从笔记本电脑到树莓派的单个以太网连接,那么arp-scan就足够了。首先,弄清楚您的以太网接口的名称是什么。就我而言,那是eth3. 因此,这里有一个例子:

bash-4.3$ sudo arp-scan -I eth3 --localnet
[sudo] password for xieerqi: 
Interface: eth3, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.42.0.40  b8:27:eb:96:38:91   (Unknown)

1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.459 seconds (175.46 hosts/sec). 1 responded
Run Code Online (Sandbox Code Playgroud)

在输出中你可以看到我的树莓派有 10.42.0.40 ip 地址。

arp-scan是非常简单的方法,不需要太多的汗水。也可以使用替代方法。以下是其中一些:

  • 知道网络的前 3 个八位字节(例如ip addr show eth3在我的情况下通过命令),您可以编写一个简单的脚本来 ping 主机范围。(有关执行此操作的 Python 脚本,请参见下文)。
  • fping是标准ping命令的替代,它允许探测主机范围
  • 您可以使用nmap多种方法来执行主机发现。特别是,这个命令:nmap -e eth3 -sn 10.42.0.0/24效果最好 - 它指示nmap仅在-sn选项指定的接口上执行带有选项的主机发现(在引擎盖下发送 ARP 请求到广播 MAC 地址)-e 。这10.42.0.0/24是网络的 CIDR 表示法。非常简单。
  • Wireshark也可用于捕获以太网接口上的数据包。当然,您的 Raspberry 必须首先发送一些数据包才能捕获它们,因此如果您没有“健谈”的树莓,它可能无法工作。但是,您可以开始捕获、通过 UDP 协议过滤、拔下并重新插入 Raspberry。您应该看到 DHCP 请求和响应到它

    在此处输入图片说明

  • 当主机从网络中出现/消失时,设备会随着时间的推移构建它们的 arp 表,因此您也可以使用arp -a命令。

  • 如果您使用的是标准 Ubuntu 并且没有安装任何备用 DHCP 服务器,您可以检查dnsmasq为您的设备分配了 IP 的租用文件。例如:

    bash-4.3$ cat /var/lib/misc/dnsmasq.leases 
    1479095355 b8:27:eb:96:38:91 10.42.0.40 localhost *
    
    Run Code Online (Sandbox Code Playgroud)

    在此处查看我的相关问题:找不到树莓派的 DHCP 租约


nmapWireshark如果你有连接到它的多个设备的以太网交换机的方法将是非常有用的。

由于我已经提到了使用 编写脚本ping,这里是一个:

bash-4.3$ sudo arp-scan -I eth3 --localnet
[sudo] password for xieerqi: 
Interface: eth3, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.42.0.40  b8:27:eb:96:38:91   (Unknown)

1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.459 seconds (175.46 hosts/sec). 1 responded
Run Code Online (Sandbox Code Playgroud)

这将 ping 我的网络 ( 10.42.0.x)的 256 个地址范围,并指示哪些主机已启动。ping 在 1 秒后超时,因此扫描所有内容需要 256 秒。如果您只有一个覆盆子,您可以编辑脚本以在 ip 响应 ping 时退出,从而加快进程。您还可以创建一定数量的线程。arp-scan然而仍然是更快的选择。

  • “如果你使用标准的 Ubuntu 并且没有安装任何替代的 DHCP 服务器......`cat /var/lib/misc/dnsmasq.leases`” 是的,而且有效!(实际上是 Lubuntu,但足够接近了。)谢谢! (2认同)