一、为什么要有 IPv6:地球电话号码不够用了
先讲个接地气的故事。IPv4 地址一共只有约 43 亿(2 的 32 次方)个,换算成电话来理解:这就像给全地球的"联网设备"发门牌号,结果号码发到一半就发现——手机、电脑、摄像头、智能手表、汽车、冰箱全都要号,43 亿哪够分?于是工程师们发明了 NAT(网络地址转换)让大家"合租"一个公网号,但这就好比一整栋楼共用一个对外号码,快递(数据包)进来还得靠门卫(NAT 设备)一个个分拣,又慢又容易丢。
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 地址数量 | 约 43 亿 | 约 3.4×10³⁸ |
| 表示方式 | 点分十进制 192.168.1.1 | 冒分十六进制 2001:db8::1 |
| 地址配置 | 手动 / DHCP | SLAAC 无状态自动配置 |
| 广播 | 有 | 无(用组播代替) |
| 校验和 | 有(路由器要重算) | 无(交给上层,更快) |
| 安全性 | 靠上层自己加 | 原生支持 IPsec |
| 分片 | 中间路由器可分片 | 仅源端分片(扩展头) |
二、IPv6 地址长什么样:冒分十六进制
IPv4 用"点分十进制",四个数,每个 0–255。IPv6 把 128 位切成 8 段,每段 16 位(4 个十六进制字符),段与段之间用冒号 : 隔开,例如:
2001:0db8:0000:0000:0000:0000:0000:0001
这串看起来吓人,其实有规律可循。我们把它分成"网络前缀"和"接口 ID"两半,就像"省市区 + 门牌号":
前 64 位 = 网络前缀(相当于"小区") 后 64 位 = 接口 ID(相当于"具体哪家哪户") 2001:0db8:0000:0000 : 0000:0000:0000:0001 └──── 网络前缀 ────┘ └──── 接口 ID ────┘
2001:db8 是"国家+省",中间几段是"市/区/街道",最后 64 位是"楼栋门牌"。路由器只关心前面几段(像分拣中心只看省和市),主机才关心最后那截门牌。三、地址类型与简写规则
3.1 三种地址类型(注意:没有广播!)
- 单播(Unicast):一对一通信,就像你单独给朋友发微信。常见有:全球单播地址、链路本地地址、唯一本地地址。
- 组播(Multicast):一对多(只发给"订阅了的人"),代替了 IPv4 的广播。比如 FF02::1 表示"本链路所有节点"。
- 任播(Anycast):一对"最近的一个"。多个服务器配同一个任播地址,数据包自动送到离你最近的那台——CDN、DNS 根服务器最爱用它。
全球单播地址(公网可路由)
以 2000::/3 开头(实际常见的是 2 或 3 打头)。文档里统一用 2001:db8::/32 做示例(这是 RFC 指定的"文档专用"地址,就像 IPv4 的 192.168.x.x,不会真上公网冲突)。
链路本地地址(FE80::/10)
每个开启 IPv6 的接口都会自动生成,只在自己这条链路上有效,不能跨路由器。它用来做邻居发现、路由协议邻居建立。就像楼道里的"对讲机频道",只在同栋楼里喊话。
唯一本地地址(FC00::/7,常用 FD00::/8)
相当于 IPv4 的私网地址(10.x / 192.168.x),企业内部随便用,不出公网。适合内网、实验室、数据中心内部。
3.2 简写规则(必须会,否则看配置会头晕)
原始地址 2001:0db8:0000:0000:0000:0000:0000:0001 可以这样化简:
- 规则 1:前导零可省略 ——
0db8写成db8。 - 规则 2:连续全零段用 :: 代替(只能出现一次) —— 中间那一串
0000:0000:0000:0000变成::。
2001:0db8:0000:0000:0000:0000:0000:0001 ↓ 规则1 2001:db8:0:0:0:0:0:1 ↓ 规则2(连续零段合并为 ::) 2001:db8::1
:: 在一整串地址里只能用一个。因为一旦用两个,就不知道每段补几个零了。另外 2001:db8:: 和 ::1 都是合法的,但别写成 :: 表示"全零地址"(那是未指定地址,仅作源地址)。关于"子网掩码"的写法
IPv6 不用 255.255.255.0 这种写法,直接用前缀长度:/64、/48、/128。常见约定:运营商给你 /48 或 /56 一块,你内部每个网段用 /64。
四、地址是怎么自动生成的:不用 DHCP 也能上网
IPv4 时代,新电脑连上网第一件事是找 DHCP 服务器要地址。IPv6 更"聪明",它有两种主要玩法:
4.1 SLAAC(无状态自动配置)
设备把"网络前缀"(路由器通过 RA 消息广播出来)和自己网卡 MAC 算出的接口 ID 一拼,就得到了地址,全程不需要服务器。接口 ID 常用 EUI-64 规则:把 48 位 MAC 中间插入 FFFE,再把第 7 位翻转。
MAC 地址: 00-11-22-33-44-55 拆成两半: 0011:22 33:44:55 插入 FFFE: 0011:22FF:FE33:4455 第7位翻转(0→1):0211:22FF:FE33:4455 ← 这就是接口ID 拼上前缀 2001:db8:1::/64: 地址 = 2001:db8:1:0211:22ff:fe33:4455
4.2 DHCPv6(有状态)
企业里常需要统一管理、下发 DNS 服务器、做地址审计,这时用 DHCPv6。它和 SLAAC 还能组合:SLAAC 给地址、DHCPv6 只发 DNS(叫"无状态 DHCPv6")。
五、IPv6 与 IPv4 并存:三种主流过渡方式(核心重点)
现实是:互联网不可能一夜之间全换成 IPv6,未来很长一段时间都是"两车并行"。业内把过渡方案归纳为三大类:双栈(Dual Stack)、隧道(Tunneling)、翻译(Translation)。记住这个口诀——能双栈就双栈,跨孤岛用隧道,连老网靠翻译。
方式一:双栈(Dual Stack)—— 最推荐
设备同时跑 IPv4 和 IPv6 两套协议栈,哪个能用就用哪个。这是最干净、性能最好、也是 RFC 首选的方案。代价是配置和维护量翻倍。
! 思科开启 IPv6 路由,并给接口同时配两个地址 Router(config)# ipv6 unicast-routing Router(config)# interface GigabitEthernet0/1 Router(config-if)# ip address 192.168.1.1 255.255.255.0 Router(config-if)# ipv6 address 2001:db8:1::1/64 Router(config-if)# ipv6 enable
方式二:隧道(Tunneling)—— 把 IPv6 包塞进 IPv4 里运
当中间是一段"只懂 IPv4"的网络(IPv4 孤岛),而两端都是 IPv6 站点时,把整个 IPv6 包当"货物"封装进 IPv4 包里穿过去。常见有:
- 手动隧道 / GRE 隧道:最通用,两端地址固定,配置简单,适合站点互联。
- 6to4(2002::/16):自动把 IPv4 地址编进 IPv6 前缀,适合没有公网 IPv6 但想互通的站点。
- ISATAP:把 IPv6 over IPv4 延伸到主机,常用于企业内部"IPv4 网络里跑 IPv6 主机"。
- 6RD:运营商(如家庭宽带)常用的轻量级 6to4,把 IPv6 快速带给用户。
! 手动 GRE/IPv6 隧道示例:R1 与 R2 通过 IPv4 骨干互联 R1(config)# interface Tunnel0 R1(config-if)# ipv6 address 2001:db8:ff::1/64 R1(config-if)# tunnel source 192.0.2.1 R1(config-if)# tunnel destination 192.0.2.2 R1(config-if)# tunnel mode ipv6ip
方式三:翻译(Translation)—— 让 IPv6 和 IPv4 主机互相通话
当一边纯 IPv6、另一边纯 IPv4,且无法改协议时,需要"翻译官"。代表技术:
- NAT64:让 IPv6 主机访问 IPv4 服务器。常配合 DNS64(把 A 记录合成 AAAA),IPv6 终端无感访问老互联网。
- MAP-E / MAP-T:运营商级,把多个用户复用少量公网 IPv4,同时跑 IPv6。
- 464XLAT:手机蜂窝网络常见,解决 App 只认 IPv4 的问题。
! NAT64 最简示意(IOS-XE):把 IPv6 翻译成 IPv4 出网 R(config)# interface Gi0/0 R(config-if)# ipv6 enable R(config-if)# ipv6 nat64 enable ! inside(IPv6 侧) R(config)# interface Gi0/1 R(config-if)# ip nat outside R(config-if)# ipv6 nat64 enable ! outside(IPv4 侧,部分平台) R(config)# ipv6 nat64 prefix 64:ff9b::/96 ! 知名前缀,标识"要翻成IPv4"
六、邻居发现 NDP 与 SLAAC:IPv6 的"神经反射"
IPv4 靠 ARP 问"谁是 192.168.1.2?告诉我你的 MAC"。IPv6 取消了 ARP,改用 NDP(邻居发现协议),跑在 ICMPv6 上,用组播代替广播。它身兼数职:
- 地址解析:NS(邻居请求)/ NA(邻居通告)代替 ARP。
- 路由器发现:RS(路由请求)/ RA(路由通告),路由器周期播前缀,终端据此 SLAAC。
- 重复地址检测(DAD):上岗前先喊一声"有人用这个地址吗",没人回才正式用,避免撞号。
- 重定向:告诉主机"下次走另一条更近的路"。
! 查看邻居表(相当于 IPv4 的 show ip arp) Router# show ipv6 neighbors ! 查看收到的 RA、确认 SLAAC 是否正常 Router# show ipv6 interface GigabitEthernet0/1
七、思科基础配置实战:先把灯点亮
7.1 全局与接口
Router> enable Router# configure terminal Router(config)# hostname R1 R1(config)# ipv6 unicast-routing ! 关键:开启 IPv6 路由功能 R1(config)# interface GigabitEthernet0/0 R1(config-if)# ipv6 address 2001:db8:12::1/64 R1(config-if)# ipv6 address fe80::1 link-local ! 手动指定链路本地(可选) R1(config-if)# no shutdown R1(config-if)# exit
ipv6 cef 才开转发;新平台 ipv6 unicast-routing 一般就够了。配完用 show ipv6 interface brief 看接口状态。7.2 静态路由
! 指向下一跳(链路本地地址要加出接口) R1(config)# ipv6 route 2001:db8:2::/64 2001:db8:12::2 ! 或指出口(点到点链路常用) R1(config)# ipv6 route 2001:db8:2::/64 GigabitEthernet0/0 ! 默认路由 R1(config)# ipv6 route ::/0 2001:db8:12::2
! 验证 R1# show ipv6 route R1# ping 2001:db8:12::2 R1# traceroute 2001:db8:2::1
ipv6 route 2001:db8:2::/64 Gi0/0 fe80::2,否则路由器不知道从哪张嘴喊话。八、OSPFv3 配置:IPv6 时代的"开放最短路径优先"
OSPFv3 是 OSPF 的 IPv6 版本(RFC 5340)。和 OSPFv2 最大区别:OSPFv3 不在进程下配网络,而是在接口下直接挂 area;而且它只管"拓扑",地址信息交给接口自己带。一个 OSPFv3 进程还能同时承载 IPv4 和 IPv6(用 address-family)。
R1(config)# ipv6 unicast-routing R1(config)# ipv6 router ospf 1 R1(config-rtr)# router-id 1.1.1.1 ! 必须配,IPv6 没 IPv4 那种ID可借用 R1(config-rtr)# passive-interface Loopback0 # 环回不收发Hello R1(config-rtr)# exit R1(config)# interface GigabitEthernet0/0 R1(config-if)# ipv6 ospf 1 area 0 ! 接口直接加入 area 0 R1(config-if)# ipv6 ospf network point-to-point # 点对点可关 DR 选举 R1(config)# interface Loopback0 R1(config-if)# ipv6 address 2001:db8:1::1/128 R1(config-if)# ipv6 ospf 1 area 0
! 排错四件套 R1# show ipv6 ospf neighbor ! 看邻居是否 Full R1# show ipv6 ospf interface brief R1# show ipv6 route ospf R1# show ipv6 protocols
router-id 导致邻居起不来;②接口没 ipv6 enable;③area 不一致;④链路本地不通(中间交换机把组播/ICMPv6 给过滤了)。OSPFv3 用组播地址 FF02::5(AllSPFRouters)建邻居,记得放行。九、IS-IS for IPv6 配置:运营商骨干的"老黄牛"
IS-IS 原本是 ISO 的 CLNP 协议,天生"与三层地址无关",所以支持 IPv6 反而特别自然——只要在接口上启用 ipv6 router isis 即可。它因为收敛快、扩展性好,是运营商和大型数据中心 backbone 的宠儿。
R1(config)# router isis CORE R1(config-router)# net 49.0001.0000.0000.0001.00 ! NSAP,类似"区域+系统ID" R1(config-router)# is-type level-2 R1(config-router)# metric-style wide # 支持大度量、TE扩展 R1(config-router)# exit R1(config)# interface GigabitEthernet0/0 R1(config-if)# ipv6 router isis CORE # 就这么一行,接口就能通告 IPv6 R1(config-if)# isis network point-to-point R1(config)# interface Loopback0 R1(config-if)# ipv6 address 2001:db8:1::1/128 R1(config-if)# ipv6 router isis CORE
! 验证 R1# show isis neighbors R1# show ipv6 route isis R1# show clns neighbors # IS-IS 建立在 CLNS 之上
十、BGP IPv6 配置:跨自治系统的"外交官"
BGP 是互联网的"总调度"。IPv6 用 MP-BGP(多协议 BGP,RFC 4760),靠"地址族(address-family)"区分 IPv4 和 IPv6。配置核心是:在 address-family ipv6 下 activate 邻居、network 宣告网段。
10.1 基础 eBGP(IPv6 邻居)
R1(config)# router bgp 65001 R1(config-router)# bgp router-id 1.1.1.1 R1(config-router)# neighbor 2001:db8:12::2 remote-as 65002 R1(config-router)# address-family ipv6 R1(config-router-af)# neighbor 2001:db8:12::2 activate R1(config-router-af)# network 2001:db8:1::/48 # 宣告自己的 IPv6 块 R1(config-router-af)# exit-address-family
network 命令不是"建邻居",而是"把自家地盘登记入海关公告"。注意:network 的网段必须路由表里精确存在才会被宣告。10.2 iBGP + 环回口建邻居(稳定做法)
R1(config)# router bgp 65001 R1(config-router)# neighbor 2001:db8:1::2 remote-as 65001 # 对端 Loopback R1(config-router)# address-family ipv6 R1(config-router-af)# neighbor 2001:db8:1::2 activate R1(config-router-af)# neighbor 2001:db8:1::2 next-hop-self # iBGP 下一跳自我 R1(config-router-af)# exit-address-family
! 常用验证 R1# show bgp ipv6 unicast summary # 看邻居状态 Established R1# show bgp ipv6 unicast # 看 IPv6 路由表 R1# show bgp ipv6 unicast 2001:db8:2::/48
ebgp-multihop;② 用前缀列表(prefix-list)和 route-map 做入/出方向过滤,防止"误收全表"或"漏宣告";③ 运营商间常启用 soft-reconfiguration 便于不停邻居改策略。! 路由策略示例:只放行自家块 R1(config)# ipv6 prefix-list PL-OUT permit 2001:db8:1::/48 R1(config)# route-map RM-OUT permit 10 R1(config-route-map)# match ipv6 address prefix-list PL-OUT R1(config)# router bgp 65001 R1(config-router)# address-family ipv6 R1(config-router-af)# neighbor 2001:db8:12::2 route-map RM-OUT out
十一、过渡技术配置示例:把理论落地
11.1 6to4 自动隧道
把 IPv4 地址 192.0.2.1 转成 6to4 前缀 2002:c000:0201::/48(c0=192, 00=0, 02=2, 01=1),站点间自动互通。
R1(config)# interface Tunnel0 R1(config-if)# ipv6 address 2002:c000:0201::1/64 R1(config-if)# tunnel source 192.0.2.1 R1(config-if)# tunnel mode ipv6ip 6to4 R1(config)# ipv6 route 2002::/16 Tunnel0 # 所有 2002:: 走隧道
11.2 NAT64 + DNS64 速通
! DNS64:把只有 A 记录的域名合成 AAAA,引导 IPv6 终端走 NAT64 R(config)# dns64 64:ff9b::/96 R(config)# interface Gi0/0 R(config-if)# ipv6 nat64 enable R(config)# interface Gi0/1 R(config-if)# ipv6 nat64 enable R(config)# ipv6 nat64 prefix 64:ff9b::/96 R(config)# ipv6 nat64 v4 198.51.100.0 255.255.255.0 # 映射的 IPv4 池
十二、IPv6 新特性与新属性:它到底"新"在哪
- 简洁固定的基本头(40 字节):所有可选功能(分片、路由、安全)都塞进"扩展头(Extension Headers)",路由器转发更快,不用像 IPv4 那样每行都解析。
- 流标签(Flow Label,20 位):给"同一股流量"打标,路由器可据此做 QoS、负载均衡,不用深拆包就能识别视频流、游戏流。是 IPv6 专为本业务优化留的"快速通道"。
- 原生 IPsec:AH/ESP 是协议标配(虽然实际部署常交给 TLS),安全从设计就考虑。
- PMTU 发现(路径 MTU):中间路由器不分片,发现包太大就回 ICMPv6 让源端改小,避免"黑洞"。配合 IPv6 最小要求 MTU 1280 字节。
- 任播(Anycast):让"最近服务器"自动接单,是 DNS 根、CDN、Anycast BGP 的基石。
- 邻居发现 + 无状态自动配置:前面讲过,即插即用。
- 移动 IPv6(MIPv6):终端换网络不断连,靠"家乡代理"转发,适合车联网。
- 段路由 SRv6(Segment Routing IPv6):近年的"当红炸子鸡"。把路径写成一串 128 位"段 ID(SID)"压在报文头里,网络像按 GPS 导航走,做流量工程、SDN、切片极灵活。是 IPv6 在云网融合里最有想象力的新属性。
- IPv6 分段路由头(Routing Header 类型 4 / SRH):承载 SID 列表,支撑 SRv6。
- 更大地址空间支撑网络切片、IoT:给每辆车、每个传感器独立可寻址 IP,无需 NAT,端到端可达。
十三、工作中的常用技术方案(按场景)
企业网
- 双栈先行:服务器、核心、办公网全双栈,DNS 同时有 A/AAAA。
- 终端接入:SLAAC 给地址 + 无状态 DHCPv6 发 DNS;或全 DHCPv6。
- 出口:运营商给 IPv6 前缀做 PD(前缀下发),防火墙做状态化 IPv6 过滤。
- 安全:RA Guard、DHCPv6 Guard、IPv6 ACL、关掉不必要的扩展头(如 Routing Header 0 已废弃)。
数据中心
- Underlay 用 IS-IS / OSPFv3,Overlay 用 BGP EVPN(常跑在 IPv6 或 IPv4 上)。
- SRv6 做流量工程:跨机房选路、低时延保障、业务切片。
- 唯一本地地址(FD00::/8)做内网管理平面,全球单播做业务平面。
运营商 / 大型网络
- 骨干 IGP 用 IS-IS(level-2),eBGP 互联、iBGP 反射器(RR)分发路由。
- 用户侧 IPv6 下发:PPPoE/IPoE 配 DHCPv6-PD,或 6RD/464XLAT 给纯 IPv4 老终端兜底。
- 双栈 + NAT64 并存:新建业务优先 IPv6-only,老资源走 NAT64。
排错套路(通用)
# 一层层验证,从下往上 show ipv6 interface brief # 1. 接口有没有 UP、有没有地址 show ipv6 neighbors # 2. 二层邻居在不在(NDP) ping / traceroute ipv6 # 3. 三层通不通 show ipv6 route # 4. 路由有没有学到 show ipv6 protocols # 5. 路由协议配了没 show bgp ipv6 unicast summary # 6. BGP 邻居 Established ?
ipv6 unicast-routing。十四、速查与总结
常用命令速查表
| 目的 | 命令 |
|---|---|
| 开启 IPv6 路由 | ipv6 unicast-routing |
| 配接口地址 | ipv6 address 2001:db8::1/64 |
| 静态路由 | ipv6 route ::/0 2001:db8:12::2 |
| OSPFv3 接口启用 | ipv6 ospf 1 area 0 |
| IS-IS 接口启用 | ipv6 router isis CORE |
| BGP IPv6 邻居 | address-family ipv6 → neighbor X activate |
| 看邻居(NDP) | show ipv6 neighbors |
| 看路由 | show ipv6 route |
| 测试连通 | ping 2001:db8::1 / traceroute 2001:db8::1 |
一句话总结
IPv6 不是把 IPv4 换个长相,而是重新设计的"新楼房":地址多到用不完、即插即用(SLAAC/NDP)、无广播、原装安全。落地时记住三板斧——双栈是主旋律、隧道是过渡桥、翻译是补漏洞;路由侧 OSPFv3 适合企业、IS-IS 适合大网骨干、BGP 负责跨域外交;而 SRv6、流标签、任播这些新属性,正在把 IPv6 推向云网融合和智能联接的新舞台。把本文的配置逐条在 GNS3 / EVE-NG / 真机敲一遍,你就能从"看懂"走到"上手"。
十五、EVE-NG 实验台搭建:在电脑里建一座"思科城"
前面所有的命令,光看不练等于没学。最好的练习场是 EVE-NG(Emulated Virtual Environment - Next Generation)——一个跑在服务器/虚拟机里的网络仿真平台,能把多台思科路由器、交换机、防火墙、甚至主机"画"在一张拓扑图上,点一下就能连进控制台敲命令。它就像是你的"私人网络游乐园",不用买真设备也能练出真本事。
15.1 常用思科镜像(Node 类型)该怎么选
| 镜像 / 节点 | 平台 | 适合练什么 | 说明 |
|---|---|---|---|
| vIOS-L3 (VIOS) | IOS | 路由、ACL、OSPFv3、BGP、HSRP、DHCPv6 | 最轻量,首选入门;不支持 SRv6 |
| IOL / L2 / L3 (IOU) | IOS on Unix | 交换、二层安全、三层路由 | 资源占用极小,适合大拓扑 |
| CSR1000v | IOS-XE | 几乎所有路由特性、Zone-Based FW、DMVPN | 功能全,较吃内存 |
| XRv9000 / XRv | IOS-XR | SRv6、IS-IS 高级、Segment Routing、运营商特性 | 做 SRv6 必须用 XRv |
| NX-OSv / 9000v | NX-OS | 数据中心交换、VXLAN、EVPN | 数据中心场景 |
| ASA / FTDv | ASA | IPv6 状态化防火墙、NAT64 | 安全边界 |
| VPCS / Linux | 主机 | 当 PC 发 ping、测 SLAAC、做客户端 | 轻量终端 |
15.2 一个"万能练习拓扑"
后面所有章节我都将围绕下面这张图来演示(地址统一用 2001:db8::/32 文档段):
[Internet / 核心云]
|
R1 (AS65001, XRv) -- Gi0/0: 2001:db8:12::1/64
| \
Gi0/1 | \ Gi0/2
2001:db8:1::/64 | \ 2001:db8:2::/64
| | |
SW1 (L2) R2 (vIOS) R3 (vIOS)
| | | |
PC1 PC2 2001:db8:1::/64 loopback 2001:db8:3::3/128
(SLAAC) (DHCPv6)
[R1 同时是 DHCPv6 服务器 + RA Guard + ACL 边界]
15.3 设备初始化三件套(每台都先打)
Router> enable Router# configure terminal Router(config)# hostname R1 R1(config)# no ip domain-lookup ! 敲错命令不再傻等解析 R1(config)# line vty 0 4 R1(config-line)# login local R1(config-line)# transport input ssh R1(config)# username admin privilege 15 secret C1sco@123 R1(config)# ipv6 unicast-routing ! 永远别忘了开这个 R1(config)# service timestamps debug datetime msec R1(config)# end R1# write memory
十六、IPv6 ACL 访问控制列表:给网络装上"门禁系统"
防火墙和 ACL 是网络的门禁。IPv4 用 access-list,IPv6 用 ipv6 access-list。但有个天大的坑:IPv6 绝不能像 IPv4 那样简单地 "deny ip any any 然后只放行 tcp/udp",因为 IPv6 的"生命线"——ICMPv6(邻居发现 NDP)必须放行,否则全网断网!
16.1 IPv6 ACL 的两种写法
| 类型 | 命令 | 特点 |
|---|---|---|
| 编号标准 | ipv6 access-list 100 | 只能匹配源,功能弱,不推荐 |
| 命名扩展(推荐) | ipv6 access-list ACL-EDGE-IN | 可读、可插队、可加 remark,生产首选 |
16.2 一份"生产级"接入端口入方向 ACL(重点范例)
下面这份 ACL 是教科书级别的安全基线:先放 NDP 三件套(RA/NS/NA),再放重定向、DHCPv6,再放已建立会话回包,最后只放行管理段,其余全拒并记录。你在 EVE-NG 里把 PC 接到这个口,能立刻感受"放行/拒绝"的差异。
R1(config)# ipv6 access-list ACL-EDGE-IN R1(config-ipv6-acl)# remark === 第一步:放行 IPv6 生命线 NDP === R1(config-ipv6-acl)# permit icmp any any nd-na R1(config-ipv6-acl)# permit icmp any any nd-ns R1(config-ipv6-acl)# permit icmp any any nd-ra R1(config-ipv6-acl)# permit icmp any any router-advertisement R1(config-ipv6-acl)# permit icmp any any neighbor-solicitation R1(config-ipv6-acl)# permit icmp any any neighbor-advertisement R1(config-ipv6-acl)# permit icmp any any redirect R1(config-ipv6-acl)# remark === 第二步:放行 DHCPv6(客户端↔服务器)=== R1(config-ipv6-acl)# permit udp any any eq 546 R1(config-ipv6-acl)# permit udp any any eq 547 R1(config-ipv6-acl)# remark === 第三步:放行已建立的回包(类似 IPv4 established)=== R1(config-ipv6-acl)# permit tcp any any established R1(config-ipv6-acl)# permit ipv6 2001:db8:1::/64 any R1(config-ipv6-acl)# remark === 第四步:拒绝其余并记日志 === R1(config-ipv6-acl)# deny ipv6 any any log R1(config-ipv6-acl)# exit ! 应用到接口入方向(注意关键字是 ipv6 traffic-filter) R1(config)# interface GigabitEthernet0/1 R1(config-if)# ipv6 traffic-filter ACL-EDGE-IN in
ipv6 traffic-filter ... in|out,不是 IPv4 的 ip access-group。挂错关键字 ACL 等于没生效,是排错时第一要查的点。16.3 常见场景 ACL 范例
场景 A:只允许管理段 SSH 进设备,其余管理流量拒绝
R1(config)# ipv6 access-list ACL-VTY R1(config-ipv6-acl)# permit tcp 2001:db8:admin::/64 any eq 22 R1(config-ipv6-acl)# deny tcp any any eq 22 log R1(config)# line vty 0 4 R1(config-line)# access-class ACL-VTY in
场景 B:保护路由协议,拒绝外部发来的路由更新
R1(config)# ipv6 access-list ACL-CP R1(config-ipv6-acl)# permit ipv6 2001:db8:12::/64 any ! 只信邻居网段 R1(config-ipv6-acl)# deny ipv6 any any log R1(config)# interface Gi0/0 R1(config-if)# ipv6 traffic-filter ACL-CP in
场景 C:基于时间的 ACL(下班后禁某业务)
R1(config)# time-range WORK R1(config-time-range)# periodic weekdays 9:00 to 18:00 R1(config)# ipv6 access-list ACL-TIME R1(config-ipv6-acl)# permit ipv6 2001:db8:1::/64 any time-range WORK
16.4 匹配扩展头与片段的高级 ACL
IPv6 的分片、路由头等装在"扩展头"里。想拦掉危险的路由头(RH0 早已废弃)或做更细控制,可用:
R1(config-ipv6-acl)# deny ipv6 any any routing ! 拒掉含路由头的包 R1(config-ipv6-acl)# deny ipv6 any any fragments ! 拒掉分片(防分片攻击) R1(config-ipv6-acl)# permit ipv6 any any flow-label 1234 ! 按流标签放行(极少用)
log,上线前观察日志确认没误伤正常流量,再考虑去掉 log 减负。R1# show ipv6 access-list ! 看命中计数 R1# show ipv6 access-list ACL-EDGE-IN
十七、IPv6 第一跳安全(FHS):守住"最后一公里"
终端接入交换机/路由器这一跳叫"第一跳(First Hop)"。IPv6 因为靠组播和 RA 自动配置,比 IPv4 更容易在接入层被攻击:有人私接一台路由器乱发 RA,整层楼就"被改网关"了(中间人攻击)。思科提供一套 IPv6 First Hop Security(FHS) 全家桶来防,强烈建议在 EVE-NG 接入交换机上逐一带一遍。
| 功能 | 防什么 | 命令关键字 |
|---|---|---|
| RA Guard | 非法设备发伪造路由通告 | ipv6 nd raguard |
| DHCPv6 Guard | 私接非法 DHCPv6 服务器 | ipv6 dhcp guard |
| ND Inspection | NDP 欺骗(伪造邻居通告) | ipv6 nd inspection |
| Source Guard | 主机冒用他人 IPv6 源地址 | ipv6 source guard |
| Device Tracking | 建立"IP↔MAC↔端口"绑定表 | device-tracking |
17.1 RA Guard(最该开的那个)
SW1(config)# ipv6 nd raguard policy PROTECT-EDGE SW1(config-raguard)# device-role host ! 接主机的口:只允许它"收"RA SW1(config-raguard)# exit SW1(config)# ipv6 nd raguard policy PROTECT-UPLINK SW1(config-raguard)# device-role router ! 接上联的口:允许它"发"RA SW1(config)# interface range GigabitEthernet0/1 - 24 SW1(config-if-range)# ipv6 nd raguard attach-policy PROTECT-EDGE
17.2 DHCPv6 Guard + ND Inspection + Source Guard(组合拳)
! 1) DHCPv6 Guard:只允许"真服务器"方向 SW1(config)# ipv6 dhcp guard policy DHCP-TRUST SW1(config-dhcpguard)# device-role server SW1(config)# interface Gi0/1 SW1(config-if)# ipv6 dhcp guard attach-policy DHCP-TRUST ! 2) ND Inspection:基于绑定表校验 NS/NA,伪造邻居通告直接丢 SW1(config)# ipv6 nd inspection policy ND-POL SW1(config-nd-insp)# drop-unsecure SW1(config)# interface Gi0/1 SW1(config-if)# ipv6 nd inspection ND-POL ! 3) Source Guard:主机只能用绑定表里登记的地址 SW1(config)# ipv6 source guard policy SG-POL SW1(config-if)# interface Gi0/1 SW1(config-if)# ipv6 source guard SG-POL ! 4) 设备追踪(绑定表来源) SW1(config)# device-tracking tracking-policy DT-POL SW1(config)# interface Gi0/1 SW1(config-if)# device-tracking attach-policy DT-POL
SW1# show ipv6 nd raguard ! 看哪些口开了 RA Guard SW1# show ipv6 dhcp guard SW1# show ipv6 source guard binding ! 看绑定表
十八、DHCPv6 与前缀委派(PD):让地址"自动批发"
家里宽带、企业分支常遇到一种需求:总部/运营商有一个大 IPv6 块,要"批发"给下面每台路由器各自一段子网。这靠 DHCPv6 Prefix Delegation(PD,前缀委派)。本章把"服务器、中继、PD、无状态"四种都演示一遍。
18.1 有状态 DHCPv6 服务器(给终端发地址+DNS)
R1(config)# ipv6 dhcp pool POOL-LAN R1(config-dhcpv6)# address prefix 2001:db8:1::/64 R1(config-dhcpv6)# dns-server 2001:db8::53 R1(config-dhcpv6)# domain-name lab.local R1(config-dhcpv6)# exit R1(config)# interface GigabitEthernet0/1 R1(config-if)# ipv6 address 2001:db8:1::1/64 R1(config-if)# ipv6 dhcp server POOL-LAN R1(config-if)# ipv6 nd managed-config-flag ! M位=1:客户端用 DHCPv6 拿地址 R1(config-if)# ipv6 nd other-config-flag ! O位=1:用 DHCPv6 拿其他(如DNS)
18.2 前缀委派 PD(总部给分支批发子网)
=== 总部 R1:把 /40 大块切成 /48 一段段批发 === R1(config)# ipv6 local pool PD-POOL 2001:db8:100::/40 48 R1(config)# ipv6 dhcp pool PD R1(config-dhcpv6)# prefix-delegation pool PD-POOL R1(config-dhcpv6)# dns-server 2001:db8::53 R1(config)# interface Gi0/2 R1(config-if)# ipv6 dhcp server PD === 分支 R3:作为 DHCPv6 PD 客户端,拿到一段后自动起 LAN 口 === R3(config)# interface GigabitEthernet0/0 ! 连总部的上联 R3(config-if)# ipv6 dhcp client pd PREFIX-FROM-HQ R3(config)# interface GigabitEthernet0/1 ! 分支内网 R3(config-if)# ipv6 address PREFIX-FROM-HQ ::1/64 ! 用委派前缀自动生成 LAN 地址
R3# show ipv6 dhcp binding ! 看分支拿到了哪段 R3# show ipv6 interface Gi0/1
18.3 DHCPv6 中继(服务器不在本地网段)
R2(config)# interface Gi0/1 R2(config-if)# ipv6 dhcp relay destination 2001:db8::dhcp ! 指向服务器地址 R2(config-if)# ipv6 dhcp relay ! 部分平台需显式开启
18.4 无状态(SLAAC)验证
R1# show ipv6 dhcp binding ! 看租约 R1# show ipv6 neighbors ! SLAAC 主机应出现在邻居表 VPCS> ip auto ! VPCS 终端自动拿地址 VPCS> show ipv6 ! 看是否拿到 2001:db8:1::/64 下地址
十九、SRv6 段路由详细配置:把"路径"写进报文里
SRv6(Segment Routing over IPv6)是当下最火的 IPv6 新玩法,也是前面"新特性"里埋的彩蛋。它用 IPv6 的"路由扩展头(SRH)"携带一串 128 位的 SID(段标识),让源节点一次性规划好整条路径——不用沿途每台路由器都跑复杂协议算路,只要"照着信封上的路线走"即可。SRv6 在 EVE-NG 里要用 XRv9000(IOS-XR),因为 vIOS 不支持。
19.1 拓扑(用 3 台 XRv 演示)
R1 (2001:db8:1::1) ---- R2 (2001:db8:2::2) ---- R3 (2001:db8:3::3) L0: ::1 L0: ::2 L0: ::3 [源] [中间] [目的/End]
19.2 第一步:启用 Segment Routing 与 SRv6 Locator
Locator 是一段"本地 SID 地址池"。每个节点宣告自己的 locator 前缀,别的节点就知道"去这个前缀就是到这台设备"。
RP/0/0/CPU0:R1# configure RP/0/0/CPU0:R1(config)# segment-routing RP/0/0/CPU0:R1(config-sr)# srv6 RP/0/0/CPU0:R1(config-srv6)# encapsulation RP/0/0/CPU0:R1(config-encap)# source-address 2001:db8:1::1 ! 本节点源地址 RP/0/0/CPU0:R1(config-srv6)# locators RP/0/0/CPU0:R1(config-locators)# locator LOC1 RP/0/0/CPU0:R1(config-locator)# prefix 2001:db8:1:1::/64 ! 本节点 SID 池 RP/0/0/CPU0:R1(config-locator)# exit
19.3 第二步:IGP(IS-IS)通告 SRv6
让全网知道"谁是 End,谁的 locator 在哪"。用 IS-IS(或 OSPFv3)在 IPv6 地址族下挂 SRv6。
RP/0/0/CPU0:R1(config)# router isis CORE RP/0/0/CPU0:R1(config-isis)# net 49.0001.0000.0000.0001.00 RP/0/0/CPU0:R1(config-isis)# address-family ipv6 unicast RP/0/0/CPU0:R1(config-isis-af)# segment-routing srv6 RP/0/0/CPU0:R1(config-isis-af-srv6)# locator LOC1 RP/0/0/CPU0:R1(config-isis-af)# exit RP/0/0/CPU0:R1(config-isis)# interface GigabitEthernet0/0/0 RP/0/0/CPU0:R1(config-isis-if)# address-family ipv6 unicast RP/0/0/CPU0:R1(config-isis-if-af)# exit
19.4 第三步:定义 SRv6 路径(Segment List)与策略(Policy)
我们让流量从 R1 经 R2 到 R3,显式指定 SID 列表 [R2 的 End SID, R3 的 End SID]。
RP/0/0/CPU0:R1(config)# segment-routing RP/0/0/CPU0:R1(config-sr)# traffic-eng RP/0/0/CPU0:R1(config-sr-te)# segment-list SL-R1-R2-R3 RP/0/0/CPU0:R1(config-sl)# index 10 inline RP/0/0/CPU0:R1(config-sl-index)# srv6 sid 2001:db8:2:1:: ! R2 的 End SID RP/0/0/CPU0:R1(config-sl-index)# index 20 inline RP/0/0/CPU0:R1(config-sl-index)# srv6 sid 2001:db8:3:1:: ! R3 的 End SID RP/0/0/CPU0:R1(config-sl-index)# exit RP/0/0/CPU0:R1(config-sr-te)# policy POL-LOWLAT RP/0/0/CPU0:R1(config-sr-te-pol)# binding-sid 2001:db8:1:b:: # 绑定 SID(本地入口) RP/0/0/CPU0:R1(config-sr-te-pol)# color 100 end-point ipv6 2001:db8:3::3 RP/0/0/CPU0:R1(config-sr-te-pol)# candidate-paths RP/0/0/CPU0:R1(config-sr-te-pol-path)# preference 100 RP/0/0/CPU0:R1(config-sr-te-pol-path-pref)# explicit segment-list SL-R1-R2-R3 RP/0/0/CPU0:R1(config-sr-te-pol-path-pref)# exit
19.5 第四步:把业务流量引上这条策略(引流)
RP/0/0/CPU0:R1(config)# route-policy STEER-SR RP/0/0/CPU0:R1(config-rpl)# set srv6-te-policy color 100 RP/0/0/CPU0:R1(config-rpl)# end-set RP/0/0/CPU0:R1(config)# interface Gi0/0/0/1 RP/0/0/CPU0:R1(config-if)# ipv6 policy route-map STEER-SR in ! 入向引流
19.6 验证(关键排错命令)
RP/0/0/CPU0:R1# show segment-routing srv6 locator RP/0/0/CPU0:R1# show segment-routing traffic-eng policy ! 看状态 UP RP/0/0/CPU0:R1# show route ipv6 2001:db8:3::/64 ! 看是否走 SRv6 策略 RP/0/0/CPU0:R1# ping 2001:db8:3::3 source 2001:db8:1::1 RP/0/0/CPU0:R1# traceroute 2001:db8:3::3 ! 应依次经过 R2 SID、R3 SID
traceroute 输出,体会"源路由"带来的路径可控性。这层递进是理解 SRv6 最直观的方式。二十、网关冗余:HSRPv2 与 VRRPv3(IPv6 版)
一台网关路由器挂了,下面整层楼断网——这不行。于是有了"虚拟网关":两台路由器共用一个虚拟 IPv6 地址当网关,一台挂了另一台自动顶上。IPv6 用 HSRPv2 或 VRRPv3(注意:IPv6 不支持老 VRRPv2,必须用 v3)。
20.1 HSRPv2 for IPv6
R1(config)# interface GigabitEthernet0/1 R1(config-if)# ipv6 address 2001:db8:1::11/64 R1(config-if)# standby version 2 R1(config-if)# standby 1 ipv6 2001:db8:1::1 ! 虚拟网关地址 R1(config-if)# standby 1 priority 110 ! 优先级高者当 Active R1(config-if)# standby 1 preempt ! 恢复后抢回 Active R1(config-if)# standby 1 timers 1 3 R2(config)# interface GigabitEthernet0/1 R2(config-if)# ipv6 address 2001:db8:1::12/64 R2(config-if)# standby version 2 R2(config-if)# standby 1 ipv6 2001:db8:1::1 R2(config-if)# standby 1 priority 100 R2(config-if)# standby 1 preempt
20.2 VRRPv3 for IPv6
R1(config)# interface GigabitEthernet0/1 R1(config-if)# ipv6 address 2001:db8:1::11/64 R1(config-if)# vrrp 1 ipv6 2001:db8:1::1 R1(config-if)# vrrp 1 priority 110 R1(config-if)# vrrp 1 preempt R1(config-if)# vrrp 1 address-family ipv6 ! VRRPv3 需指定地址族
R1# show standby ipv6 # 看 Active/Standby 状态 R1# show vrrp ipv6
二十一、BGP IPv6 进阶实战:反射器、策略与 6VPE
第十章讲了 BGP IPv6 入门,这里进阶:大型网络里不可能让每台路由器两两建邻居(n 方关系爆炸),于是有 路由反射器(RR);跨 VPN 用 6VPE(VPNv6 over IPv6);精细化控制靠 Route-Map + 社区。
21.1 路由反射器(RR)—— 打破 iBGP 全互联
! R1 当 RR,R2/R3 当客户端,客户端之间不必互建邻居 R1(config)# router bgp 65001 R1(config-router)# neighbor 2001:db8:1::2 remote-as 65001 R1(config-router)# neighbor 2001:db8:1::3 remote-as 65001 R1(config-router)# address-family ipv6 R1(config-router-af)# neighbor 2001:db8:1::2 activate R1(config-router-af)# neighbor 2001:db8:1::2 route-reflector-client R1(config-router-af)# neighbor 2001:db8:1::3 activate R1(config-router-af)# neighbor 2001:db8:1::3 route-reflector-client R1(config-router-af)# exit-address-family
! 客户端只需和 RR 建邻居 R2(config)# router bgp 65001 R2(config-router)# neighbor 2001:db8:1::1 remote-as 65001 R2(config-router)# address-family ipv6 R2(config-router-af)# neighbor 2001:db8:1::1 activate
21.2 ADD-PATH 与路由策略(社区、Local Pref)
R1(config)# router bgp 65001 R1(config-router)# bgp additional-paths select R1(config-router)# bgp additional-paths send receive R1(config-router)# address-family ipv6 R1(config-router-af)# neighbor 2001:db8:12::2 additional-paths send ! 用 Route-Map 调 Local Preference + 打社区 R1(config)# route-map RM-IN permit 10 R1(config-route-map)# match ipv6 address prefix-list PL-PREF R1(config-route-map)# set local-preference 200 R1(config-route-map)# set community 65001:100 R1(config)# ipv6 prefix-list PL-PREF permit 2001:db8:9::/48 R1(config)# router bgp 65001 R1(config-router)# address-family ipv6 R1(config-router-af)# neighbor 2001:db8:12::2 route-map RM-IN in
21.3 6VPE:在 IPv6 骨干上跑客户 IPv6 VPN
! 骨干用 IPv6 建邻居,客户路由用 VPNv6 承载(MPLS 或 SRv6 传输) PE(config)# vrf definition CUST-A PE(config-vrf)# rd 65001:10 PE(config-vrf)# address-family ipv6 PE(config-vrf-af)# route-target export 65001:10 PE(config-vrf-af)# route-target import 65001:10 PE(config)# router bgp 65001 PE(config-router)# neighbor 2001:db8:1::1 remote-as 65001 PE(config-router)# address-family vpnv6 PE(config-router-af)# neighbor 2001:db8:1::1 activate PE(config)# interface Gi0/2 PE(config-if)# vrf forwarding CUST-A PE(config-if)# ipv6 address 2001:db8:a::1/64
PE# show bgp vpnv6 unicast all # 看 VPNv6 路由 PE# show vrf # 看 VRF 接口
二十二、运维管理配置:让 IPv6 网络"可被管好"
网络不仅要通,还要可监控、可管理。下面这些基于 IPv6 的运维配置,是生产网上线前必做的安全与可观测项。
22.1 SSH over IPv6 + 管理平面 ACL
R1(config)# ip domain-name lab.local R1(config)# crypto key generate rsa modulus 2048 R1(config)# ip ssh version 2 R1(config)# line vty 0 4 R1(config-line)# transport input ssh R1(config-line)# access-class ACL-VTY in ! 见 16.3 场景A ! 从管理机用 IPv6 登录: # ssh admin@2001:db8:1::1
22.2 NTP / Syslog / SNMP over IPv6
R1(config)# ntp server 2001:db8::10 R1(config)# ntp server 2001:db8::11 R1(config)# logging host 2001:db8::20 R1(config)# snmp-server community ROlab RO # 配合 ACL R1(config)# snmp-server host 2001:db8::30 version 3 auth user1
22.3 NetFlow / IPFIX for IPv6(流量可视化)
R1(config)# flow record REC-IPV6 R1(config-flow-record)# match ipv6 source address R1(config-flow-record)# match ipv6 destination address R1(config-flow-record)# match ipv6 protocol R1(config-flow-record)# collect counter bytes R1(config)# flow exporter EXP-COL R1(config-flow-exporter)# destination 2001:db8::30 R1(config-flow-exporter)# transport udp 9999 R1(config)# flow monitor MON-IPV6 R1(config-flow-monitor)# record REC-IPV6 R1(config)# interface Gi0/1 R1(config-if)# ipv6 flow monitor MON-IPV6 input
22.4 管理平面防护(Control Plane Policing, CoPP)
R1(config)# class-map CM-CP-ICMP R1(config-cmap)# match protocol icmp R1(config)# policy-map PM-COPP R1(config-pmap)# class CM-CP-ICMP R1(config-pmap-c)# police 100000 conform-action transmit exceed-action drop R1(config)# control-plane R1(config-cp)# service-policy input PM-COPP
二十三、EVE-NG 综合演练:从零搭一张"双栈企业网"
把前面的知识点串成一次完整实验。下面是一份"通关任务清单",建议你在 EVE-NG 按序完成,每步都用验证命令确认,再进下一步。
23.1 任务清单
- 搭拓扑:R1(XRv/CSR) 作核心+网关,SW1(L2) 下挂 PC1/PC2,R2/R3 作分支,Cloud 模拟外网。
- 基础双栈:所有接口同时配 IPv4 + IPv6,开
ipv6 unicast-routing,PC 用 SLAAC 拿到 2001:db8:1::/64 地址。 - IGP:核心跑 IS-IS(第十五/九章),分支用 OSPFv3(第八章),确保 R1 学到全网信 IPv6 路由。
- 出口 BGP:R1 与外网 Cloud 用 eBGP IPv6 通联(第十章),宣告 2001:db8::/32。
- 网关冗余:R1/R2 对内网做 HSRPv2 虚拟网关(二十章)。
- 地址下发:R1 做 DHCPv6 服务器 + PD(十八章),分支 R3 通过 PD 自动获得子网。
- 安全门禁:接入口挂 ACL-EDGE-IN(十六章),放行 NDP/DHCPv6,拒绝其余。
- 第一跳安全:SW1 开 RA Guard + ND Inspection + Source Guard(十七章)。
- 过渡验证:用 6to4 或 NAT64+DNS64 让纯 IPv6 的 PC2 访问纯 IPv4 资源(第十一章)。
- SRv6(进阶):若用 XRv,加 SRv6 让 R1→R3 走指定路径(十九章)。
- 可观测:开 NetFlow、NTP、Syslog(二十二章),确认监控台收到数据。
23.2 一份"端到端连通性"验收脚本
# 在 PC1 (VPCS) 上 VPCS> ip auto VPCS> show ipv6 VPCS> ping 2001:db8:1::1 # 通虚拟网关? VPCS> ping 2001:db8:3::3 # 通分支? VPCS> ping 2001:db8::ffff # 通外网(经 NAT64)? VPCS> traceroute 2001:db8:3::3 # 路径是否符合预期? # 在 R1 上 R1# show ipv6 route R1# show ipv6 neighbors R1# show bgp ipv6 unicast summary R1# show standby ipv6 R1# show ipv6 access-list ACL-EDGE-IN
二十四、常见坑与排查宝典(踩过的雷都在这)
最后送你一本"避坑字典"。这些坑我在 EVE-NG 和客户现场都见过,按出现频率排序。
| 现象 | 根因 | 解法 |
|---|---|---|
| 地址配了但 ping 不通同网段 | 没开 ipv6 unicast-routing 或接口没 ipv6 enable | 全局开路由;接口 ipv6 enable |
| ACL 一挂全网断 | IPv6 ACL 把 ICMPv6/NDP 也 deny 了 | 先 permit nd-ns/na/ra,再 deny |
| MTU 相关偶发大包不通 | 隧道封装使 MTU 变小,PMTU 被防火墙挡 | 调小接口 MTU 为 1400/1480,放行 ICMPv6 type 2(PTB) |
| 邻居起不来(OSPFv3/ISIS) | 忘配 router-id,或 area/net 不一致 | 补 router-id;核对 area/net |
| BGP 邻居 Idle | 下一跳不可达 / 没 activate 地址族 | 确认 IPv6 连通;address-family 下 activate |
| SLAAC 拿到地址但上不了网 | RA 没带默认路由 / M 位误开 | 确认 RA 正常;需 DNS 才开 O 位 |
| 私接路由器导致整层改网关 | 没开 RA Guard | 接入口 ipv6 nd raguard attach-policy |
| IPv6 流量CPU飙高 | 缺少 CoPP,ND 泛洪 | 配 control-plane policing |
| SRv6 策略不生效 | Locator 未通告 / XRv 不支持 | IS-IS 下 segment-routing srv6 locator;换 XRv9000 |
| NAT64 访问失败 | DNS64 没配或前缀不对 | 配 dns64 64:ff9b::/96 且终端走 DNS64 |
24.1 三条"保命"排错命令
R# debug ipv6 packet ! 看包进出不走(慎用于生产) R# show ipv6 icmp # 看 NS/NA/RA 统计,判断 NDP 是否异常 R# show tech-support | redirect # 收集全量信息求助
24.2 给新手的三句忠告
- 永远先确认链路本地通不通:IPv6 一切邻居关系都建立在 FE80:: 之上,链路本地不通,上层全完。
- ICMPv6 是朋友不是敌人:别像封 IPv4 ICMP 那样封它,至少放行类型 133–137(RS/RA/NS/NA/Redirect)和 PTB(2)。
- 在 EVE-NG 里把每个错误都"造"出来一次:故意不配 router-id、故意挂错 ACL,看现象、记解法,比看十遍书都牢。