以下列拓扑所示,SW1、SW2、R1级联,其中SW1、SW2为普通CE设备,R2为MCE设备。
R1与SW1互联虚接口属于vpn-instance实例TEST中,SW2与R1互联虚接口不属于任何vpn-instance实例。
客户希望自己VPN-instance实例中的网段192.168.10.0/24和非VPN-instance实例中的网段10.10.10.0/24相互通信,即客户机PC1(192.168.10.10)可以访问PC2(10.10.10.10)。
(1)SW1、SW2、R1根据拓扑图规划配置相应的IP地址信息
SW1命令如下:
vlan batch 10 20 (vlan10用于和R1互联,vlan20用于充当PC1的网关)
#
interface gi0/0/1
port link-type access
port default vlan 20
#
interface gi0/0/2
port link-type access
port default vlan 10
#
interface vlanif 10
ip address 12.1.1.2 24
#
interface vlanif 20
ip address 192.168.10.1 24
#
ip route-static 0.0.0.0 0 12.1.1.1 配置一条缺省路由
#
SW2配置命令:
vlan batch 10 20 (vlan10用于和R1互联,vlan20用于充当PC2的网关)
#
interface gi0/0/1
port link-type access
port default vlan 20
#
interface gi0/0/2
port link-type access
port default vlan 10
#
interface vlanif 10
ip address 23.1.1.2 24
#
interface vlanif 20
ip address 10.10.10.1 24
#
ip route-static 0.0.0.0 0 23.1.1.1 配置一条缺省路由
#
R1配置命令:
ip vpn-instnce TEST
route-distinguisher 100:1
vpn-target 100:1
#
interface gi0/0/0
ip binding vpn-instance TEST
ip address 12.1.1.1 24
#
interface gi0/0/1
ip address 23.1.1.1 24
#
ip route-static 10.10.10.0 24 23.1.1.2
ip route-static vpn-instance TEST 192.168.10.0 24 vpn-instance TEST 12.1.1.2
#
(2)在R1的非vpn-instance实例路由表中增加一条去往192.168.10.0/24的路由信息
ip route-static 192.168.10.0 24 vpn-instance TEST 12.1.1.2
(3)在R1的vpn-instance实例路由表中增加一条去往10.10.10.0/24的路由信息
ip route-static vpn-instance TEST 10.10.10.0 24 23.1.1.2
(4)此时查看R1的全局路由表信息如下所示:
(5)查看R1的vpn-instance路由表:
可以发现,在vpn-insatnce路由表中,只有去往192.168.10.0/24网段的路由信息,并没有去往10.10.10.0/24网段的路由信息;说明上面步骤(3)配置静态路由没有生效。
在PC1上面测试访问PC2是无法访问的,截图信息如下:
(6)在R1的vpn-instance TEST路由表中添加静态路由,并增加public参数
ip route-static vpn-instance TEST 10.10.10.0 24 23.1.1.2 public
(7)此时查看vpn-instance的路由表信息
(8)在PC1和PC2上面分别相互ping测,截图如下所示:
PC1pingPC2截图:
PC2pingPC1截图如下:
综上所述:在vpn-instance实例的路由表中添加去往非vpn-instance实例网段路由信息,并且下一跳时非vpn-instance绑定的接口(即公共路由表)的静态路由时,请添加public参数,保证添加的路由可以生效。
public参数代表用于指定静态路由的下一跳为公网参数,例如,写一条属于特定vpn实例的静态路由,下一跳需要在公网路由中查找,此时就需要通过public参数来指定。通俗来说就是携带该参数就是为了可以访问公共路由表的目的网段。