因此,我在嵌入式主板上使用 WiFi 芯片,并将其设置为请求者以连接到外部网络,并且我能够顺利完成此操作,但只是 ping 不通,我不确定这是否与网络中某些奇怪的安全层阻止 ping 有关。
// embedded wifi module's interface
wlan0 Link encap:Ethernet HWaddr 00:03:7f:61:a0:41
inet6 addr: fe80::203:7fff:fe61:a041/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:248 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3000
RX bytes:11332 (11.0 KiB) TX bytes:1468 (1.4 KiB)
// host machine's interface
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::7d07:dd6b:dc52:8b85%26
IPv4 Address. . . . . . . . . . . : 172.30.100.32
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.30.100.1
我从wifi模块发送了如下ping命令:
ping6 -I wlan0 fe80::7d07:dd6b:dc52:8b85%26
但这会导致 100% 的数据包丢失。
答案1
显示链路本地地址的区域索引取决于发送者。后面的部分告诉%
操作系统当地的发送数据包的接口——发送方实际上并不知道哪个远程接口将接收它们。
因此,对于你的情况,正确的地址是。“-I”选项不是必需的,因为地址具有相同的信息:fe80::7d07:dd6b:dc52:8b85%wlan0
ping6 fe80::7d07:dd6b:dc52:8b85%wlan0
相反方向,从 Windows 主机(WiFi 为接口 #26)到 Linux 板:
ping fe80::203:7fff:fe61:a041%26
(当使用 Socket API 编写程序时,getaddrinfo() 接受命名和数字区域说明符,但在其他情况下,您需要使用 if_nametoindex("wlan0") 手动转换它。)