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

硬件是这样的:

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

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

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


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

你可以做几件事。 假设你有从笔记本电脑到覆盆子的单一以太网连接,那么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选项执行主机发现(在nmap -e eth3 -sn 10.42.0.0/24发送ARP请求到广播MAC地址),在接口上由-e选项指定。 10.42.0.0/24是网络的CIDR表示法。 非常简单。
  • Wireshark还可用于捕获以太网接口上的数据包。 当然,你的Raspberry必须首先发送一些数据包才能捕获它们,所以如果你没有“健谈”的覆盆子,它可能无法工作。 但是,您可以开始捕获,通过UDP协议进行过滤,拔掉并插回Raspberry。 您应该看到DHCP请求和响应

    在此处输入图像描述

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

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

     bash-4.3$ cat /var/lib/misc/dnsmasq.leases 1479095355 b8:27:eb:96:38:91 10.42.0.40 localhost * 

    请在此处查看我的相关问题: 未找到覆盆子pi的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') 

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

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

核心部分是:

安装nmap:

 apt-get install nmap 

执行ping扫描:

 nmap -sn  

例如:

 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 

如果有无线网络,我有时会使用移动应用程序: https : //play.google.com/store/apps/details? id = aua.com.streamsoft.pingtools