我有一个开放网状网络接入点连接到同一路由器(Aerohive BR100)比安讯士相机。我想在知道相机的 MAC 地址的情况下,从 Open Mesh 传感器内部自动发现相机的 IP。
这个糟糕的 Ascii 艺术展示了事物的连接方式:
+================= Aerohive router ================+
| ____ ____ ____ ____ ____ |
| [..] [..] [..] [..] [..] |
|_____||______||______________||____________||_____+
|| || || ||
Axis OpenMesh borrajax-pc DSL
camera access pt. (my laptop) connection
连接摄像头和 OpenMesh 设备的路由器按以下形式分配 IP 地址: 10.200.255.XXX/24
如果我从 Aerohive 路由器上拔下笔记本电脑 (borrajax-pc) 并将其连接到 Open Mesh 传感器提供的 WiFi 网络,我的 IP 变为 10.223.176.150 (这没问题,因为它是 Open Mesh 传感器提供的 IP ,那是我的路由器/网关...我的老板, 毕竟)。无论如何...此时,我可以 ssh 进入传感器本身(正如我所说,它是我的网关):
borrajax@borrajax-pc:~$ ssh [email protected]
[email protected]'s password:
BusyBox v1.19.4 (2013-01-08 11:35:01 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----. _ | |.-----.----| |__
| - || _ | -__| | |_| | | | || -__|__--| |
|_______|| __|_____|__|__| |__|__|__||_____|____|__|__|
|__| http://www.open-mesh.com ---------------------
(c) Open-Mesh, Inc. All rights reserved.
firmware-ng: fw-ng-r443
Powered by these open source projects:
http://www.openwrt.org http://kokoro.ucsd.edu/nodogsplash
http://coova.org http://www.open-mesh.org
-------------------------------------------------------------
root@BorrajaX_Test_Sensor:~#
但是当我在传感器内部时,其接口都没有像外部 Aerohive 路由器提供的地址 (10.200.255.XXX/24),因此我无法在一跳(或跳转)中看到我的邻居。
为了以防万一,这里有一个接口列表及其分配的 IP 地址:
root@BorrajaX_Test_Sensor:~# ifconfig
bat0
bat0.0
bat0.1
bat0.2 inet addr:5.17.32.120 Bcast:5.255.255.255 Mask:255.0.0.0
bat0.3
br-lan1
br-lan2 inet addr:192.168.83.2 Bcast:192.168.83.255 Mask:255.255.255.0
br-meship inet addr:10.223.168.1 Bcast:10.223.171.255 Mask:255.255.252.0
br-priv inet addr:10.223.172.1 Bcast:10.223.175.255 Mask:255.255.252.0
br-pub inet addr:10.223.176.1 Bcast:10.223.179.255 Mask:255.255.252.0
eth0
eth1
lo inet addr:127.0.0.1 Mask:255.0.0.0
mesh0
mon0
pub0
如您所见,没有一个 IP 看起来像我的路由器提供的 IP(10.200.255.XXX)
现在,如果我通过其他方式找到相机的IP,并且我发现所述IP是,例如,10.200.255.204这就是传感器内发生的情况。
root@BorrajaX_Test_Sensor:~# traceroute 10.200.255.204
traceroute to 10.200.255.204 (10.200.255.204), 30 hops max, 38 byte packets
1 192.168.83.1 (192.168.83.1) 2.265 ms 0.608 ms 1.378 ms
2 10.200.255.204 (10.200.255.204) 3.227 ms 1.265 ms 1.092 ms
所以它会跳过br-lan2界面并正确“看到”它。我什至可以 ping 通它。
root@BorrajaX_Test_Sensor:~# ping 10.200.255.204
PING 10.200.255.204 (10.200.255.204): 56 data bytes
64 bytes from 10.200.255.204: seq=0 ttl=63 time=2.788 ms
但是 ARP 表没有注册映射 MAC <--> 10.200.255.204 (我猜测是因为它跳过了一次 192.168.83.1)
有什么办法吗琶音当邻居连接到与 Open-Mesh 设备本身相同的路由器时,该邻居是否是“邻居”?另外,正如我提到的,Aerohive 路由器分配给 Open-Mesh 设备的 IP 似乎以某种方式隐藏在 Open-Mesh 设备内部。有什么办法可以克服这种“隐藏性”吗?
PS:如果我从笔记本电脑上完成整个操作,效果很好:
第一:验证我的 IP 是否属于路由器分配的范围 (10.200.255.XXX)
borrajax@borrajax-pc:~$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 5c:f9:dd:52:10:78
inet addr:10.200.255.205 Bcast:10.200.255.255 Mask:255.255.255.192
[ . . . ]
第二:检查arp表:
borrajax@borrajax-pc:~$ arp -n
Address HWtype HWaddress Flags Mask Iface
10.200.255.193 ether e0:1c:41:30:ea:40 C eth0
没有相机!!
第三:fping 到整个 10.200.255.XXX 子网:
fping -g 10.200.255.1/24
10.200.255.193 is alive
10.200.255.204 is alive
10.200.255.205 is alive
ICMP Host Unreachable from 10.200.255.205 for ICMP Echo sent to 10.200.255.194
ICMP Host Unreachable from 10.200.255.205 for ICMP Echo sent to 10.200.255.19
[ . . . ]
第四:再次检查arp表:
borrajax@borrajax-pc:~$ arp -n | grep -v "incomplete"
Address HWtype HWaddress Flags Mask Iface
10.200.255.204 ether 00:40:8c:e3:df:aa C eth0
10.200.255.193 ether e0:1c:41:30:ea:40 C eth0
达达啊!!10.200.255.204 以太 00:40:8c:e3:df:aa 是相机