问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何在定制编译的OpenWrt固件中启用IPv6

创作时间:
作者:
@小白创作中心

如何在定制编译的OpenWrt固件中启用IPv6

引用
1
来源
1.
https://ruanluyou.net/ask/how-to-enable-ipv6-in-custom-compiled-openwrt-firmware.html

IPv6已经成为越来越重要的组成部分,随着 IPv4 地址的枯竭,许多网络设备和服务开始逐步迁移至 IPv6。而OpenWrt作为一个广泛应用于路由器的开源项目,其定制性和灵活性使得用户能够根据自己的需求进行编译和配置。软路由将详细介绍在定制编译的OpenWrt 固件中启用 IPv6 的过程,包括配置、编译和测试等步骤。

一、了解 IPv6 与 OpenWrt

IPv6(Internet Protocol version 6)是互联网协议的第六版,其主要目的是替代 IPv4,以应对地址枯竭的问题。IPv6 不仅提供了几乎无限的地址空间,还引入了更好的网络层安全性以及自动配置的特性。

OpenWrt 是一个基于Linux的嵌入式操作系统,专为路由器和网络设备设计。它的灵活性和模块化使得用户可以根据自己的需求选择和配置软件包,包括支持 IPv6。

二、准备工作

1. 环境配置

在编译 OpenWrt之前,首先确保你的开发环境配置正确。一般来说,编译 OpenWrt 需要以下组件:

  • 安装依赖包(如
    git
    ,
    gcc
    ,
    make
    ,
    libncurses5-dev
    ,
    zlib1g-dev
    等)。

  • 使用Ubuntu或Debian等 Linux 发行版。

  • 合理的硬件资源,最好有至少 4GB 的 RAM。

可以通过以下命令安装必要的依赖包:

sudo apt update  
sudo apt install git build-essential libncurses5-dev zlib1g-dev gawk flex git-core unzip wget  

2. 获取 OpenWrt 源代码

需要从 OpenWrt 的官方网站或 GitHub 仓库获取源代码。使用以下命令克隆 OpenWrt 的源代码:

git clone https://git.openwrt.org/openwrt/openwrt.git  
cd openwrt  

之后可以选择一个稳定的版本,例如:

git checkout v23.05.0  

3. 更新和安装 Feeds

在 OpenWrt 中,"feeds"是预编译的软件包集合,用于扩展 OpenWrt 的功能。你可以通过以下命令更新并安装 feeds:

./scripts/feeds update -a  
./scripts/feeds install -a  

三、配置 IPv6

1. 安装 IPv6 相关软件包

在 OpenWrt 中启用 IPv6,需要安装一些核心软件包,包括:

  • ip6tables

  • odhcpd
    (DHCPv6 服务器)

  • dnsmasq
    (DHCP 和 DNS 服务器,支持 IPv6)

使用以下命令来安装这些软件包:

make menuconfig  

在菜单中,进入
Network
子菜单,勾选如下选项:

  • Networking --->

  • IPv6 support

  • ip6tables

  • Odhcpd (IPv6 DHCP server)

你也可以启用其他相关软件包。

2. 配置网络

在启用 IPv6 功能前,还需要进行一些网络配置。编辑
files/etc/config/network
文件,可以按以下结构配置 IPv6:

config interface 'lan'  
option type 'bridge'  
option ifname 'eth0.1'  
option proto 'static'  
option ip6assign '60' # 为下游设备分配的 IPv6 地址前缀长度  
option ipaddr '192.168.1.1'  
option netmask '255.255.255.0'  

在此配置中,
ip6assign
参数会根据指定的前缀长度,为连接到 LAN 的设备分配 IPv6 地址。这里建议使用
60
,即向设备分配 64 位的 IPv6 地址。

配置 WAN 接口以取得外部 IPv6 地址。改动
files/etc/config/network
中对应的
wan
部分:

config interface 'wan'  
option proto 'dhcp'  
option reqaddress 'force' # 强制获取 IPv6 地址  
option reqprefix 'auto' # 自动获取 IPv6 前缀  

在此配置中,
reqprefix
选项确保从 ISP 获取 IPv6 前缀。

3. DNS 配置

厦门的域名解析支持 IPv6 非常重要,因此需要确保你的
dnsmasq
配置正确。可以在
files/etc/config/dhcp
文件中添加或修改以下配置:

config dhcp 'wan'  
option interface 'wan'  
option ignore '1' # 如果 WAN 是动态的,忽略 WAN 的 DHCP  

确保 IPv6 DNS 也能被客户端使用,编辑
files/etc/config/dhcp
中的
lan
部分,加入以下内容:

config dnsmasq  
option domainneeded '1'  
option filters '/localdomain/'  
option local '/lan/'  
option expandhosts '1'  
option authoritative '1'  
option rebind_protection '1'  
option edns0 '1'  
list server '2001:4860:4860::8888' # Google DNS IPv6  
list server '2001:470:20::2' # Hurricane Electric IPv6 Tunnel Broker DNS  

四、编译

做好所有配置后,可以开始编译 OpenWrt 固件。使用以下命令:

make menuconfig # 确保所有设置都正确  
make -j$(nproc) # 使用可用的 CPU 核心进行编译  

编译完成后,固件文件将保存在
bin/targets
目录下。

五、刷机与测试

编译好的固件可以通过 Web 界面或 SSH 命令行刷入支持的路由器中。若使用 Web 界面,登陆路由器后,进入"系统"-"固件升级",选择编译好的固件文件进行上传。

刷机完成后,重新启动路由器,并确保网络配置(特别是 IPv6 部分)正确应用。可以通过 SSH login 进入路由器,使用以下命令查看 IPv6 状态:

ifconfig  

检查
eth0
,
eth1
等接口,确认是否成功获取到了 IPv6 地址。使用
ping6
命令测试 IPv6 连通性:

ping6 google.com  

若测试成功,表示 IPv6 已经成功启用。

六、常见问题与解决

在启用 IPv6 的过程中,可能会遇到一些常见问题。下面是一些可能的解决方案:

  1. 未能获取 IPv6 地址:检查 ISP 是否提供 IPv6 支持,确认 WAN 接口配置无误。

  2. 客户端无法获取 IPv6 地址:确保
    odhcpd
    服务正在运行,可以通过
    /etc/init.d/odhcpd restart
    来重启服务。

  3. 无法访问 IPv6 网站:确认相关的 DNS 设置和防火墙配置正确,使用
    ip6tables -L
    查看规则。

七、总结

在定制编译的 OpenWrt 固件中启用 IPv6 虽然需要一定的技术基础,但也并不是非常复杂的过程。通过上文所述的步骤和配置,可以有效地为家庭或小型企业网络启用 IPv6,提供更好的网络连接和服务体验。在未来,IPv6 将成为互联网中的常态,因此早日适应这种变迁是非常重要的。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号