![获取直连电脑的 IP 地址](https://linux22.com/image/1474837/%E8%8E%B7%E5%8F%96%E7%9B%B4%E8%BF%9E%E7%94%B5%E8%84%91%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80.png)
我使用直接以太网电缆将我的工作计算机与另一台计算机连接起来。另一台机器是台式计算机,没有连接任何外围设备(包括键盘、鼠标和显示器),我想使用 RDP 和 SMB 访问它。IP 地址是自动配置的,因此它会在 范围内获取某个地址169.254.x.x
。
我可以等到 Windows 识别另一台机器或扫描 IP 地址,但两者都需要很长时间且不可预测的时间。有没有更快的方法来识别直接以太网电缆另一端的机器?我曾考虑过制作广播“以太网 ping”和反向 ARP,但找不到有关此技术的任何说明。
答案1
当你将两台计算机连接在一起时,它们会尝试查找 DHCP 服务器。几秒钟后,请求将超时,计算机将为自己分配一个自动配置的地址。然后主机将随机为自己分配一个本地链路 IP 地址, 广播通过网络发送 arp 请求,查看其是否正在使用
以上是重写摘要https://en.wikipedia.org/wiki/Link-local_address
我们可以用<任意>数据包捕获工具来捕获这些数据包并打印这些 ARP 请求的 IP 地址。
使用 wireshark GUI 捕获 arp 数据包(所有平台)
- 在所有接口上捕获:是(或者,如果您理解,请选择正确的接口)
- 捕获过滤器:arp
- 开始捕获并在右栏中查找你的电脑和其他电脑的 IP 地址
使用 cli tcpdump 捕获 arp 数据包(在 Linux 上测试)
- 启动/登录终端界面
- 运行程序“sudo tcpdump arp”
- 您的电脑和其他电脑的 IP 地址将显示在屏幕上
答案2
广播 IP ping 可能会起作用 – 并非所有系统都会响应它,但有些系统在 169.254 模式下会响应。尝试ping 169.254.255.255
(需要-b
在 Linux 上),或ping ff02::1
(需要ping6
在 Linux 上,并且可能需要诸如 之类的范围ff02::1%eth0
)。
如果计算机运行的是 Windows 并且您知道计算机名称,则直接发送 NetBIOS 名称查询(使用nbtstat -a
)可能会有效。我不知道 LLMNR 等效方法。
169.254 自动配置涉及发送一些带有主机自身地址的 ARP 探测 - 您可以在 Wireshark、tshark、tcpdump 中看到这些。
“以太网 ping”存在,但仅在以太网级别起作用,它不会告诉您有关 IP 的任何信息。(它有时在 NIC 本身中实现,但大多数情况下根本没有实现。)
“反向 ARP” 也存在,但几乎从未真正实现 - 其主要用途被 BOOTP 和后来的 DHCP 所取代。
答案3
如果您将计算机配置为从 DHCP 服务器获取 IP 地址,那么显然网络中必须有 DHCP 服务器。假设您使用直通电缆(交叉)将两台计算机相互连接,则没有 DHCP 服务器,因此 Windows 会创建一个假的随机 IP 地址。因此,需要很长时间才能找到对方,因为没有服务器为您管理连接。
最好的方法是添加一个带 DHCP 的路由器,因为它可以显著加快速度。但如果你不想为此花钱,你的第二个最佳选择是手动将两台机器的 IP 地址配置为 ,并192.168.0.1
使用192.168.0.2
子网掩码255.255.255.0
答案4
您可以将您的 PC 设置为 DHCP 服务器。
http://www.dhcpserver.de/cms/- 是我使用的。只需一分钟即可设置,而且效果很好。
只需为您的以太网卡提供一个静态 IP 地址(如:)169.254.1.1
和一个子网(如255.255.0.0
:),无需其他任何内容。
在前面提到的应用程序中,选择以太网 NIC 作为您的 DHCP 服务器适配器。
运行 DHCP 服务器应用程序,重新启动您正在搜索 IP 的服务器或设备,一旦启动,它将从 DHCP 服务器定义的范围内获得一个 IP 地址。然后,您可以使用 DHCP 服务器附带的 Web 界面查看新服务器已分配的 IP 地址,或者简单地 ping 扫描 DHCP 范围内的所有 IP。
快速、简单、直观。至少我是这么认为的。