现在一个支持 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 。
1
qbqbqbqb 2020-08-25 15:27:46 +08:00 4
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 开头的地址进行测试。 |
2
knva 2020-08-25 15:28:23 +08:00
配一个 dhcpv6 然后自动分配。
|
3
qbqbqbqb 2020-08-25 15:49:30 +08:00 1
还有一种“歪门邪道”的玩法,找一张能获取 ipv6 地址的手机卡(现在手机卡一般都行),安卓手机开移动热点(必须安卓手机,请勿用其它设备代替),电脑连接热点即可获得 v6 公网地址。内网通信不耗流量。而且这样测试直接用公网地址拟真度最高。
|
4
wandehul OP @qbqbqbqb 目前公司的网络是没有 ipv6 的,通过 https://www.jianshu.com/p/335f673e3994 网上一些 mac 连 iphone 分享网络的方式给手机分配 ipv6 的方式来做个简单的测试。 服务器也连接至 mac 分配了一个 2001 开头的地址。
2,低端家用路由器,只有配置 dhcpv6 的 16-64 位前缀,没有太多的参数。 3,fd 地址是在设备上静态配置的吗 ? 不可以在 dhcpv6 地址里填 fd 的地址段吗 ? |
6
qbqbqbqb 2020-08-26 16:45:36 +08:00
@wandehul 家用路由器如果可以手动配置 64 位前缀的话应该也行。fd 前缀如果路由器里可以配就在路由器里配置,路由器不支持的话再用静态。
移动热点如果正确获取了 v6 地址的话,客户端如果用 v6 地址连接服务器的话(浏览器里用“中括号+v6 地址”访问)一定是走 v6 的。只有在绑了域名通过域名访问的情况下才会有优先级问题。 |
7
chouvel 111 天前
想学一些 ipv6 ,相关的知识,不知道从哪里开始,像问问有没有系统的学习课程
|