IPv6 ping 连接:Android 上的无效参数

12

为什么我的Android开发设备无法使用ping6?

在Android开发设备上使用ping6。

bullhead:/ # ping6 fe80::405a:e0a5:e054:cbde
connect: Invalid argument
2|bullhead:/ # ping6 -I wlan0 fe80::405a:e0a5:e054:cbde                                                                                                                                                           
PING fe80::405a:e0a5:e054:cbde(fe80::405a:e0a5:e054:cbde) from fe80::7af8:82ff:fea2:3210 wlan0: 56 data bytes
ping: sendmsg: Invalid argument
^C
--- fe80::405a:e0a5:e054:cbde ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

1|bullhead:/ # ping6 -I wlan0 fe80::405a:e0a5:e054:cbde@20                                                                                                                                                        
unknown host

在Android开发中使用ifconfig命令。

wlan0     Link encap:Ethernet  HWaddr 78:f8:82:a2:32:10
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0 
          inet6 addr: fe80::7af8:82ff:fea2:3210/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5174 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:2951 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:3000 
          RX bytes:1883684 TX bytes:628725 

在我的桌面上运行ifconfig命令。


wlp8s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.105  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::405a:e0a5:e054:cbde  prefixlen 64  scopeid 0x20<link>
        ether 30:52:cb:6d:b1:2f  txqueuelen 1000  (Ethernet)
        RX packets 681081  bytes 913125757 (913.1 MB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 375064  bytes 49389468 (49.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在我的桌面电脑上ping6 fe80::7af8:82ff:fea2:3210。

andrey@andrey-Lenovo-ideapad-Y700-17ISK:~$ ping6 fe80::7af8:82ff:fea2:3210
PING fe80::7af8:82ff:fea2:3210(fe80::7af8:82ff:fea2:3210) 56 data bytes
64 bytes from fe80::7af8:82ff:fea2:3210%wlp8s0: icmp_seq=1 ttl=64 time=268 ms
64 bytes from fe80::7af8:82ff:fea2:3210%wlp8s0: icmp_seq=2 ttl=64 time=91.8 ms

在我的桌面上执行ping6命令。广播地址

andrey@andrey-Lenovo-ideapad-Y700-17ISK:~$ ping6 FF02::1
PING FF02::1(ff02::1) 56 data bytes
64 bytes from fe80::405a:e0a5:e054:cbde%wlp8s0: icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from fe80::8616:f9ff:fe48:7a06%wlp8s0: icmp_seq=1 ttl=64 time=107 ms (DUP!)
64 bytes from fe80::b6ce:f6ff:fedf:b4af%wlp8s0: icmp_seq=1 ttl=64 time=112 ms (DUP!)
64 bytes from fe80::7af8:82ff:fea2:3210%wlp8s0: icmp_seq=1 ttl=64 time=200 ms (DUP!)

1
不确定为什么这个问题被踩了,它是一个好问题。它没有被编辑过,所以之前也不可能有更糟糕的版本。好吧,现在它又回到了0。 - trysis
2个回答

19

在Android上,请使用以下语法:

ping6 fe80::405a:e0a5:e054:cbde%wlan0

由于这是一个链路本地地址,并且您的Android设备有多个接口(至少有Wi-Fi和移动网络),因此您需要告诉设备您要使用哪个接口/链接来使用该链路本地地址,所以必须添加 %wlan0。


由于某些原因,它在安卓上无法工作。 ping6 -I wlan0 是相同的(请参见问题中包含的 ping6 输出)。 - Andrey Egorov
你的错误信息是可以预料的:在你的问题中,你从未编写正确的命令行,使用 ping6 IP_ADDRESS%INTERFACE_NAME。你使用 -I 参数或者像这样奇怪格式的地址:fe80::405a:e0a5:e054:cbde@20(这个“@20”是什么?)。在我的 Android 设备上(Galaxy S2、Nexus 5X),我编写的语法可以正常工作。 - Alexandre Fenyo
@20 是作用域 ID。 - Andrey Egorov
为什么你不想尝试一下,在你的问题中,使用指定的语法 ping6 fe80::405a:e0a5:e054:cbde%wlan0 - Alexandre Fenyo
bullhead:/ $ ping6 fe80::405a:e0a5:e054:cbde@wlan0 unknown host - Andrey Egorov
你的命令有误:你明确想要写@而不是%...如果你系统地拒绝检查人们要求你尝试的内容,它可能永远不会起作用。 - Alexandre Fenyo

-3

使用此命令进行ping操作可帮助您对IPv6地址进行ping测试

"system/bin/ping6 -c " + pingCount + " " + "2405:200:1601:c2ff::86"

IPv6地址为- 2405:200:1601:c2ff::86


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接