针对 OpenWrt 24.10,这里是一个完整的 UCI 配置方案开通 IPv6 功能:
完整的 IPv6 UCI 配置
1. 防火墙配置 (/etc/config/firewall)
确保防火墙允许 IPv6 转发:
# 编辑防火墙配置
uci set firewall.@defaults[0].forward='ACCEPT'
uci set firewall.@defaults[0].fullcone6='1'
# 确保LAN到WAN的转发规则存在
uci set firewall.@zone[0].forward='ACCEPT' # LAN zone
uci set firewall.@zone[1].forward='ACCEPT' # WAN zone
# 提交更改
uci commit firewall
2. DHCP 和 RA 配置 (/etc/config/dhcp)
配置 LAN 口的 DHCPv6 和 RA(路由器通告):
# 配置LAN口DHCPv6
uci set dhcp.lan.dhcpv6='server'
uci set dhcp.lan.ra='server'
uci set dhcp.lan.ra_default='1'
# 设置RA标志
uci set dhcp.lan.ra_management='1'
uci set dhcp.lan.ra_adv='1'
# 配置PD(前缀委托)
uci set dhcp.lan.ndp='hybrid'
uci set dhcp.lan.ra_flags='managed'
# 提交更改
uci commit dhcp
3. 网络接口配置 (/etc/config/network)
确保网络接口支持 IPv6:
# 为LAN口启用IPv6
uci set network.lan.ip6assign='64'
uci set network.lan.delegate='1'
# 提交更改
uci commit network
4. 完整的配置脚本
创建一个完整的配置脚本 enable_ipv6.sh:
#!/bin/sh
echo "启用IPv6转发..."
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 'net.ipv6.conf.all.forwarding=1' >> /etc/sysctl.conf
echo "配置防火墙..."
uci set firewall.@defaults[0].forward='ACCEPT'
uci set firewall.@defaults[0].fullcone6='1'
echo "配置DHCPv6和RA..."
uci set dhcp.lan.dhcpv6='server'
uci set dhcp.lan.ra='server'
uci set dhcp.lan.ra_default='1'
uci set dhcp.lan.ra_management='1'
uci set dhcp.lan.ra_adv='1'
uci set dhcp.lan.ndp='hybrid'
uci set dhcp.lan.ra_flags='managed'
echo "配置网络接口..."
uci set network.lan.ip6assign='64'
uci set network.lan.delegate='1'
echo "提交更改..."
uci commit firewall
uci commit dhcp
uci commit network
echo "重启服务..."
service firewall restart
service dnsmasq restart
service odhcpd restart
service network reload
echo "IPv6配置完成!"
5. 对于旁路由的特殊配置
如果你的设备是旁路由,使用这个配置:
#!/bin/sh
echo "配置旁路由IPv6转发..."
# 启用IPv6转发
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 'net.ipv6.conf.all.forwarding=1' >> /etc/sysctl.conf
# 防火墙配置 - 允许所有转发
uci set firewall.@defaults[0].forward='ACCEPT'
uci set firewall.@defaults[0].fullcone6='1'
# 重要:旁路由禁用RA服务,让主路由处理
uci set dhcp.lan.ra='relay'
uci set dhcp.lan.dhcpv6='relay'
uci set dhcp.lan.ndp='relay'
uci set dhcp.lan.ra_slaac='1'
# 提交并重启
uci commit firewall
uci commit dhcp
service firewall restart
service odhcpd restart
echo "旁路由IPv6配置完成!"
6. 验证配置
配置完成后,验证服务状态:
# 检查服务状态
service firewall status
service odhcpd status
# 检查IPv6路由
ip -6 route show
# 测试连通性
ping6 -c 3 2400:3200::1
# 检查防火墙规则
nft list ruleset
7. 一键执行
将上面的脚本保存为文件,然后执行:
# 给执行权限
chmod +x enable_ipv6.sh
# 执行脚本
./enable_ipv6.sh
配置说明
ra='server':启用路由器通告dhcpv6='server':启用DHCPv6服务器forward='ACCEPT':允许防火墙转发ip6assign='64':分配64位前缀给LAN- 旁路由模式:使用
relay模式,不干扰主路由的IPv6服务
选择适合你网络拓扑的配置方案执行即可!