【问题标题】:Radvd sends wrong RA to androidRadvd 向 android 发送错误的 RA
【发布时间】: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 找到这个解决方案,我认为它会对他们有所帮助。

标签: android ipv6 radvd


【解决方案1】:

3 周后,我找到了解决方案!问题出在我的路由器 TPLink H-Ver = WR841N v8 00000000 中:S-Ver = 3.16.9 Build 170210 Rel.42078n(最新固件)。

IPv6 不适用于 Wi-Fi 设备 Androids、具有不同 Linux 的笔记本电脑。但是笔记本电脑可以使用以太网连接!

当我用另一个路由器更换我的路由器时,Android 和其他 Wi-Fi 设备获得 IPv6,打开 IPv6 站点并获利!

我认为我的 TPlink 不支持 IPv6,因为它很旧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多