🚀OpenWRT 路由器 IPv6 配置
2023-7-21
| 2023-7-21
0  |  0 分钟
type
status
date
Jul 21, 2023 03:15 PM
slug
summary
tags
category
icon
password

1. 关于 openwrt 配置IPv6的过程详细步骤和解释

首先明确一点,关于 IPv6 在公网上的玩法(P2P,外网访问)网上已经有很多介绍了。本篇文章的重点将在 IPv6 在子网(类似我们常说的内网)中的配置,让路由器更好的管理下游设备。
由于 IPv6 给了用户很大的自由度,同时他的配置难度也相应的提高了(OpenWRT 愚蠢的界面更加深了这一点
由于 IPv6 的进步,我们不再需要用到传统内网,IPv4 中用到的很多技巧和技术已不再需要。这些技术可以从脑子里擦掉了。
  • 所有和 NAT 有关的东西
  • 端口转发
  • UPnP
  • 等等
接着,尽管我们不再使用 192.168 这种传统内网,但这不代表你失去了对挂在路由器下设备的控制。你将会学会如何:
  1. 设置接入公网
  1. 设置子网
  1. 设置怎么给内网设备发 IP
  1. 解决一些疑难杂症

一些知识点:

运营商给你的 IPv6 种类

  • Prefix Delegation(PD)
    • 一等公民,IPv6 时代的公网 IP
    • 你可以使用本篇文章之后会提到的所有操作
  • NDP Proxy
    • 二等公民,好歹你有 IPv6
    • 没什么操作空间,只能给到什么用什么,本篇将会介绍的大部分的操作也没法用。不过至少有 IPv6 了
  • 没有 IPv6
    • 难民,能上网就行
    • 等吧,肯定都会有的。或者你可以打电话问问你的运营商在搞什么✈️
我会在实际上手部分介绍怎么分辨你属于哪一类。接着往下看

怎么阅读 IPv6 地址

IPv6 地址为 128 位;分为 8 个_小组_,每个_小组_用四个英数字符号表示,用冒号隔开。如果和 IPv4 比较的话,所有 IPv4 地址加起来只有 IPv6 中的两个_小组_那么大。所以你也不用担心你所有设备暴露在公网会不会被攻击,因为地址太多了黑客根本找不到你!
notion image
很多人抱怨 IPv6 很难阅读。确实,和 IPv4 相比确实要记的东西多太多了。但是 IPv6 是可以简化的,可以把 0 省略。以下三行是同一条地址
fddd:f00d:cafe:0000:0000:0000:0000:0001
fddd:f00d:cafe:0:0:0:0:1
fddd:f00d:cafe::1
当你学会自由的设置你的 IPv6 地址的时候,你可以通过很多 0 填满它,极大缩短你要记的长度!
还记得吗,IPv4 地址时常会这样写:192.168.1.1/24 。这个 24 就是子网掩码,意思就是前 24 位(前三个_小组_)地址是内网(子网)所有设备共享的(192.168.1.x),后面的地址是可以自定义的(192.168.1.0-192.168.1.255)。IPv6 也是一样。重点:IPv4 时代可以用子网掩码可以按照自己的需求决定子网大小,无限切割直到所有地址用完;而 IPv6 地址中,只有第 48-64 位(第四个_小组_)能用作子网。如果已经用了 64 位,尽管还有 64 位的空间剩下,也不能继续往下切割子网了。这个用作子网的这部分地址就叫 “前缀”,而前缀最大就是 64 位(前四个_小组_)。剩下的 64 位就全是给子网内的设备分配用的了。
借用一下别人的图
notion image
notion image
注意: 第 4 段是局域网网段 子网 ID.
最后简单说一下,一个设备可能会有多个 IPv6 地址。2 带头的 IPv6 地址是公网地址,f 带头的 IPv6 地址是内网地址,两种地址之间不互通。根据运营商不同,IPv6 前四个_小组_可能会每隔一段时间变化一次的(和 IPv4 一样,是为了安全性)。

我的设备

我用的路由器是 Buffalo WSR-2533DHPL,系统是自己编译的原版 OpenWRT22.03,没有对系统做过任何改动。我的建议是路由器系统越新越好,老版本可能会有蜜汁 bug
设置你的外网(WAN)

IPv4 时代,运营商给你的是一个个 IPv4 地址。到了 IPv6 时代,地址太多了,运营商不需要这么抠抠搜搜,所以一般来说都是一个个子网这么给的
。有需要的用户可以请求一个子网,如果运营商允许还可以申请好几个子网,而没有需要的用户自动获取取得的就是最小单位的地址了。IPv6 时代最重要的就是看你能不能拿到子网。拿到了子网你就拥有了一个完全属于自己的互联网,子网里的地址全部归你掌管
。如果拿不到子网,那你就只能蜗居在别人的管理之下了
打开 OpenWRT 管理界面,进入网络 -> 接口
notion image
确保设置了三个端口:LAN,WAN,WAN6(名字不一样没关系)。如果缺少的话就添加端口。
WAN 的设置保留你原来的可以上网的配置就行,毕竟它只和 IPv4 有关,不管 IPv6。LAN 的设置暂时不要动。先编辑 WAN6
notion image
  • 协议:选择 DHCPv6。
  • 设备:
    • 如果你的 WAN 上网方式为 DHCP 客户端,设置为 WAN(一般不用改)
    • 如果你的 WAN 上网方式是 PPPoE,设置为接口别名:“@WAN”(参考下图)。
  • 请求指定长度的 IPv6 前缀(request IPv6 prefix of length):选择自动
  • 防火墙设置 -> 防火墙区域:WAN。(一般是以前删除过 WAN6 才需要改)
notion image
这时候应用一下你的设置。
重点!
如果有一行 IPv6-PD 的地址出现了,那么恭喜你,你是 IPv6 时代的一等公民。如果没有,那么有几种可能:PD 被上一级路由吃了(光猫或者上游有别的路由器),或者运营商没给。如果是前面这种情况,你可以尝试把光猫改桥接路由器拨号,或者移除上级的路由。如果是后面这种,你可以给你的运营商打个电话问问(记得打给负责你那儿的师傅别直接打运营商)。如果都不行,那么很遗憾,你可以跳到本文的最后看没有 PD 的情况怎么通过 NDP Proxy 使用 IPv6
notion image
这里 IPv6-PD 最后的数字就代表了你分配到的子网等级(最大 64,最小 48)。64 减去你的数字就是你获得的子网位宽。如果你的数字是 64,那么你只有 1 个子网(64-64=0,2^0=1)。如果是 60,那么你的位宽就是 64-60=4,也就是拥有了 2^4=16 个子网,可以玩一些本来要用到 VLAN 的操作(给
啥的单独划一个子网啥的)。总而言之,这个数字越小,运营商给你的子网空间就越大!64 是普通一等公民的话,48 就是天选之子了
notion image
接着,在 WAN6 的高级设置中,IPv6 分配长度设为禁用。委托 IPv6 前缀勾选 (不勾的话 lan 是没有 IPv6 地址的)。下面的 IPv6 首选项不要填,填了会获取不到地址的。
这样一通设置,你就摸清了你家宽带 IPv6 的上限,并为之后的设置打下了基础。
设置你的子网(LAN)

相同界面,接下来我们来编辑 LAN 口。
notion image
  • 委托 IPv6 前缀:按需勾选(决定下游的设备能不能用 PD 继续划分子网。比如你想下面再接一个路由器的话就要勾选。一般来说继续往下分配并不会有什么问题,不过那样极小概率有些兼容性差的设备可能上不了网)
  • IPv6 分配长度:不要选择禁用(一般选择 64 就行了,除非你继续要往下分配子网)。
  • IPv6 后缀:这个选项是可以个性化的,举个栗子,你家地址前缀是 “2400:1ac2:bfff:fe00::/56”,这里填写 “::114:514:1919” 的话,你的路由器 LAN 口的地址就被你自定义为了 “2400:1ac2:bfff:fe00::114:514:1919” 。当然,我的建议是就填::1,这样你的地址就可以缩短为 “2400:1ac2:bfff:fe00::1“。
  • IPv6 分配提示:这个选项是 IPv6-PD 数字小于等于 60 的幸运儿们才能正常用的设置。通过这个设置你可以自定义你子网的最后一位地址。举个栗子,运营商给你家的 PD 前缀是 “2400:1ac2:bfff:fe00::/56”,这里填写 “8”,那么你的你子网的前缀都会变成 “2400:1ac2:bfff:fe08::/64”
这样一来,你就成功自定义了属于你的 IPv6 子网。
给你的设备发 IP

在 IPv4 时代,DHCP 是所有路由器都有的功能。它负责给下游设备分配 IP,告知下游设备从哪里上网(网关),以及分发各类有用的信息。来到了 IPv6 时代,DHCP 已经不是必须的了,因为网络内的设备现在可以通过 SLAAC 协议来自己决定自己的 IP 地址
。但这不代表 DHCP 已经过时了。通过 SLAAC 得到的 IP 地址是完全随机的。但是如果你的家中有 NAS,服务器,PC 等你想要固定 IP,统一管理,或是个性化防火墙规则的时候,DHCPv6 就派上用场了。DHCPv6 和 SLAAC 也可以共存,只不过那样下游的设备会拥有两个 IP。总结,IPv6 有两种获取 IP 的方式:
  • SLAAC:IP 完全随机。一般没什么需求就用这个,简单省心。
  • DHCPv6:IP 由路由器统一管理,有各种高级功能,干净整洁。
接下来我将介绍如何在你的子网中配置 SLAAC 或 DHCPv6。
点击编辑 LAN,进入 DHCP 服务器 ->IPv6 设置
notion image
  • 指定的主接口:不要选
  • RA 服务:服务器模式
  • DHCPv6 服务:服务器模式(建议)
  • 本地 IPv6 DNS 服务器:勾选☑️
  • NDP 代理:禁用
notion image
RA 标记:添加其他配置(O)。

SLAAC

勾选启用 SLAAC。这个选了以后下游设备会使用 SLAAC 自动获取 IP

DHCPv6

RA 标记中添加受管配置(M)。这个选了以后所有下游设备会使用 DHCP 获取 IP
当这些全部设置完成后,网络下的设备就可以获取 IPv6 地址并且通过 IPv6 上网了。
固定(静态)IP

在 IPv4 时代,我们可以通过在下游的设备上设定静态 IP,或者通过 DHCP static lease 来固定某一个设备的 IP 地址。在 IPv6 时代,尽管 IP 地址的前面那几位是没法自定义的,但是后面一半是可以自己决定的的。不过这要求你使用的 IP 分配方式必须是 DHCPv6(SLAAC 是随机的没法选,在设备上固定 IP 也不行因为网络的前缀是会变的)。路由器通过设备的 MAC 地址分辨设备,该设备每次请求 IP 地址的时候都会被分配到相同的尾缀。
举个栗子:你给你的设备设定了一个 114 的尾缀,并且你的网络前缀是 2405:6580:8e60:2600::/64,那么这个设备会被分配到的 IP 地址就会是 2405:6580:8e60:2600::114。过了几个星期,你的网络前缀被运营商改了,变成了 114:514:1919:819::/64,那么这个设备被分配到的的 IP 将会是 114:514:1919:819::114。
在首页(状态 -> 概览)下的已分配 DHCPv6 租约里找到你的设备,点击设为静态。
notion image
进入网络 ->DHCP/DNS-> 静态地址分配,可以看到刚才设为静态的设备已经出现。点击编辑
  • 主机名:设一个好记的名字
  • IPv4 地址:设一个你喜欢的 IPv4 地址
  • IPv6 后缀:设一个你喜欢的 IPv6 后缀
  • MAC 地址和 DUID:用来识别设备的唯一识别码,不要改
如果一切正常,重新插拔一下那个设备的网线,你就可以看到它的 IP 地址已变为了你所设定的值。如果是 NAS 等设备,你还可以通过浏览器输入 “(你设定的主机名).lan/” 来访问它。比如我这里就可以用“ServerDLoriland.lan/” 访问我的 nas。就像酱紫
notion image

我没有 Prefix Delegation 怎么办?

很遗憾,IPv6 的不少功能你都用不到了。不过不用担心,其实说了那么多你失去的也只不过是自定义 IP 地址的能力而已
。我会教你如何在没有 PD 的情况下正常使用 IPv6。
进入网络 -> 接口,点击修改 WAN6,进入 DHCP 服务器,点击配置 DHCP 服务器
notion image
勾选忽略此接口,并且在 IPv6 设置里勾选指定的主接口,RA 服务、DHCPv6 服务、NDP 代理都选择中继模式。
notion image
接着点击修改 LAN,进入 DHCP 服务器 ->IPv6 设置里同样全部选择中继模式。
notion image
好了,这样你的下游设备就可以正常使用 IPv6 了。
 
 

2. 关于路由器里面的配置 WAN6 配置

notion image

 

3. 关于划分子网的概念

通常普通家用宽带用户获得的是 60 前缀网络位,用户可自定义最后一个网络位,用于自行划分出多个子网,具体的可用字符为:0123456789abcdef(共计 16 个,可以用来划分出 16 个子网。)
60 前缀网络位自行划分子网的具体书写示例:
备注:最后四个字段用于表示设备地址(接口 ID)。
 

4. 关于 openwrt 中实现只有特定设备可以获取 IPv6的方法

避免不安全的设备联外网.
登录 OpenWrt 后台。在 网络 -> 防火墙 -> 自定义规则 下添加以下内容
 
 
notion image
> 本文由简悦 SimpRead 转码
技术折腾
  • 中国网络
  • openwrt
  • pycharm 备份还原配置信息,包括 snippets滑动窗口算法 似乎经常用到
    目录