惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
腾讯CDC
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
量子位
F
Fortinet All Blogs
G
Google Developers Blog
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
J
Java Code Geeks
S
SegmentFault 最新的问题
D
Docker
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
M
MIT News - Artificial intelligence
博客园 - 【当耐特】

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
修改配置文件,给OpenWRT开启IPv6中继 - 少数派
2024-05-10 · via 少数派

现在IPv6已经成为运营商的标配,默认光猫拨号就是IPv4、IPv6双栈接入,且每个用户都能有一个IPv6的公网地址。使用IPv6的优势有不少,能与互联网基础设施发展的大趋势接轨(目前IPv4地址资源已基本耗竭),还能访问不少仅有IPv6才能访问的资源(例如BT下载时,能连接IPv6的节点)。OpenWRT自然也能充分发挥IPv6的优势。

根据博主LoriLand的科普,IPv6最优的接入方式是PD(Prefix Delegation),这种方式允许用户划分多级子网。但是,我用的是中国电信光宽带,目前的套餐并没有提供PD接入,于是我只能选择IPv6中继方式,由光猫给子网设备分配IPv6地址。本文就介绍如何开启OpenWRT的IPv6中继功能,使与路由器连接的设备能获取来自光猫的地址。

然而,网络上的教程与我的OpenWRT界面大相径庭,乍看之下像是不支持一些功能特性。幸运的是,可以通过修改配置文件的方式来进行。

通常教程的一般步骤

我参考了一些教程,可以全程通过LuCI界面来配置,一般是这样:

  • 打开“接口”–>“WAN6”,然后找到“DHCP服务器”。有些版本是在界面上方的标签里,“防火墙设置”右侧;另一些版本是在界面底部有单独一栏。
  • 再点击“IPv6”标签,把“路由通告服务”、“DHCPv6服务”和“NDP代理”全部改成“中继模式”。
  • 再打开“LAN”接口的设置,然后同样找到“DHCP服务器”(位于界面下方),点击“IPv6”标签,同样把上述3个选项改为“中继模式”。

然而,问题来了:我手上3台OpenWRT路由器,“WAN6”接口设置里根本就没有“DHCP设置”! 就像这样:

我的其中一台路由器,“WAN6”接口设置里根本就没有“DHCP设置”。

截至目前,我还尚不清楚原因,可能与OpenWRT的版本或编译过程有关。在编译时,我可能漏了一些选项,以致LuCI界面没有为WAN6接口显示DHCP设置项。

另一种方法:修改配置文件

有些设置项在LuCI没有显示,并不代表它不支持,只是可能被屏蔽了。此时,修改配置文件就是首选方案。修改文件不仅仅可以用SSH登录来修改(使用OpenSSH),也可以借助WinSCP等工具。

第一步,通过SSH登录路由器(假设路由器地址为192.168.20.1):

ssh root@192.168.20.1

第二步,用VIM编辑器打开配置文件/etc/config/dhcp

vim /etc/config/dhcp

第三步,找到wan部分(config 'wan')并修改。在我的设备上,原本仅有interface和ignore两个选项(保持它们不动),那么就在原来基础上添加ra、dhcpv6、ndp和master四个选项。如下面的例子所示:

config dhcp 'wan'                                              
       option interface 'wan'                                
       option ignore '1'                                      
       option ra 'relay'                                      
       option dhcpv6 'relay'                                  
       option ndp 'relay'                                    
       option master '1'  

各个选项的含义如下:

  • ra:路由通告服务,改为relay即“中继模式”。
  • dhcpv6:DHCPv6服务,同样改为relay。
  • ndp:NDP代理,同样改为relay。
  • master:具体含义还要看看文档。根据late哥哥的博客,必须设置为1才能保证IPv6的中继起作用。

第四步,找到lan部分(config 'lan')并修改。通常这一部分默认已经有了多个选项,保持其他选项不动,只需要修改radhcpv6ndpmaster四个选项(如果没有就自己补)。修改方式同上。

如下面的例子所示:

config dhcp 'lan'                                              
       option interface 'lan'                                
       option start '100'                                    
       option limit '150'                                    
       option leasetime '12h'                                
       option dhcpv4 'relay'                                  
       option ra_slaac '1'                                    
       list ra_flags 'managed-config'                        
       list ra_flags 'other-config'                          
       option ra 'relay'                                      
       option dhcpv6 'relay'                                  
       option ndp 'relay'

当然,LuCI图形界面也有上述设置,所以可以在完成wan部分的设置后,到“接口”–>“LAN”中设置。

完成设置后,保存文件。

第五步,使设置生效。运行以下命令提交设置:

uci commit dhcp

也可以在LuCI的任意一个设置页面中,点击底部的“保存/应用”按钮生效。

就是这个按钮,点击它,可以使我们的设置生效。

禁用“禁止解析 IPv6 DNS 记录”功能

完成IPv6中继的设置后,还需要留意一个很坑人的功能:“禁止解析IPv6 DNS记录”。它在旧版本(19.07或更早)默认启用,也许是因为在当时,解析IPv6 DNS会造成一些站点无法访问。

但是如今IPv6的DNS服务器已经足够成熟,就不必打开这个功能了,否则路由器将无法解析任何IPv6域名。

依次进入“网络”–>“DHCP/DNS”–>“高级设置”,取消勾选“禁止解析IPv6 DNS记录”,然后保存并应用设置即可。

取消勾选“禁止解析IPv6 DNS记录”。

清空 IPv6 ULA前缀

ULA(Unique local address,唯一本地地址)是用于本地网络的IPv6地址。在以fc、fd等地址开头时,属于内网地址,相当于IPv4的192.168,无法通过公网访问。

OpenWRT默认的ULA地址前缀就是以fd开头的内网地址,因此建议将其清空。点击“网络”–>“接口”,找到最下方的“全局网络选项”,将“IPv6 ULA前缀”文本框清空,然后保存并应用设置。

清空“IPv6 ULA前缀”。

副作用

需要注意的是,启用IPv6中继也有副作用。

如果在OpenWRT运行全局代理、透明代理的应用,可能会导致连接路由器的设备无法访问代理网络。对于需要代理的站点,也只能访问它们的IPv6服务,不能访问IPv4服务。原因可能是这些应用默认会访问IPv6站点,但OpenWRT使用的DNS却无法解析。

这些都需要你做取舍。如果既需要透明代理又需要IPv6,可以考虑多配一台路由器,根据需要连接不同的热点。

拓展阅读

除了中继方式,你还可以使用NAT6来共享IPv6网络访问。

我在2018年写了一篇教程《在OpenWrt路由器上使用IPv6(采用NAT6方式)》,推荐你阅读。实测在锐捷校园网认证(有线网络)下,可以完美将校园网IPv6共享给局域网内的所有设备。

参考资料