两套VPN划在一台交换机上要互访?静态路由跨实例指过去就通
本文整理自华为官方发布的典型配置案例,命令与步骤均按原始文档呈现,供现场实施参考。
VPN实例隔离是MPLS VPN的基本功:不同业务的接口绑定不同实例,路由表各存各的,天然隔离。可隔离之外总有点现实需求——同一台交换机上两个VPN的主机之间要互通,又不想为此专门跑一套动态路由协议。华为交换机给了个轻巧解法:配置IPv4静态路由时把目的和出向都指到对端VPN实例里,跨实例互访两条静态路由就打通。
先看基础结构。交换机上两个接口分别接两个VPN的主机,各划一个VLAN。然后创建VPN实例vpna和vpnb,各配路由标识和收发团体属性:
[SwitchA] ip vpn-instance vpna
[SwitchA-vpn-instance-vpna] ipv4-family
[SwitchA-vpn-instance-vpna-af-ipv4] route-distinguisher 100:1
[SwitchA-vpn-instance-vpna-af-ipv4] vpn-target 111:1 export-extcommunity
[SwitchA-vpn-instance-vpna-af-ipv4] vpn-target 111:1 import-extcommunity
[SwitchA-vpn-instance-vpna-af-ipv4] quit
[SwitchA-vpn-instance-vpna] quit
[SwitchA] ip vpn-instance vpnb
[SwitchA-vpn-instance-vpnb] ipv4-family
[SwitchA-vpn-instance-vpnb-af-ipv4] route-distinguisher 100:2
[SwitchA-vpn-instance-vpnb-af-ipv4] vpn-target 222:2 export-extcommunity
[SwitchA-vpn-instance-vpnb-af-ipv4] vpn-target 222:2 import-extcommunity
[SwitchA-vpn-instance-vpnb] quit
再把网关接口分别绑定到各自实例,地址各归各的表:
[SwitchA] interface vlanif 10
[SwitchA-Vlanif10] ip binding vpn-instance vpna
[SwitchA-Vlanif10] ip address 10.1.1.1 24
[SwitchA-Vlanif10] quit
[SwitchA] interface vlanif 20
[SwitchA-Vlanif20] ip binding vpn-instance vpnb
[SwitchA-Vlanif20] ip address 10.1.2.1 24
[SwitchA-Vlanif20] quit
关键一步来了。普通静态路由不带vpn-instance参数时只在全局表里生效,够不到VPN实例;这里的写法是在vpna里配一条去往vpnb网段的路由,出向也声明走vpnb实例:
[SwitchA] ip route-static vpn-instance vpna 10.1.2.0 24 vpn-instance vpnb
[SwitchA] ip route-static vpn-instance vpnb 10.1.1.0 24 vpn-instance vpna
两条路由一来一回,互相把对方实例的网段指过去,跨实例的路就有了。有个细节要吃透:不带vpn-instance前缀的静态路由只进全局路由表,在实例里根本查不到;而这条命令里目的端和出端各挂一个实例参数,含义是在vpna的路由表里,去往10.1.2.0网段的流量交给vpnb实例转发,这就是跨实例互访的全部机关。验证时查两张实例路由表,可以看到vpna里出现了去往10.1.2.0/24的Static条目,标志位带T表示路由到vpn-instance,vpnb里同理。再用ping带实例参数实测,从vpna里去ping对端网段的主机,五个包全回,跨VPN互访打通。
这套做法的价值在轻:不引入动态路由协议,两行静态路由指完即通,适合两套业务网关同机、互访需求明确的场景。反过来也要提醒,互访意味着隔离被有意打开了一个口子,访问控制策略要跟上,把互通限定在业务需要的网段之间,避免互访扩大成全通。多业务同机部署里,这种跨实例静态互访是常用手法。欢迎搜索关注贵州诚鑫致达科技,了解更多交换机VPN部署实战配置。