V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wandehul
V2EX  ›  程序员

局域网如何搭建 ipv6 测试环境,并通过手机访问 ipv6 网站

  •  
  •   wandehul · 2020-08-25 14:39:10 +08:00 · 2969 次点击
    这是一个创建于 1333 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在一个支持 ipv6 的路由器。默认配置。有 linux 服务器,已监听 ipv6 地址,网卡有一个 fe80 的 ipv6 A 地址,跟它在同一个路由器下的 windows 也有一个 fe80 B 的地址,windows 可以通过 http://[A]地址访问 nginx 的网站。但是 iphone 连接到这个路由器上,看不见 ipv6 的地址。通过 safari 和 chrome 无法访问 nginx 服务.

    请问,
    1,路由器需要设置 ipv6 的 dhcp 地址池吗 。 应该设置什么段?
    2,iphone 如何访问内网的 ipv6 nginx 。

    6 条回复    2020-08-26 16:45:36 +08:00
    qbqbqbqb
        1
    qbqbqbqb  
       2020-08-25 15:27:46 +08:00   ❤️ 3
    IPv6 里很多概念和 IPv4 有一些差异。

    fe80 开头的地址比较特殊,不是通常意义上的地址,是链路本地地址,相当于 ipv4 里 DHCP 失败之后获得的 169.254.0.0/16 网段内的地址,仅在局域网里有效,而且操作系统有时会要求在使用 fe80 开头的地址的时候必须在地址后面附加网卡 ID (例如 fe80::1%eth0 ),App 不一定支持这种用法。所以说不是所有设备和 App 都支持通过 fe80 开头的地址通信。

    IPv6“上网”和“局域网”用的是两种不同的地址。其中“上网”用的是 2 开头的由运营商分配的地址,一般的“支持 IPv6”的路由器也就只支持在接入了有 IPv6 的宽带以后通过 DHCP-PD 协议自动分配这种地址。
    另外还有一种 fd 开头的 ULA 地址,即局域网专用地址,相当于 IPv4 里的 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 网段(但是因为 IPv6 没有 NAT,所以客户端不能用这个地址“上网”),一般的家用路由器不支持分配这种地址。

    另外“DHCP 地址池”的说法也不准确,IPv6 里管理内网地址分配的主要协议是 RA (路由通告),RA 协议只通告当前网络的网段和网关信息,由客户端在网段内任意挑选一个地址(要求前缀长度必须等于 64,v6 前缀长度相当于 v4 的子网掩码)。DHCPv6 只是个辅助协议(用于分配 DNS 等次要设置,只有在极其罕见的情况下才用 DHCPv6 直接分配地址)。


    回到你的问题,如果仅仅是局域网测试的话:
    1. 接入了有 IPv6 的宽带且设备正常分配到了 2 开头的公网 IPv6 地址,可以直接拿公网地址做测试;
    2. 外网无 IPv6,若路由器上可以设置"ULA 前缀",那么就设置一个 fd 开头的网段(有可能还需要开启一个“强制通告 ULA 前缀”的选项)
    3. 外网无 IPv6,路由器也不支持设置 ULA,这种情况下路由器的 IPv6 功能一般是不起作用的,建议所有设备静态配置 fd 开头的地址进行测试。
    knva
        2
    knva  
       2020-08-25 15:28:23 +08:00
    配一个 dhcpv6 然后自动分配。
    qbqbqbqb
        3
    qbqbqbqb  
       2020-08-25 15:49:30 +08:00   ❤️ 1
    还有一种“歪门邪道”的玩法,找一张能获取 ipv6 地址的手机卡(现在手机卡一般都行),安卓手机开移动热点(必须安卓手机,请勿用其它设备代替),电脑连接热点即可获得 v6 公网地址。内网通信不耗流量。而且这样测试直接用公网地址拟真度最高。
    wandehul
        4
    wandehul  
    OP
       2020-08-26 14:23:26 +08:00
    @qbqbqbqb 目前公司的网络是没有 ipv6 的,通过 https://www.jianshu.com/p/335f673e3994 网上一些 mac 连 iphone 分享网络的方式给手机分配 ipv6 的方式来做个简单的测试。 服务器也连接至 mac 分配了一个 2001 开头的地址。
    2,低端家用路由器,只有配置 dhcpv6 的 16-64 位前缀,没有太多的参数。
    3,fd 地址是在设备上静态配置的吗 ? 不可以在 dhcpv6 地址里填 fd 的地址段吗 ?
    wandehul
        5
    wandehul  
    OP
       2020-08-26 14:25:36 +08:00
    @qbqbqbqb 用安卓的移动热点。应该还有 ipv4 地址吧 ,这个时候如何确保是通过 ipv6 进行通信呢
    qbqbqbqb
        6
    qbqbqbqb  
       2020-08-26 16:45:36 +08:00
    @wandehul 家用路由器如果可以手动配置 64 位前缀的话应该也行。fd 前缀如果路由器里可以配就在路由器里配置,路由器不支持的话再用静态。

    移动热点如果正确获取了 v6 地址的话,客户端如果用 v6 地址连接服务器的话(浏览器里用“中括号+v6 地址”访问)一定是走 v6 的。只有在绑了域名通过域名访问的情况下才会有优先级问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1107 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 23:33 · PVG 07:33 · LAX 16:33 · JFK 19:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.