我正在尝试使用 USB 加密狗将我的 Raspberry Pi(型号 B,修订版 2.0)连接到我的路由器。使用 raspi-config,它似乎在 pi 端工作,ifconfig 产生:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.100.102.188 netmask 255.255.255.0 broadcast 10.100.102.255
inet6 fe80::c33b:ae6:8b40:dc28 prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:c2:e8:a4 txqueuelen 1000 (Ethernet)
RX packets 158 bytes 19362 (18.9 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 133 bytes 20949 (20.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.100.102.221 netmask 255.255.255.0 broadcast 10.100.102.255
inet6 fe80::a0e7:13f2:ba6e:cf2b prefixlen 64 scopeid 0x20<link>
ether 00:36:76:55:54:a2 txqueuelen 1000 (Ethernet)
RX packets 214 bytes 39050 (38.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 45 bytes 5948 (5.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
但查看我的路由器,似乎两个 IP 地址都与以太网端口相关:
Hostname IP address MAC address Type Port
pi-1 10.100.102.221 10.100.102.188 b8:27:eb:c2:e8:a4 Ethernet 3
pi-1 00:36:76:55:54:a2 Wireless-2.4GHz
这真的很奇怪,因为两个接口都处于“绿色”状态,但 wifi IP 却以某种方式分配给以太网。
如果我断开 LAN 电缆,两个地址都会消失,并且 pi 将无法访问。
** 我在另一台 Pi(Pi 2)上测试了 USB,运行正常
更新 1
这是拉西比安
uname -a
Linux pi-1 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l GNU/Linux
cat /etc/network/interfaces (没有改变)
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
lsb_release
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
更新 2
这变得越来越奇怪了,仔细观察我的路由器连接设备,我发现 pi 在 wifi 上获取了 IP,然后相同的 IP 地址移动到了以太网 - 令人困惑
答案1
如果没有实际调查的话我无法确定地回答,但这是我的猜测:
当路由器或 LAN 上的其他主机尝试访问时,
10.100.102.221
它会向该地址发送 ARP 查询,请求转换为 MAC 地址。(查询本身是广播的,因为 MAC 地址当然是未知的然而。)路由器的以太网和 Wi-Fi 桥接为单个子网和一个广播域。因此,相同的广播查询会到达属于网络的所有接口(eth0 和 wlan0)上的 Raspberry。
在 Linux(以及许多其他操作系统)上,IPv4 地址被认为属于主持人而不是接口,所以树莓派响应全部收到查询 – 即使它不是保存地址的接口。
路由器收到两个 ARP 回复:一个通过以太网,声明
10.100.102.221 is at b8:27:eb:c2:e8:a4
,另一个通过 Wi-Fi,声明10.100.102.221 is at 00:36:76:55:54:a2
。由于以太网的延迟通常比 Wi-Fi 低,因此第一个回复到达得更快,而路由器会将这个回复存储在其 ARP 缓存中。路由器的表似乎是根据其 ARP 缓存和桥接主机缓存的内容构建的,并且由于两个 IP 地址的 ARP 回复通过以太网更快地到达,因此它们显示在以太网端口下。
在 Linux 上,可以通过 sysctl 更改第 3 点中的行为:
sysctl net.ipv4.conf.all.arp_ignore=1