我有一个运行小型 HTTP 服务器的 IoT 设备,我可以通过以太网访问它。
我的以太网通过 192.168.1.3 路由,并且手动配置。
当我的 Wi-Fi 关闭时,我可以毫无问题地访问该设备:
curl 192.168.1.2/?connect
response OK
这是我的 Wi-Fi 关闭且以太网连接(en4)时路由表的内容:
netstat -nr
Routing tables
Internet:
Destination Gateway Flags Netif Expire
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#7 UCS en4 !
192.168.1 link#7 UCS en4 !
192.168.1.1 link#7 UHLWI en4 !
192.168.1.2 2:4c:db:14:60:9a UHLWIi en4 1174
192.168.1.3/32 link#7 UCS en4 !
192.168.1.3 5c:85:7e:3e:99:f4 UHLWI lo0
192.168.1.99 link#7 UHRLWI en4 !
192.168.1.219 link#7 UHRLWI en4 !
192.168.1.226 link#7 UHRLWI en4 !
192.168.1.230 link#7 UHRLWI en4 !
224.0.0/4 link#7 UmCS en4 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI en4
255.255.255.255/32 link#7 UCS en4 !
只要我只使用以太网,一切都会正常。但是,一旦我激活 Wi-Fi,我就会失去连接,无法再访问我的设备。Curl 挂起并超时。
这是激活我的 Wi-Fi(en0)后的路由表内容:
netstat -nr
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 192.168.1.1 UGScg en0
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#4 UCS en0 !
169.254 link#7 UCSI en4 !
192.168.1 link#4 UCS en0 !
192.168.1 link#7 UCSI en4 !
192.168.1.1/32 link#4 UCS en0 !
192.168.1.1 ac:d5:64:fe:e2:e7 UHLWIir en0 1185
192.168.1.2 link#4 UHLWIi en0 !
192.168.1.3/32 link#7 UCS en4 !
192.168.1.3 5c:85:7e:3e:99:f4 UHLWIi lo0
192.168.1.99 60:ab:d2:fb:73:2f UHLWIi en0 1154
192.168.1.184/32 link#4 UCS en0 !
192.168.1.185 84:f7:3:a9:83:e0 UHLWI en0 1183
192.168.1.213 34:b4:72:f:ab:94 UHLWI en0 1176
192.168.1.219 d4:f5:47:29:3b:3c UHLWIi en0 1154
192.168.1.226 1c:53:f9:4:32:ff UHLWIi en0 1150
192.168.1.230 a4:77:33:9a:1b:30 UHLWIi en0 1185
192.168.1.255 ff:ff:ff:ff:ff:ff UHLWbI en0 !
192.168.1.255 ff:ff:ff:ff:ff:ff UHLWbI en4 !
224.0.0/4 link#4 UmCS en0 !
224.0.0/4 link#7 UmCSI en4 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en4
255.255.255.255/32 link#4 UCS en0 !
255.255.255.255/32 link#7 UCSI en4 !
我尝试设置一条静态路由,将我的物联网设备映射到以太网网关(en4),这会将以下行添加到路由表中:
192.168.1.2 192.168.1.3 UGHS en4
但我仍然没有收到设备的响应。
我怀疑我的 HTTP 调用是通过我的 Wi-Fi 路由的,而不是到达我的以太网连接。
如何配置我的路由表以确保流量通过以太网发送到我的设备?
答案1
听起来您的 IoT 设备和 Mac 的以太网接口位于独立的以太网 LAN 上,它实际上并没有连接到您的 Wi-Fi 所连接的更大的家庭 LAN。
不幸的是,您对两个网络使用了相同的 IP 子网:192.168.1.0/24 子网(包括 192.168.1.0 - 192.168.1.255 范围内的所有地址)。因此,您告诉 Mac,其 Wi-Fi 和以太网端口连接到同一个网络(子网),但实际上并非如此。
如果可以,请将您的 IoT 设备连接到家庭 LAN。如果这不方便,请更改 IoT 设备的 IP 地址,将其放在不同的子网上,以免与家庭 LAN 冲突。例如,将第三个八位字节从“1”更改为“2”。因此,将您的 IoT 设备放在 192.168 上。2.2/24,并将 Mac 的以太网接口置于 192.168.2.3/24。(顺便说一句,“/24” 是子网掩码 255.255.255.0 的简写形式)