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

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

硬件是这样的:

  • 笔记本电脑通过 WiFi 上网。路由器实际上无法访问。
  • 无头香蕉/覆盆子/您最喜欢的口味 Pi 需要 SD 图像和一些附加包。

因此,我在 Pi 和笔记本电脑之间安装了一个临时交叉电缆,将笔记本电脑的以太网端口设置为“与其他计算机共享”(*),对 SD 卡进行映像处理,然后启动 Pi。现在,Pi 的地址是什么,这样我就可以通过 SSH 进入它了?

我不需要强迫自己选择一个特定的地址,就像这个问题想要。我只是想知道它是什么。


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

答案1

您可以做几件事。假设您有一个从笔记本电脑到树莓派的以太网连接,那么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

在输出中您可以看到我的 Raspberry 有 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(在后台向广播 MAC 地址发送 ARP 请求) 。这是网络的 CIDR 表示法。很简单。-e10.42.0.0/24
  • Wireshark也可用于捕获以太网接口上的数据包。当然,Raspberry 首先必须发送一些数据包才能捕获它们,因此如果您没有“健谈”的 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 *
    

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


nmapWireshark如果您有一个连接了多个设备的以太网交换机,那么这些方法将非常有用。

由于我提到过使用 编写脚本ping,下面就是其中一个:

from subprocess import *
network = '10.42.0.'
for num in range(255):
    i = str(num)
    dn = open('/dev/null','w')
    try:
        print('checking ' + network + i)
        check_call(['ping', '-c','1', '-W',
                    '1','-q',network + i],stdout=dn)
    except CalledProcessError:
        pass
        #print('10.42.0.' + i + ' is down')
    else:
        print('>>> ' + network + i + ' is up')

这将对我网络 ( ) 的 256 个地址范围执行 ping 操作10.42.0.x,并指示哪些主机处于启动状态。ping 操作在 1 秒后超时,因此需要 256 秒才能扫描所有内容。如果您只有一个 Raspberry,则可以编辑脚本以在 IP 响应 ping 时退出,从而加快该过程。您还可以创建一定数量的线程。arp-scan然而,这仍然是更快的替代方案。

答案2

也许这个链接有用:https://www.raspberrypi.org/documentation/remote-access/ip-address.md

核心部分是:

安装 nmap:

apt-get install nmap

执行 ping 扫描:

nmap -sn <your-subnet>

例如:

nmap -sn 192.168.1.0/24

然后你将会得到类似这样的输出:

Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-10 12:46 GMT
Nmap scan report for hpprinter (192.168.1.2)
Host is up (0.00044s latency).
Nmap scan report for Gordons-MBP (192.168.1.4)
Host is up (0.0010s latency).
Nmap scan report for ubuntu (192.168.1.5)
Host is up (0.0010s latency).
Nmap scan report for raspberrypi (192.168.1.8)
Host is up (0.0030s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.41 seconds

有时如果有 WiFi,我也会使用移动应用程序:https://play.google.com/store/apps/details?id=ua.com.streamsoft.pingtools

相关内容