1. 为什么需要IPv6隧道技术想象一下你住在两个被河流隔开的小岛上现在需要在两个岛之间建立快递通道。IPv4网络就像那条河流而IPv6隧道就是架在河上的快递专用桥。随着IPv4地址资源枯竭IPv6部署势在必行但在过渡期我们常常会遇到这样的场景两个IPv6网络之间隔着纯IPv4的骨干网。我在实际企业网络改造中就遇到过这种情况。某次客户需要将北京和上海两个办公区的IPv6子网打通但中间的运营商线路只支持IPv4。这时候IPv6-over-IPv4隧道技术就成了救命稻草它能让IPv6数据包搭乘IPv4的顺风车到达对端。2. 实验环境准备2.1 设备选型与拓扑搭建打开华为eNSP我们先搭建一个典型的三段式网络拓扑左侧IPv6网络AR1路由器 PC1中间IPv4骨干网AR2路由器右侧IPv6网络AR3路由器 PC2具体连接方式AR1的G0/0/0接PC1IPv6-onlyAR1的G0/0/1接AR2的G0/0/1IPv4AR2的G0/0/2接AR3的G0/0/1IPv4AR3的G0/0/0接PC2IPv6-only建议给每台路由器都配置Loopback地址这在后续隧道配置时会非常有用。我习惯用1.1.1.1/32、3.3.3.3/32这样的地址作为路由器的ID标识。2.2 基础网络配置先确保IPv4骨干网能正常通信# AR1配置 interface GigabitEthernet0/0/1 ip address 192.168.12.1 255.255.255.0 # AR2配置 interface GigabitEthernet0/0/1 ip address 192.168.12.2 255.255.255.0 interface GigabitEthernet0/0/2 ip address 192.168.23.2 255.255.255.0 # AR3配置 interface GigabitEthernet0/0/1 ip address 192.168.23.3 255.255.255.0测试下AR1和AR3之间能否ping通对方的直连接口这是隧道能建立的前提条件。如果这一步都通不了后面所有配置都是白费功夫。3. 手工隧道配置详解3.1 创建隧道接口隧道接口就像在两个路由器之间拉了一条虚拟专线。在AR1和AR3上分别执行# AR1配置 interface Tunnel0/0/0 tunnel-protocol ipv6-ipv4 # 指定隧道类型 source 192.168.12.1 # 本地出口IPv4地址 destination 192.168.23.3 # 对端出口IPv4地址 ipv6 enable ipv6 address 2001:db8:1::1/64 # 隧道接口的IPv6地址 # AR3配置 interface Tunnel0/0/0 tunnel-protocol ipv6-ipv4 source 192.168.23.3 destination 192.168.12.1 ipv6 enable ipv6 address 2001:db8:1::2/64这里有个坑我踩过好几次source地址一定要用物理接口的实际IPv4地址不能写环回口地址否则隧道无法建立。destination则必须是对端路由器的物理接口地址。3.2 配置IPv6静态路由为了让两端IPv6网络能通过隧道通信需要添加静态路由# AR1配置 ipv6 route-static 2001:db8:2::/64 Tunnel0/0/0 # AR3配置 ipv6 route-static 2001:db8:1::/64 Tunnel0/0/0这时候可以测试下隧道连通性了。在AR1上ping AR3的隧道接口地址2001:db8:1::2如果通了说明隧道建立成功。如果失败建议按这个顺序排查检查IPv4底层是否互通确认隧道两端的source/destination配置是否镜像查看接口是否有错误包计数4. OSPFv3动态路由配置虽然静态路由简单直接但在复杂网络中维护起来很麻烦。下面我们改用OSPFv3实现动态路由。4.1 基础OSPFv3配置# AR1配置 ospfv3 1 router-id 1.1.1.1 area 0.0.0.0 interface Tunnel0/0/0 ospfv3 1 area 0.0.0.0 interface GigabitEthernet0/0/0 ospfv3 1 area 0.0.0.0 # AR3配置 ospfv3 1 router-id 3.3.3.3 area 0.0.0.0 interface Tunnel0/0/0 ospfv3 1 area 0.0.0.0 interface GigabitEthernet0/0/0 ospfv3 1 area 0.0.0.0注意OSPFv3的进程号是独立于OSPFv2的两者可以共存。配置完成后可以通过display ospfv3 peer查看邻居关系是否建立。4.2 路由优化技巧在实际项目中我通常会做这些优化调整OSPF开销值隧道接口的cost建议设大些避免流量都走隧道interface Tunnel0/0/0 ospfv3 cost 1000启用BFD快速检测隧道链路不稳定时特别有用bfd interface Tunnel0/0/0 ospfv3 bfd enable路由过滤只发布必要的IPv6前缀5. 连通性测试与排错5.1 基础测试步骤在PC1上配置IPv6地址2001:db8:1::100/64网关指向AR1在PC2上配置2001:db8:2::100/64网关指向AR3PC1 ping PC2的IPv6地址如果ping不通可以分段排查检查PC到网关的连通性查看路由器上的IPv6路由表display ipv6 routing-table检查OSPFv3的LSA交换情况display ospfv3 lsdb5.2 常见问题解决问题一隧道接口状态为down解决方法确认物理接口未shutdown检查source/destination地址是否可路由查看是否有ACL阻断了协议41IPv6-in-IPv4的流量问题二OSPFv3邻居无法建立解决方法确认两端router-id不同检查area ID配置是否一致查看接口是否加入了正确的OSPFv3进程问题三路由学习不全解决方法检查network语句是否包含正确接口确认没有配置路由过滤查看日志中的错误信息display ospfv3 error6. 生产环境部署建议在企业网络中部署IPv6隧道时我总结了几个实用经验地址规划要清晰隧道接口、环回口、业务地址分开规划避免混乱。比如隧道链路使用2001:db8:fe80::/64业务网络使用2001:db8:1::/48环回口使用2001:db8:ffff::/128做好MTU调整IPv6封装在IPv4里会增加额外头部建议设置interface Tunnel0/0/0 ipv6 mtu 1280考虑备份链路可以配置多条隧道通过路由优先级实现主备切换监控不能少对隧道接口的流量、错误包、状态变化都要设置告警手工隧道虽然配置简单但在大规模网络中维护成本较高。如果条件允许建议考虑6to4、ISATAP等自动隧道技术或者直接部署双栈网络。
【华为eNSP实战】IPv6隧道穿越IPv4网络:手工配置与OSPF路由打通
1. 为什么需要IPv6隧道技术想象一下你住在两个被河流隔开的小岛上现在需要在两个岛之间建立快递通道。IPv4网络就像那条河流而IPv6隧道就是架在河上的快递专用桥。随着IPv4地址资源枯竭IPv6部署势在必行但在过渡期我们常常会遇到这样的场景两个IPv6网络之间隔着纯IPv4的骨干网。我在实际企业网络改造中就遇到过这种情况。某次客户需要将北京和上海两个办公区的IPv6子网打通但中间的运营商线路只支持IPv4。这时候IPv6-over-IPv4隧道技术就成了救命稻草它能让IPv6数据包搭乘IPv4的顺风车到达对端。2. 实验环境准备2.1 设备选型与拓扑搭建打开华为eNSP我们先搭建一个典型的三段式网络拓扑左侧IPv6网络AR1路由器 PC1中间IPv4骨干网AR2路由器右侧IPv6网络AR3路由器 PC2具体连接方式AR1的G0/0/0接PC1IPv6-onlyAR1的G0/0/1接AR2的G0/0/1IPv4AR2的G0/0/2接AR3的G0/0/1IPv4AR3的G0/0/0接PC2IPv6-only建议给每台路由器都配置Loopback地址这在后续隧道配置时会非常有用。我习惯用1.1.1.1/32、3.3.3.3/32这样的地址作为路由器的ID标识。2.2 基础网络配置先确保IPv4骨干网能正常通信# AR1配置 interface GigabitEthernet0/0/1 ip address 192.168.12.1 255.255.255.0 # AR2配置 interface GigabitEthernet0/0/1 ip address 192.168.12.2 255.255.255.0 interface GigabitEthernet0/0/2 ip address 192.168.23.2 255.255.255.0 # AR3配置 interface GigabitEthernet0/0/1 ip address 192.168.23.3 255.255.255.0测试下AR1和AR3之间能否ping通对方的直连接口这是隧道能建立的前提条件。如果这一步都通不了后面所有配置都是白费功夫。3. 手工隧道配置详解3.1 创建隧道接口隧道接口就像在两个路由器之间拉了一条虚拟专线。在AR1和AR3上分别执行# AR1配置 interface Tunnel0/0/0 tunnel-protocol ipv6-ipv4 # 指定隧道类型 source 192.168.12.1 # 本地出口IPv4地址 destination 192.168.23.3 # 对端出口IPv4地址 ipv6 enable ipv6 address 2001:db8:1::1/64 # 隧道接口的IPv6地址 # AR3配置 interface Tunnel0/0/0 tunnel-protocol ipv6-ipv4 source 192.168.23.3 destination 192.168.12.1 ipv6 enable ipv6 address 2001:db8:1::2/64这里有个坑我踩过好几次source地址一定要用物理接口的实际IPv4地址不能写环回口地址否则隧道无法建立。destination则必须是对端路由器的物理接口地址。3.2 配置IPv6静态路由为了让两端IPv6网络能通过隧道通信需要添加静态路由# AR1配置 ipv6 route-static 2001:db8:2::/64 Tunnel0/0/0 # AR3配置 ipv6 route-static 2001:db8:1::/64 Tunnel0/0/0这时候可以测试下隧道连通性了。在AR1上ping AR3的隧道接口地址2001:db8:1::2如果通了说明隧道建立成功。如果失败建议按这个顺序排查检查IPv4底层是否互通确认隧道两端的source/destination配置是否镜像查看接口是否有错误包计数4. OSPFv3动态路由配置虽然静态路由简单直接但在复杂网络中维护起来很麻烦。下面我们改用OSPFv3实现动态路由。4.1 基础OSPFv3配置# AR1配置 ospfv3 1 router-id 1.1.1.1 area 0.0.0.0 interface Tunnel0/0/0 ospfv3 1 area 0.0.0.0 interface GigabitEthernet0/0/0 ospfv3 1 area 0.0.0.0 # AR3配置 ospfv3 1 router-id 3.3.3.3 area 0.0.0.0 interface Tunnel0/0/0 ospfv3 1 area 0.0.0.0 interface GigabitEthernet0/0/0 ospfv3 1 area 0.0.0.0注意OSPFv3的进程号是独立于OSPFv2的两者可以共存。配置完成后可以通过display ospfv3 peer查看邻居关系是否建立。4.2 路由优化技巧在实际项目中我通常会做这些优化调整OSPF开销值隧道接口的cost建议设大些避免流量都走隧道interface Tunnel0/0/0 ospfv3 cost 1000启用BFD快速检测隧道链路不稳定时特别有用bfd interface Tunnel0/0/0 ospfv3 bfd enable路由过滤只发布必要的IPv6前缀5. 连通性测试与排错5.1 基础测试步骤在PC1上配置IPv6地址2001:db8:1::100/64网关指向AR1在PC2上配置2001:db8:2::100/64网关指向AR3PC1 ping PC2的IPv6地址如果ping不通可以分段排查检查PC到网关的连通性查看路由器上的IPv6路由表display ipv6 routing-table检查OSPFv3的LSA交换情况display ospfv3 lsdb5.2 常见问题解决问题一隧道接口状态为down解决方法确认物理接口未shutdown检查source/destination地址是否可路由查看是否有ACL阻断了协议41IPv6-in-IPv4的流量问题二OSPFv3邻居无法建立解决方法确认两端router-id不同检查area ID配置是否一致查看接口是否加入了正确的OSPFv3进程问题三路由学习不全解决方法检查network语句是否包含正确接口确认没有配置路由过滤查看日志中的错误信息display ospfv3 error6. 生产环境部署建议在企业网络中部署IPv6隧道时我总结了几个实用经验地址规划要清晰隧道接口、环回口、业务地址分开规划避免混乱。比如隧道链路使用2001:db8:fe80::/64业务网络使用2001:db8:1::/48环回口使用2001:db8:ffff::/128做好MTU调整IPv6封装在IPv4里会增加额外头部建议设置interface Tunnel0/0/0 ipv6 mtu 1280考虑备份链路可以配置多条隧道通过路由优先级实现主备切换监控不能少对隧道接口的流量、错误包、状态变化都要设置告警手工隧道虽然配置简单但在大规模网络中维护成本较高。如果条件允许建议考虑6to4、ISATAP等自动隧道技术或者直接部署双栈网络。