OpenWRT下3G/QMI拨号获取IPv6的完整配置指南(含避坑技巧)
在移动网络逐渐成为固定宽带重要补充甚至替代方案的今天,为远程监控、车载网关或临时办公节点等场景提供完整的网络接入能力,IPv6的支持已不再是“锦上添花”,而是“雪中送炭”。许多基于OpenWRT的便携式路由器或开发板,配合USB 3G/4G调制解调器(Modem),是实现这类移动接入的理想选择。然而,从仅获取IPv4地址到稳定获得全球可路由的IPv6地址,这条路上布满了配置文件、脚本修改和协议协商的“暗礁”。本文将从一个实际调试者的视角,带你穿越3G(PPP)与QMI(基于高通芯片的现代调制解调器协议)两种主流拨号方式下的IPv6配置迷宫,不仅提供可复现的步骤,更着重分享那些官方文档未曾明说、却能让配置成功率倍增的底层原理与避坑技巧。
1. 环境准备与核心概念澄清
在动手修改任何配置文件之前,理清几个关键概念能让你在遇到问题时,不至于在日志的海洋里迷失方向。OpenWRT的网络配置体系非常灵活,但也因此增加了复杂性。
首先,理解“协议类型”与“PDP类型”的区别至关重要。 在移动网络语境下:
- 协议类型 (Proto):指OpenWRT侧用于管理WAN口连接的守护进程或协议,例如
3g、qmi、ncm或dhcp。这决定了OpenWRT如何与调制解调器“对话”。 - PDP类型 (PDP Type):指调制解调器与运营商网络之间建立的“分组数据协议”上下文所支持的网络层协议。常见值有
IP(仅IPv4)、IPV6(仅IPv6)和IPV4V6(双栈)。这是能否获取IPv6地址的决定性因素之一。
很多配置失败,根源在于协议类型支持IPv6,但未正确通知调制解调器使用 IPV4V6 的PDP类型去激活网络上下文。
其次,识别你的调制解调器工作模式。 将Modem插入OpenWRT设备后,通过SSH登录并执行 ls /dev/ttyUSB* 和 ls /dev/cdc-wdm*。典型的模式有:
- 仅串口模式 (ttyUSBx):调制解调器暴露多个串行端口,分别用于AT命令、PPP拨号和数据传输。常见于较老的3G模块,使用
proto=3g。 - QMI模式 (cdc-wdm0 + ttyUSBx):调制解调器通过
cdc-wdm0设备提供QMI管理接口,同时可能仍有ttyUSBx用于AT命令。这是现代4G Cat.4及以上模块的常见模式,使用proto=qmi。 - MBIM模式:另一种现代管理协议,本文不展开。
注意:同一个物理模块,通过不同的驱动或固件,可能工作在不同模式。使用
lsusb和dmesg | grep usb命令可以查看模块的USB PID/VID,进而查询其支持的最佳模式。
最后,确认运营商支持。 并非所有运营商或所有套餐都默认开启了IPv6。一个简单的测试方法是,将你的SIM卡放入一部支持IPv6的智能手机(如开启原生IPv6的Android手机),在蜂窝数据下访问 test-ipv6.com 或 ipv6-test.com。如果手机无法获得全球IPv6地址,那么首先需要联系运营商开通此服务。
2. 3G (PPP) 拨号模式下的IPv6配置
3G拨号,本质上是利用PPP(点对点协议)在串行链路上建立连接。OpenWRT的 proto=3g 后端会调用 chat 脚本进行AT命令交互,然后启动 pppd 进行PPP协商。为获取IPv6,我们需要在PPP协商的“两头”都进行配置:一是让调制解调器向网络请求IPv6上下文,二是让 pppd 协商IPv6CP(IPv6控制协议)。
2.1 基础网络配置
首先,编辑 /etc/config/network,找到或添加你的3G接口配置。一个支持双栈的配置示例如下:
config interface 'modem_wan'
option proto '3g'
option device '/dev/ttyUSB3' # 数据端口,通常为最后一个ttyUSB
option service 'umts' # 或 'evdo',取决于网络类型
option apn 'your.apn.here' # 替换为你的运营商APN
option username 'optional_username'
option password 'optional_password'
option metric '40'
option disabled '0'
option pincode '0000' # 如果SIM卡需要PIN码
option dialnumber '*99#' # 常见的拨号号码,部分运营商可能不同
option pdptype 'IPV4V6' # 关键!指示调制解调器请求双栈PDP上下文
关键参数解析:
device: 务必确认这是用于数据传输的端口,而非AT命令端口。通常ttyUSB0用于AT命令,ttyUSB1用于GPS(如果有),ttyUSB2用于PCUI,ttyUSB3用于数据。可以通过轮流发送AT命令来测试。pdptype: 设置为IPV4V6是获取IPv6的核心。但请注意,仅在此处设置可能不够,因为chat脚本中的AT命令可能覆盖此设置。
2.2 修改Chat脚本以强制IPv4v6上下文
这是第一个“坑点”。OpenWRT的 3g 协议在初始化时,会调用 /etc/chatscripts/3g.chat(对于UMTS/GSM网络)或 /etc/chatscripts/evdo.chat(对于CDMA网络)。这些脚本中的AT命令 AT+CGDCONT 负责设置PDP上下

140

被折叠的 条评论
为什么被折叠?



