IPv6 技术手册:从入门到高手

以思科(Cisco IOS / IOS-XE)设备为主线,从地址原理讲到工程落地

内容覆盖:IPv6 基础 · 与 IPv4 并存过渡 · OSPFv3 / IS-IS / BGP 配置 · 新特性 · 生产实战方案

零基础友好 配置可复制 通俗易懂 2026 实用版

一、为什么要有 IPv6:地球电话号码不够用了

先讲个接地气的故事。IPv4 地址一共只有约 43 亿(2 的 32 次方)个,换算成电话来理解:这就像给全地球的"联网设备"发门牌号,结果号码发到一半就发现——手机、电脑、摄像头、智能手表、汽车、冰箱全都要号,43 亿哪够分?于是工程师们发明了 NAT(网络地址转换)让大家"合租"一个公网号,但这就好比一整栋楼共用一个对外号码,快递(数据包)进来还得靠门卫(NAT 设备)一个个分拣,又慢又容易丢。

生动比喻:IPv4 是一栋老破小,门牌号(地址)紧缺,大家挤在一起;IPv6 是一大片新建别墅区,给地球上每一粒沙子都分一个独立门牌号都绰绰有余——它拥有 2 的 128 次方个地址,大约是 3.4×10³⁸ 个。这个数量大到什么程度?给全宇宙每颗星星的每颗行星上的每台设备都发号,都发不完。
对比项IPv4IPv6
地址长度32 位128 位
地址数量约 43 亿约 3.4×10³⁸
表示方式点分十进制 192.168.1.1冒分十六进制 2001:db8::1
地址配置手动 / DHCPSLAAC 无状态自动配置
广播无(用组播代替)
校验和有(路由器要重算)无(交给上层,更快)
安全性靠上层自己加原生支持 IPsec
分片中间路由器可分片仅源端分片(扩展头)
记住一句话:IPv6 不是"给 IPv4 打补丁",而是"推倒重来盖新楼"。所以很多 IPv4 的老习惯(比如靠广播、靠 ARP、靠 NAT)在 IPv6 里都换套路了。

二、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 ────┘
生活类比:把 IPv6 地址想成快递地址——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
比喻:路由器在楼道大喇叭喊"本小区前缀是 2001:db8:1::",你家门口的"门牌"由你家锁(MAC)自己定,喊一声就拼出来了,不用去物业(DHCP)排队登记。

4.2 DHCPv6(有状态)

企业里常需要统一管理、下发 DNS 服务器、做地址审计,这时用 DHCPv6。它和 SLAAC 还能组合:SLAAC 给地址、DHCPv6 只发 DNS(叫"无状态 DHCPv6")。

工程经验:数据中心服务器喜欢用"静态 + EUI-64 可预测",方便运维找机器;普通终端用 SLAAC 最省事;需要集中管控的办公网用 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
比喻:双栈就像你手机同时支持 4G 和 5G,哪个信号好用哪个。最稳,但两张卡都要缴费(两套地址都要管)。

方式二:隧道(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
隧道缺点:封装有额外开销(MTU 变小,容易分片),排错也更绕。生产环境能用双栈就别堆隧道。

方式三:翻译(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"
选路决策表:内部新建网络 → 直接上双栈;两地已有 IPv6 但要穿过 IPv4 骨干 → 隧道;纯 IPv6 终端要访问纯 IPv4 资源 → NAT64/DNS64。实际大型网络往往是"双栈为主、隧道过渡、翻译补漏"三件套混用。

六、邻居发现 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
安全提醒:NDP 没有认证,容易被"恶意 RA"投毒( rogue RA 攻击)。企业网建议在交换机上开 RA Guard(IPv6 路由通告防护)DHCPv6 Guard,相当于给楼道大喇叭装个"真物业认证"。

七、思科基础配置实战:先把灯点亮

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
老版本 IOS 还要先 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
易错点:用链路本地地址(FE80::)做下一跳时,必须同时写出接口,例如 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 之上
IS-IS 的优雅之处:同一个进程里 IPv4 和 IPv6 共享一套拓扑和邻居关系。想只跑 IPv6?不配 IPv4 地址就行,协议照常工作。这正是它比 OSPF 在"多地址族"场景里更省心的地方。

十、BGP IPv6 配置:跨自治系统的"外交官"

BGP 是互联网的"总调度"。IPv6 用 MP-BGP(多协议 BGP,RFC 4760),靠"地址族(address-family)"区分 IPv4 和 IPv6。配置核心是:在 address-family ipv6activate 邻居、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
比喻:BGP 邻居就像两个国家的海关代表,坐在边界(边界路由器)上,互相通报"我家有哪些地址段(前缀)"。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 多跳要 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 池
家庭宽带/手机用户其实已经在用 464XLAT 或 MAP:你手机拿到的是 IPv6 地址,但 App 发的还是 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,端到端可达。
SRv6 小剧场:想象你要从北京去上海,IPv4 像"每到一个路口问一次交警怎么走";SRv6 像出发前手机就生成一条导航——"经天津、南京、到上海",把这条路写进信封(报文头),每个中转站照着走就行,谁都改不了你的路线,还能随时换路。这就是"源路由"的魅力。

十三、工作中的常用技术方案(按场景)

企业网

  • 双栈先行:服务器、核心、办公网全双栈,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 故障都卡在接口没 enable、链路本地不通、或忘了 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 / 真机敲一遍,你就能从"看懂"走到"上手"。

免责说明:命令行示例基于 Cisco IOS / IOS-XE 通用语法,不同版本(如 NX-OS、XR)关键字略有差异,生产环境请先在测试环境验证。示例地址统一使用文档保留段 2001:db8::/32,不会与公网冲突。

十五、EVE-NG 实验台搭建:在电脑里建一座"思科城"

前面所有的命令,光看不练等于没学。最好的练习场是 EVE-NG(Emulated Virtual Environment - Next Generation)——一个跑在服务器/虚拟机里的网络仿真平台,能把多台思科路由器、交换机、防火墙、甚至主机"画"在一张拓扑图上,点一下就能连进控制台敲命令。它就像是你的"私人网络游乐园",不用买真设备也能练出真本事。

比喻:EVE-NG 好比《模拟城市》游戏——你在画布上拖几台路由器、用"网线"把它们连起来,每台设备都是一台真真实实的虚拟机,跑着和真机一模一样的 IOS 系统。你在里面敲的命令,和将来在生产网敲的,效果完全一致。

15.1 常用思科镜像(Node 类型)该怎么选

镜像 / 节点平台适合练什么说明
vIOS-L3 (VIOS)IOS路由、ACL、OSPFv3、BGP、HSRP、DHCPv6最轻量,首选入门;不支持 SRv6
IOL / L2 / L3 (IOU)IOS on Unix交换、二层安全、三层路由资源占用极小,适合大拓扑
CSR1000vIOS-XE几乎所有路由特性、Zone-Based FW、DMVPN功能全,较吃内存
XRv9000 / XRvIOS-XRSRv6、IS-IS 高级、Segment Routing、运营商特性做 SRv6 必须用 XRv
NX-OSv / 9000vNX-OS数据中心交换、VXLAN、EVPN数据中心场景
ASA / FTDvASAIPv6 状态化防火墙、NAT64安全边界
VPCS / Linux主机当 PC 发 ping、测 SLAAC、做客户端轻量终端
SVI / SRv6 等重点实验建议组合:骨干用 XRv9000(练 SR、IS-IS),接入用 vIOS-L3(练 ACL、HSRP、DHCPv6),终端用 VPCS 或一台 Ubuntu 镜像。一台 16G 内存的笔记本就能撑起 10 来台节点的中型拓扑。

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 边界]
拓扑搭建小贴士:EVE-NG 里用 Cloud 节点接宿主机的环回口,就能让虚拟机里的 IPv6 真正访问外网做 DNS64 实测;如果只想纯内网练手,全用文档段地址即可,不必接真外网。

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)必须放行,否则全网断网!

为什么 ICMPv6 不能封:IPv4 里 ARP 是独立协议,封了 ICMP 不影响二层互通;IPv6 里"找邻居 MAC"这件事是靠 ICMPv6 的 NS/NA 消息完成的。你若把所有 ICMPv6 一锅端,主机就再也问不到邻居的 MAC,结果就是——地址配了,灯亮了,就是 ping 不通,连网关都找不到。所以 IPv6 ACL 的第一铁律:先放行必要的 ICMPv6 类型,再谈其他。

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 把 ACL 挂到接口的关键字是 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 ! 按流标签放行(极少用)
经验法则:生产网 ACL 宁"白名单"勿"黑名单"。先想清楚"允许什么",其余一律 deny log。每加一条 deny 都带 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 InspectionNDP 欺骗(伪造邻居通告)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
比喻:RA Guard 就像给每个工位的话筒装了开关——员工(主机)只能听广播,不能自己拿话筒喊"我是网关"(发 RA);只有物业经理(上联路由器)的话筒才能广播。这样谁都当不了假网关。

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 ! 看绑定表
注意:ND Inspection / Source Guard 需要设备追踪(Device Tracking)提供绑定表;某些 vIOS/IOL 镜像不完全支持 FHS 全部特性,建议在 EVE-NG 用较新的 IOS-XE(CSR1000v)或支持 FHS 的 L2 镜像验证。这正是"用对镜像"的重要性。

十八、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)
RA 里的两个开关:路由器通告(RA)里有个 M 位和 O 位。M=1 说"别自己 SLAAC 了,去 DHCPv6 领地址";O=1 说"SLAAC 拿地址就行,但 DNS 这种额外信息去 DHCPv6 领"。只开 O 位 = 无状态 DHCPv6(地址 SLAAC、DNS DHCPv6),最常见。

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
PD 是运营商 IPv6 宽带的灵魂:你家的光猫从运营商拿到一个 /60 或 /64,路由器再给每个 VLAN 分一个 /64。EVE-NG 里用两台 vIOS 一演总部一演分支,能直观看到地址"自动下发"。

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 不支持。

再讲一遍比喻:传统 MPLS/流量工程像"每到一个路口看路牌决定怎么走";SRv6 像出发前在快递单上写好"北京→天津→济南→南京→上海"一串中转站(这就是 SID 列表),每个中转站拆开看下一站是谁,照走即可。好处:路径可编排、可低时延、可业务切片,且天然兼容 IPv6 转发面。

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
XRv 与 vIOS 差异提醒:SRv6 命令在 IOS-XR 上,且需要设备支持(XRv9000 免费镜像够练手,但生产用 8000 系列)。若你的 EVE-NG 只有 vIOS,本章可先"读懂",等导入 XRv 再实操。Locator 前缀不要和真实业务地址冲突,建议用独立规划段。
学习路线:先在无 SR 的纯 IS-IS IPv6 拓扑里把 R1→R3 跑通(见第九章),再加上 SRv6 层,对比 traceroute 输出,体会"源路由"带来的路径可控性。这层递进是理解 SRv6 最直观的方式。

二十、网关冗余:HSRPv2 与 VRRPv3(IPv6 版)

一台网关路由器挂了,下面整层楼断网——这不行。于是有了"虚拟网关":两台路由器共用一个虚拟 IPv6 地址当网关,一台挂了另一台自动顶上。IPv6 用 HSRPv2VRRPv3(注意:IPv6 不支持老 VRRPv2,必须用 v3)。

比喻:两台保安(R1、R2)共用一个对讲机频道(虚拟地址 2001:db8:1::1)。平时 R1 拿着对讲机(Active),R2 standby 待命;R1 晕了,R2 立刻捡起对讲机继续应答,员工(PC)完全无感。

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
HSRP 是思科私有,VRRP 是标准协议(多厂商互通)。两者都靠组播 hello 保活。IPv6 下 HSRP 用的是链路本地虚拟 MAC 映射,别手配冲突 MAC。生产中常与 SLAAC 协同:RA 里把虚拟地址作为默认网关通告给终端。

二十一、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
比喻:iBGP 默认要求"所有人互相加好友"才能同步路由,100 台就要 4950 对好友,累死。RR 像班级群里的"群主"——大家只和群主私聊,群主负责把消息转发给全班。route-reflector-client 就是把某人设为"群成员"。

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 接口
6VPE 与前面 SRv6 是"好搭档":用 IPv6/SRv6 做 Underlay 转发,用 VPNv6 做多租户隔离,常见于运营商和大型集团骨干。EVE-NG 里用 XRv 把"IS-IS SRv6 + BGP VPNv6"串起来,就是一张迷你运营商网。

二十二、运维管理配置:让 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
CoPP 限制送往 CPU 的协议报文速率,能挡掉"ICMP 洪水""ND 泛洪"等把控制面打瘫的攻击。IPv6 因为 NDP/RA 都走 CPU,CoPP 比 IPv4 更该配。

二十三、EVE-NG 综合演练:从零搭一张"双栈企业网"

把前面的知识点串成一次完整实验。下面是一份"通关任务清单",建议你在 EVE-NG 按序完成,每步都用验证命令确认,再进下一步。

23.1 任务清单

  1. 搭拓扑:R1(XRv/CSR) 作核心+网关,SW1(L2) 下挂 PC1/PC2,R2/R3 作分支,Cloud 模拟外网。
  2. 基础双栈:所有接口同时配 IPv4 + IPv6,开 ipv6 unicast-routing,PC 用 SLAAC 拿到 2001:db8:1::/64 地址。
  3. IGP:核心跑 IS-IS(第十五/九章),分支用 OSPFv3(第八章),确保 R1 学到全网信 IPv6 路由。
  4. 出口 BGP:R1 与外网 Cloud 用 eBGP IPv6 通联(第十章),宣告 2001:db8::/32。
  5. 网关冗余:R1/R2 对内网做 HSRPv2 虚拟网关(二十章)。
  6. 地址下发:R1 做 DHCPv6 服务器 + PD(十八章),分支 R3 通过 PD 自动获得子网。
  7. 安全门禁:接入口挂 ACL-EDGE-IN(十六章),放行 NDP/DHCPv6,拒绝其余。
  8. 第一跳安全:SW1 开 RA Guard + ND Inspection + Source Guard(十七章)。
  9. 过渡验证:用 6to4 或 NAT64+DNS64 让纯 IPv6 的 PC2 访问纯 IPv4 资源(第十一章)。
  10. SRv6(进阶):若用 XRv,加 SRv6 让 R1→R3 走指定路径(十九章)。
  11. 可观测:开 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
"通关"标志:PC1 能 SLAAC 自动上网、能跨分支互访、能经 NAT64 访问 IPv4、网关冗余切换无感、接入口私接路由器不生效(RA Guard 拦住)。做到这五点,你已具备独立交付一张双栈企业网的能力。

二十四、常见坑与排查宝典(踩过的雷都在这)

最后送你一本"避坑字典"。这些坑我在 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,看现象、记解法,比看十遍书都牢。
本扩充章节所有命令均可在 EVE-NG 的对应镜像中验证:基础/ACL/HSRP/DHCPv6 用 vIOS-L3 或 CSR1000v;FHS 用支持的设备;SRv6/IS-IS 高级/6VPE 用 XRv9000。示例地址统一为文档保留段 2001:db8::/32,可直接复制练习,不会与公网冲突。