Lin*_*eak 10 router openwrt ipv6 internet-connection
我正在为 IPv6 家庭设置而苦苦挣扎。老实说,我不太了解网络。
我的 ISP去年通知我他完全有能力使用 IPv6。
从那以后我就没有设法在我的路由器中设置它。我告诉过他们,但他们并不在意,因为几乎所有网络都支持双栈/IPv4。
所以,他们只来过一次检查问题是否在他们这边:他们声称不是,要么是我的操作系统(Windows 10 Pro、Linux Mint 19.0 Cinnamon、Android 7.0)和他们的设置是问题,要么是路由器设置不好。
由于我确定在所有提到的系统中都启用了 IPv6,我开始意识到可能我的路由器是旧的,请理解为不再受支持,型号是:TP-Link Archer C5 v1.2,固件过时2015-04-28。
有时,即使在今天早些时候,我也能从 DHCPv6 获得如下设置:
IP: 2a02:768:7c00:14a:32b5:c2ff:feb9:c8f3/64
Gateway: fe80::225:90ff:fef5:7c13
DNS1: 2a02:768:0:1010::3
DNS2: 2a02:768:0:1010::2
Run Code Online (Sandbox Code Playgroud)
上面的这种设置在技术上是否正确,我的意思是我认为网关可能是仅本地地址,这是我无法浏览仅 IPv6 站点的问题吗?
我对 OpenWrt 完全陌生。请指导我。谢谢你。
我已经设法将 OpenWrt 18.06.1 上传到我的路由器中,并使 Wifi 5G 和 2.4G 都可以使用公共静态 IPv4 地址。
我可以通过 SSH 连接到路由器root。这里是最基本的信息。
# cat /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd62:320d:015a::/48'
config interface 'lan'
option type 'bridge'
option ifname 'eth1.1'
option proto 'static'
option ipaddr '192.168.0.1'
option netmask '255.255.255.0'
option ip6addr '2a02:768:7c00:14a:32b5:c2ff:feb9:c8f3/64'
option ip6gw 'fe80::225:90ff:fef5:7c13'
config interface 'wan'
option ifname 'eth0.2'
option proto 'static'
option ipaddr '10.7.113.62'
option netmask '255.255.255.252'
option gateway '10.7.113.61'
option dns '8.8.8.8 10.255.255.10'
config interface 'wan6'
option ifname 'eth0.2'
option proto 'static'
config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'
config switch_vlan
option device 'switch0'
option vlan '1'
option ports '2 3 4 5 0t'
config switch_vlan
option device 'switch0'
option vlan '2'
option ports '1 6t'
Run Code Online (Sandbox Code Playgroud)
# cat /etc/config/dhcp
config dnsmasq
option domainneeded '1'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option nonwildcard '1'
option localservice '1'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option dhcpv6 'server'
option ra 'server'
option force '1'
option ra_management '1'
option leasetime '15m'
option ra_default '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
option ra 'server'
option dhcpv6 'server'
option ra_management '1'
list dns '2a02:768:0:1010:0:0:0:3'
list dns '2a02:768:0:1010:0:0:0:2'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
Run Code Online (Sandbox Code Playgroud)
要回答评论:
你能 ping ipv6.google.com 吗?IP地址看起来合乎逻辑。还值得一提的是您的 ISP 设置是什么 - 我不得不在当天在他们的论坛上找到我的设置,并且设置根据您使用的是电缆还是光纤而有所不同。一些本地知识可能在这里有用。
不能ping6。100% 丢包。
ISP 设置 - 见下文。
我使用的是普通电缆 = 以太网 = 大约 20/10 Mbit/s。
问我什么。
GUI的当前状态:
我尝试使用 DHCPv6 没有成功。这就是我发布这个问题的原因。
名称:Starnet sro
网址:http : //www.starnet.cz/
ASN:44489,见这里
IPv6 分配:他们告诉我他们使用使用 DHCPv6 的本地 IPv6。
ISP 已通知我,他们通过 DHCPv6 自动分配前缀,此时无法进行静态配置。
因此,我删除了所有静态设置,并通过强制请求 64 前缀打开了 DHCPv6。
在我点击申请在 WAN6 部分启用 DHCPv6 之前,它看起来像:
network.wan6.proto=dhcpv6
network.wan6.reqaddress=force
network.wan6.reqprefix=64
Run Code Online (Sandbox Code Playgroud)
这并没有改变任何事情,更重要的是,IPv6 上行链路呈灰色显示为未配置。
鉴于他们想要巨额资金,但不能保证他们的技术人员会代替我解决问题,因此我特此悬赏这个问题。
我会尝试编辑这个问题,以便在您问我新问题时更清楚。
我每天浏览 OpenWrt 界面 3 天,但也许只是我发现了一些新东西(至少对我来说),它被称为 VLAN,我不知道它的用途是什么,所以我发布了它:
我发现他们的网站上确实有一些不太有价值的信息:
http://www.starnet.cz/info/ipv6
例如,您可以轻松地谷歌翻译。
另一件事证实,我在他们的Facebook 页面上找到了:
前缀是 64。他们还计划制作 56。
在当前设置下,直接从 LuCI (GUI) 界面,当我尝试时ping6 ipv6.google.com,我得到:
PING ipv6.google.com (2a00:1450:400d:805::200e): 56 data bytes
ping6: sendto: Permission denied
Run Code Online (Sandbox Code Playgroud)
我发现了我的确切版本的以下错误报告:
https://bugs.openwrt.org/index.php?do=details&task_id=1763
该人建议降级到 17.0.1.5 解决了 IPv6 问题,任何有能力的人都可以帮我看看那个错误报告,我真的不明白。
错误报告是绝对正确的,我不明白为什么没有分配它或者为什么它的优先级很低,但是我能够在 17.x 固件上获得 IPv6 地址前缀:
我没有来自 17.x 固件的互联网连接,只能直接从路由器 ping 和 ping6,请帮我解决这个问题。
降级到 17.x 后,客户端没有可用的互联网连接,但是当升级回 18.x 固件时,IPv6 Upstream 终于开启了。
最后一步应该是为客户端启用 IPv6。我在 Windows / Linux / Android 上没有 IPv6,所以出了点问题,我只是不知道它是什么。
我尊重规则,所以不会再有取消赏金请求了。
为了给某人提供 300 分,我有一些奖励问题要问你。
谁能向我解释有状态和无状态IPv6 分配的区别和用处?也许安全影响包括。大量引用,谢谢。
您能否进一步解释 DUID = DHCP 唯一标识符的用途?我的意思是它的目的和用途是什么。也许安全影响包括。大量引用,谢谢。
简而言之:
IPv6 的有状态 DHCPv6自动配置相当于 IPv4 中的 DHCP。DHCPv6 服务向客户端设备提供 IPv6 地址,客户端和服务器都维护该地址的“状态”(即租用时间等)。路由器在其路由器广告消息中会告诉新上台的主机向 DHCPv6 服务器请求所有地址(全局地址、DNS 地址、SIP 代理服务器地址)。
无状态 DHCPv6用于客户端设备自动配置其 IPv6 地址和基于路由器广告的路由。路由器告诉新出现的主机仅从 DHCPv6 服务器获取 DNS、SIP 代理服务器地址等额外信息,而全局地址则通过路由器广告消息中的前缀提供给主机。路由器给出64位前缀,主机使用EUI-64 方法转换的MAC地址(48位) 获得全球IPv6地址。
详细,来自文章 有状态和无状态IPv6有什么区别?
IPv6 地址分配选项
静态(手动)地址分配——与 IPv4 完全一样。
无状态地址自动配置 (SLAAC) – 节点侦听本地链路上的路由器定期发出的或节点使用 RA 请求消息请求的 ICMPv6 路由器广告 (RA) 消息。然后,他们可以通过组合其接口 EUI-64(基于以太网接口上的 MAC 地址)加上通过路由器广告获得的链路前缀来创建全球单播 IPv6 地址。这是 IPv6 独有的功能,它提供简单的“即插即用”网络。默认情况下,SLAAC 不会向客户端提供 IPv6 地址和默认网关之外的任何内容。SLAAC 在 RFC 4862 中有大量讨论。
无状态 DHCPv6 – 使用此选项 SLAAC 仍用于获取 IP 地址,但 DHCP 用于获取“其他”配置选项,通常是 DNS、NTP 等。这里的优点是不需要 DHCP 服务器存储有关任何单个客户端的任何动态信息。对于连接了大量端点的大型网络,实施无状态 DHCPv6 将大大减少地址状态刷新所需的 DHCPv6 消息数量。
有状态 DHCPv6 – 功能与 IPv4 DHCP 完全相同,其中主机从 DHCP 服务器接收其 IPv6 地址和其他参数。与 IPv4 的 DHCP 一样,DHCPv6 基础结构的组件由请求配置的 DHCPv6 客户端、提供配置的 DHCPv6 服务器以及当客户端位于没有 DHCPv6 服务器的子网上时在客户端和服务器之间传送消息的 DHCPv6 中继代理组成。您可以在 RFC 3315 中了解有关 IPv6 DHCP 的更多信息。
注意:在 IPv6 中获得默认网关的唯一方法是通过 RA 消息。DHCPv6 目前不携带默认路由信息。
DHCP 唯一标识符
这是客户端本身生成的唯一标识符,用于为 DHCPv6 服务器唯一标识它。
来自维基百科 DHCPv6:
DHCP 唯一标识符
客户端使用 DHCP 唯一标识符 (DUID) 从 DHCPv6 服务器获取 IP 地址。它有一个 2 字节的 DUID 类型字段和一个最多 128 字节的可变长度标识符字段。它的实际长度取决于它的类型。服务器将 DUID 与其数据库进行比较,并向客户端提供配置数据(地址、租用时间、DNS 服务器等)。DUID 的前 16 位包含 DUID 类型,其中有四种类型。剩余 DUID 的含义取决于类型。
因此,存在两个独立的问题:
WAN - IPv6 上行未连接
LAN - 配置错误
对于 #1,即WAN配置,我尝试了 GUI 提供的几乎所有内容,但没有成功。
由于我终于找到了解决方法,我将与您分享:
降级到 17.x 固件。它会保留您的设置,不用担心。
升级回 18.x 固件。
就这样,IPv6 WAN 上游终于神奇地连接上了。
对于 #2,即LAN配置,设置如下:
网络 - 接口 - LAN - 通用配置 - 常规设置选项卡 - IPv6 分配长度必须设置为前缀的长度。
网络 - 接口 - LAN - DHCP 服务器基于您的拓扑结构,在我的情况下,以下工作原理:
路由器通告服务:服务器模式
DHCPv6-服务:服务器模式
NDP-Proxy:混合模式
DHCPv6-模式:无状态 + 有状态
如果我在配置中发现更多错误,我将更新此答案。
我现在已经在http://test-ipv6.com/上测试了我的 Windows 10、Linux Mint 19 和 Android 7.0
我得到了:
使用 IPv4 DNS 记录进行测试
ok (0.267s) using ipv4
Run Code Online (Sandbox Code Playgroud)
使用 IPv6 DNS 记录进行测试
ok (0.168s) using ipv6
Run Code Online (Sandbox Code Playgroud)
使用双栈 DNS 记录进行测试
ok (0.206s) using ipv6
Run Code Online (Sandbox Code Playgroud)
双栈 DNS 和大数据包测试
ok (0.154s) using ipv6
Run Code Online (Sandbox Code Playgroud)
不使用 DNS 测试 IPv4
ok (0.108s) using ipv4
Run Code Online (Sandbox Code Playgroud)
不使用 DNS 测试 IPv6
ok (0.091s) using ipv6
Run Code Online (Sandbox Code Playgroud)
测试IPv6大包
ok (0.256s) using ipv6
Run Code Online (Sandbox Code Playgroud)
测试您的 ISP 的 DNS 服务器是否使用 IPv6
ok (0.275s) using ipv6
Run Code Online (Sandbox Code Playgroud)
查找 IPv4 服务提供商
ok (0.128s) using ipv4 ASN 44489
Run Code Online (Sandbox Code Playgroud)
查找 IPv6 服务提供商
ok (0.107s) using ipv6 ASN 44489
Run Code Online (Sandbox Code Playgroud)
这是 100% 好的。这 2 个跳过的测试是由于使用 HTTPS 访问测试站点造成的,HTTPS 仍处于测试阶段,因此最好使用纯 HTTP: http: //test-ipv6.com/
就是这样。我现在需要摆弄防火墙和有状态 + 无状态 IPv6,但这不会改变这样的事实:我已经成功地让 IPv6 在我家里工作了。
我发现了另一个可能有用的测试站点:
仅限 IPv6: http: //v6.testmyipv6.com/
双栈: http: //ds.testmyipv6.com/