Radvd 将错误的 RA 发送到 android

Radvd sends wrong RA to android

我的小米 Redmi 4X 已 root Android 8.1.0 AospExtended-v5.3-OFFICIAL(但它也不适用于小米 Redmi 4X - 在 Android 7 上没有 root ).

我在 Raspberry Pi(启用转发)和 IPv6 Hurricane 隧道上设置了 RADVD。 我的台式机和笔记本电脑与 Archlinux 完美配合 IPv6(DualStack 和 IPv6-only)但是 2 小米不工作(有 root 和没有它)虽然有两个 IPv6 地址(临时)和 SLAAC 与 EUI-64。

这些地址来自我的 /64 前缀。 我可以使用 fe80:: 从桌面 ping 它,并且可以从 Androids.

ping 桌面

但我 无法 ping Goolge DNS (2001:4860:4860::8888) 和其他 IPv6 地址。

Adnroid 从 RADVD 获取 IPv6:

ip -6 addr

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 路由 的输出为空。

我尝试了不同的 flags,例如 AdvOtherConfigFlag、AdvManagedFlag、AdvHomeAgentFlag 等,但它是错误的 - Android 获取 IPv6,可以 ping fe80::,但不能 ping IPv6 Internet。

当我在我的本地网络上禁用 RADVD 并在 root 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 addr

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

将默认路由添加到 Raspberry Pi 后:

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 - 我无论如何都无法 ping 互联网中的 IPv6 地址。

我的 radvd.conf 在 Raspberry Pi

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?

感谢您的解答!

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

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

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

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