1. 教育网出口改造中IPv4到IPv6的平滑演进思路
教育网出口的IPv6改造,这两年从"选做题"变成了"必做题"。我前后参与过几个高校出口的改造项目,从最初的纯IPv4双栈试点,到后来整网双栈+IPv6优先,踩过的坑不算少。山石防火墙(Hillstone)在教育网出口的占有率不低,很多学校的出口NAT、策略路由、流控都跑在它上面,所以"IPv4转IPv6"这件事,落到实操层面,很大一部分工作就是在山石上敲命令、调策略、验证连通性。
先把话说清楚:所谓"IPv4转IPv6",在教育网出口场景下,绝大多数情况不是把IPv4彻底关掉,而是让IPv6流量能正常出去、IPv4流量继续保留,也就是双栈共存、逐步迁移。原因很现实——教育网内部还有大量只支持IPv4的老系统(一卡通、老教务、部分实验设备),你不可能一刀切。所以真正要做的是三件事:接口开启IPv6、路由打通IPv6、策略放行IPv6,同时保证IPv4那套NAT和策略不受影响。
这篇文章面向的是有一定网络基础、手上有山石防火墙、正在做或准备做教育网IPv6改造的运维人员。我会把命令、思路、参数计算、排查方法都摊开讲,尽量做到你拿着就能对着设备敲。需要提前说明的是,不同山石型号和StoneOS版本命令略有差异,我下面给的以较常见的StoneOS 5.5R系列为参考,你在自己设备上敲之前,务必先show version确认版本,并在业务低峰期操作。
提示:任何出口设备的IPv6改造,都建议先在测试环境或备用链路上验证一遍完整流程,再上生产。教育网出口一旦中断,影响的是全校,没有回旋余地。
2. 改造前的整体设计与关键决策
2.1 为什么教育网出口普遍选择双栈而不是纯IPv6
很多人一开始会问:既然要转IPv6,为什么不干脆纯IPv6?答案藏在教育网的实际流量结构里。教育网(CERNET)本身IPv6资源非常充裕,很多高校早就拿到了/48甚至更大的IPv6地址段,出口到教育网骨干的IPv6链路也基本就绪。但问题在于访问目标:国内大量网站、SaaS服务、老旧业务系统仍然只有IPv4,纯IPv6出口意味着这些目标全部不可达。
双栈的核心价值在于"两条腿走路":IPv6目标走IPv6,IPv4目标走IPv4,客户端根据DNS返回的AAAA/A记录自动选择。这样既拿到了IPv6的收益(教育网IPv6出口通常不计费或计费很低,能省下可观的IPv4出口流量费),又不牺牲可达性。这也是为什么几乎所有教育网出口改造,最终落地的都是双栈方案。
从山石防火墙的角度看,双栈意味着同一物理接口上同时配置IPv4和IPv6地址,路由表里同时有IPv4和IPv6条目,安全策略里同时放行两种协议族。这三块任何一块没配好,IPv6流量就会断在某个环节。
2.2 地址规划:IPv6地址段怎么切、怎么分
IPv4时代大家习惯了精打细算,IPv6时代地址多到用不完,但规划反而更重要,因为地址太长,随手分配后期根本记不住。教育网出口常见的做法是:从学校申请到的/48里,切出一个/64给出口互联,再切若干/64给不同区域。
举个实际的规划例子(地址为示意,请替换成你自己的段):
| 用途 | 地址段示例 | 说明 |
|---|---|---|
| 出口互联(防火墙到上行) | 2001:da8:xxxx:1::/64 | 与教育网骨干对接 |
| 内网服务器区 | 2001:da8:xxxx:10::/64 | 对外发布服务 |
| 办公/教学终端 | 2001:da8:xxxx:20::/64 | 通过RA下发 |
| 网络设备管理 | 2001:da8:xxxx:ff::/64 | 设备loopback、管理地址 |
这里有个经验:出口互联段尽量用/64而不是/126或/127。虽然点对点链路理论上/127更省,但教育网上游设备有时对非/64的互联段处理不一致,用/64最省心,反正地址不缺。我见过有项目为了"规范"用/126,结果上游RA或ND处理异常,排查了半天。
2.3 山石防火墙在双栈中的角色定位
山石防火墙在教育网出口通常承担几个角色:边界安全策略、NAT、路由、流控、日志审计。IPv6改造后,这些角色要逐一确认:
- 安全策略:IPv6策略和IPv4策略是分开的,需要单独放行。
- NAT:IPv6一般不做NAT(教育网给的是公网IPv6段),但如果有特殊需求(比如隐藏内网结构),可以配NAT66,不过教育网场景下很少用。
- 路由:IPv6路由需要单独配置,静态或动态(OSPFv3、BGP4+)。
- 流控和日志:确认这些功能对IPv6流量的支持情况,部分老版本对IPv6流控支持有限。
注意:山石部分型号在开启IPv6后,会话表容量和新建速率会受影响,改造前建议看一下当前会话数,评估设备余量。教育网出口高峰期会话数动辄几十万,别让IPv6把设备压垮。
3. 山石防火墙IPv6配置的核心命令与实操
3.1 接口开启IPv6并配置地址
第一步永远是接口。山石防火墙的接口默认可能没开IPv6,需要先开启IPv6转发能力,再给接口配地址。
# 进入配置模式 configure # 全局开启IPv6(部分版本需要) ipv6 enable # 进入出口接口(假设为ethernet0/0) interface ethernet0/0 # 配置IPv6地址,/64前缀 ipv6 address 2001:da8:xxxx:1::2/64 # 开启IPv6(接口级别) ipv6 enable # 可选:配置链路本地地址自动生成,一般默认即可 exit内网接口同理,配上网关地址:
interface ethernet0/1 ipv6 address 2001:da8:xxxx:20::1/64 ipv6 enable exit这里有个细节:接口的IPv6地址配好后,别忘了检查接口状态。用show interface ethernet0/0看IPv6那一行是不是up,地址有没有生效。我遇到过接口IPv4是up的,但IPv6因为没ipv6 enable而没起来,流量直接黑洞。
3.2 路由配置:静态路由与动态路由的选择
教育网出口的IPv6路由,取决于上游怎么给你。常见两种:
情况一:上游只给一个默认路由。这是最常见的,教育网骨干给你一个下一跳地址,你配默认路由指过去。
# 配置IPv6默认路由,下一跳为上游互联地址 ipv6 route ::/0 2001:da8:xxxx:1::1情况二:上游跑动态路由(OSPFv3或BGP4+)。部分教育网节点会和你跑BGP,交换IPv6前缀。
# OSPFv3示例 router ospfv3 router-id 1.1.1.1 area 0 interface ethernet0/0 exit exit exit # BGP4+示例(简化) router bgp 65001 bgp router-id 1.1.1.1 address-family ipv6 unicast neighbor 2001:da8:xxxx:1::1 remote-as 65000 neighbor 2001:da8:xxxx:1::1 activate network 2001:da8:xxxx:20::/64 exit exit选静态还是动态,看上游要求。教育网出口大多数是静态默认路由,简单可靠。如果学校有多个出口、需要做流量调度,才考虑动态。静态路由的好处是可控,出问题好排查;坏处是上游前缀变化时要手动改。教育网IPv6前缀一般很稳定,静态够用。
3.3 安全策略放行IPv6流量
这是最容易漏的一步。山石的安全策略默认是按协议族区分的,你IPv4策略配得再全,IPv6流量如果没有对应策略,一样被丢。
# 进入策略配置 policy # 放行内网到外网的IPv6流量 rule from trust to untrust action permit # 匹配IPv6流量 source-address any destination-address any service any # 关键:指定IPv6 ip-version ipv6 exit如果内网有服务器要对外提供IPv6服务,还需要配从untrust到dmz的入向策略,并且只放行必要端口:
rule from untrust to dmz action permit source-address any destination-address 2001:da8:xxxx:10::80/128 service tcp-80 service tcp-443 ip-version ipv6 exit提示:策略里的
ip-version ipv6这个匹配条件,不同StoneOS版本写法可能不同,有的是ipv6关键字,有的是在地址对象里体现。敲之前用?看命令补全,或者查对应版本的命令手册。别照搬,版本差异真的会坑人。
3.4 验证连通性的完整命令链
配完不是就完事了,必须验证。我习惯按这个顺序查:
# 1. 看接口IPv6地址是否生效 show interface ethernet0/0 # 2. 看IPv6路由表 show ipv6 route # 3. 从防火墙ping上游IPv6地址 ping ipv6 2001:da8:xxxx:1::1 # 4. 从防火墙ping一个公网IPv6目标(如教育网内的IPv6站点) ping ipv6 2001:da8:xxxx::1 # 5. 看会话表里有没有IPv6会话 show session ipv6 # 6. 看策略命中计数 show policy statistics这一套下来,基本能定位问题出在哪一层。接口没起来查接口,路由没有查路由,能ping通但终端不通查策略和RA。
4. 终端侧配合与常见问题排查
4.1 终端如何拿到IPv6地址:RA与DHCPv6
防火墙内网接口配好IPv6地址后,终端要能自动获取地址,靠的是RA(Router Advertisement)。山石防火墙可以发RA,也可以只做转发、由内网核心交换机发RA。教育网出口场景下,通常由核心交换机或专门的DHCPv6服务器负责地址下发,防火墙只做转发。
如果让防火墙发RA:
interface ethernet0/1 ipv6 address 2001:da8:xxxx:20::1/64 ipv6 enable # 开启RA ipv6 nd ra enable # 配置前缀下发 ipv6 nd ra prefix 2001:da8:xxxx:20::/64 # 配置DNS(可选) ipv6 nd ra dns 2001:da8:xxxx:ff::53 exit终端拿到地址后,用ipconfig /all(Windows)或ip -6 addr(Linux)确认。Windows还要看ipconfig里有没有默认网关的IPv6地址,没有网关就走不出去。
4.2 常见问题速查表
| 现象 | 可能原因 | 排查命令/方法 |
|---|---|---|
| 终端拿不到IPv6地址 | RA未开启或未下发前缀 | 防火墙show ipv6 nd,终端抓包看有无RA |
| 终端有地址但ping不通外网 | 默认路由缺失或错误 | show ipv6 route看::/0 |
| 能ping通上游但访问网站失败 | 安全策略未放行IPv6 | show policy statistics看命中 |
| 部分网站能开部分不能 | DNS未返回AAAA或目标无IPv6 | 终端nslookup -type=AAAA |
| IPv6通但IPv4断了 | 策略或路由被误改 | 对比改造前后配置 |
| 速度慢 | 流控或MTU问题 | 检查MTU,IPv6建议1500以下 |
4.3 MTU与分片:IPv6特有的坑
IPv6和IPv4一个很大的区别是中间路由器不做分片,分片只能由源端做。这意味着如果路径MTU发现(PMTUD)有问题,大包会被丢,表现为"小网页能开、大文件下载卡死"。
教育网出口如果走了隧道(比如某些过渡技术),MTU会被压缩。这时候要在接口上调整MTU:
interface ethernet0/0 ipv6 mtu 1480 exit1480是个经验值,给隧道头留了20字节余量。具体多少要看你的链路。我遇到过IPv6能ping通(小包)但SSH连不上(大包),最后就是MTU问题,调到1480就好了。
注意:MTU调整要两端一致,或者至少源端小于路径最小MTU。改完记得清一下会话,让新会话用新MTU。
5. 实操心得与避坑经验
5.1 改造窗口和回滚方案
教育网出口改造,一定要有回滚方案。我的做法是:改造前show configuration把完整配置导出备份,改的时候一条一条来,每改一块验证一块。如果IPv6出问题,先把IPv6策略禁用或路由删掉,IPv4不受影响,业务先恢复,再慢慢查。
窗口选择上,教育网出口的流量高峰是白天上课时间,晚上和凌晨是低峰。改造尽量放在凌晨,但也要注意有些学校的夜间备份、同步任务会跑,别撞上。
5.2 版本差异与命令确认
前面反复强调版本差异,这里再具体说。StoneOS 5.5R和更早的5.0R,IPv6相关命令差别不小。比如ip-version ipv6这个策略匹配,有的版本是ipv6,有的版本要在地址对象里选IPv6类型。最稳妥的办法是在设备上敲?看补全,或者找对应版本的配置手册。别拿网上的命令直接贴,我见过有人贴了不同版本的命令,设备直接报错,还好没生效。
5.3 日志和监控要跟上
IPv6流量上来后,日志量会增加。山石的日志如果送到外部分析平台,要确认平台支持IPv6格式的日志解析。另外,监控上要加IPv6的会话数、流量、丢包指标,别等用户报障了才发现。
5.4 一个真实的排查案例
有个项目,IPv6配完后,大部分终端正常,但某栋楼的部分终端死活拿不到IPv6地址。查了半天,发现那栋楼的接入交换机上有个老的RA Guard或者类似的防护功能,把RA包拦了。这种问题在防火墙侧是看不出来的,得去接入层查。所以IPv6排查要端到端,别只盯着出口设备。
6. 后续扩展与个人体会
IPv6改造不是一次性的,后面还有不少可以做的:比如IPv6流控策略(教育网IPv6虽然便宜但也不是无限)、IPv6日志审计(合规要求)、IPv6地址管理(IPAM系统要支持IPv6)。这些都可以在双栈稳定后逐步推进。
我个人在实际操作中的体会是:IPv6改造技术上不难,难在细节和验证。命令就那么几条,但每一条背后的前提条件、版本差异、终端配合,任何一个环节漏了都会出问题。我的习惯是列一个检查清单,从接口、路由、策略、RA、DNS、MTU一项项过,过完再让用户测。这样虽然慢一点,但返工少。
最后分享一个小技巧:改造期间,在防火墙上开一个临时的IPv6调试策略,把deny的IPv6流量日志打开,这样一旦有流量被丢,日志里能看到,比盲猜快得多。改造完再把这个调试策略关掉,避免日志爆炸。