【发布时间】:2018-09-08 18:13:24
【问题描述】:
我有小米红米 4X,带有根 Android 8.1.0 AospExtended-v5.3-OFFICIAL(但它也不适用于小米红米 4X - 在没有根的 Android 7 上)。
我在 Raspberry Pi(启用转发)和 IPv6 Hurricane 隧道上设置了 RADVD。 我的带有 Archlinux 的台式机和笔记本电脑与 IPv6(DualStack 和仅 IPv6)完美配合,但 2 小米无法工作(有 root 和没有它),尽管获得了两个 IPv6 地址(临时)和带有 EUI-64 的 SLAAC。
这些地址来自我的 /64 前缀。 我可以使用 fe80:: 从桌面 ping 它,并且可以从 Android ping 桌面。
但我无法 ping Goolge DNS (2001:4860:4860::8888) 和其他 IPv6 地址。
Adnroid 从 RADVD 获取 IPv6:
ip -6 地址
26: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 11:22:33:44:55:66 brd ff:ff:ff:ff:ff:ff inet 192.168.0.111/24 brd 192.168.0.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 2001:470:****:****:1234:1234:1234:1234/64 scope global temporary dynamic valid_lft 86382sec preferred_lft 14382sec inet6 2001:470:****:****:1122:33ff:fe44:5566/64 scope global mngtmpaddr dynamic valid_lft 86382sec preferred_lft 14382sec inet6 fe80::1122:33ff:fe44:5566/64 scope link valid_lft forever preferred_lft forever
ip -6 route的输出为空。
我尝试了不同的flags,例如 AdvOtherConfigFlag、AdvManagedFlag、AdvHomeAgentFlag 等,但它是错误的 - Android 获取 IPv6,可以 ping fe80:: ,但无法 ping IPv6 Internet。
当我在本地网络上禁用 RADVD 并在根植的 Android 上设置 IPv6 地址时手动:
ip link set dev wlan0 down
ip -6 addr add 2001:470:****:****:1234:1234:4321:4321/64 dev wlan0
ip -6 addr add 2001:470:****:****:1122:33ff:fe44:5566/64 dev wlan0
ip link set dev wlan0 up
ip -6 地址
28: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:470:****:****:1234:1234:4321:4321/64 scope global valid_lft forever preferred_lft forever inet6 2001:470:****:****:1122:33ff:fe44:5566/64 scope global valid_lft forever preferred_lft forever inet6 fe80::1122:33ff:fe44:5566/64 scope link valid_lft forever preferred_lft forever
添加默认路由到树莓派后:
ip -6 route add default via fe80::****:**ff:fe**:**** dev wlan0 proto
ra metric 100 pref medium
然后 ping 开始工作!我可以在 Android 上 ping 和打开 IPv6 网站!
如果我启用 RADVD(Android 获得两个 IPv6)并将路由添加到 Raspberry Pi - 我无法在 Internet 上 ping IPv6 地址。
我在树莓派上的 radvd.conf
interface eth0 {
AdvSendAdvert on;
MinRtrAdvInterval 300;
MaxRtrAdvInterval 600;
AdvHomeAgentFlag off;
AdvManagedFlag off;
AdvOtherConfigFlag off;
prefix 2001:470:****:****::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
您怎么看:为什么 Andorid 使用手动 IPv6 而不能使用 RADVD?
感谢您的回答!
【问题讨论】:
-
这和编程有什么关系?
-
您认为解决问题的方法是在 Android 上编程还是使用 RADVD?老实说,我不知道该往哪个方向发展
-
你为什么在这里发这个?这是一个编程网站。也许您打算将其发布在 Super User 上?
-
是的,你完全正确。一个月前我没有考虑过,但现在人们可以通过谷歌搜索 android radvd ipv6 找到这个解决方案,我认为它会对他们有所帮助。