r1:
en
conf t
no ip do lo
ho r1
lin c 0
exec-t 0 0
logging syn
exit
int s1/1
ip add 12.12.12.1 255.255.255.0
no shut
exit
int lo1
ip add  1.1.1.1 255.255.255.0
no shut

r2:
en
conf t
no ip do lo
ho r2
lin c 0
exec-t 0 0
logging syn
exit
int s1/0
ip add 12.12.12.2 255.255.255.0
no shut
exit
int lo1
ip add  2.2.2.2 255.255.255.0
no shut
int s1/1
ip add 23.23.23.2 255.255.255.0
no shut

r3:
en
conf t
no ip do lo
ho r3
lin c 0
exec-t 0 0
logging syn
exit
int lo1
ip add  3.3.3.3 255.255.255.0
no shut
int s1/0
ip add 23.23.23.3 255.255.255.0
no shut
int s1/2
ip add 34.34.34.3 255.255.255.0
no shut
exit
r4:
en
conf t
no ip do lo
ho r4
lin c 0
exec-t 0 0
logging syn
exit
int lo1
ip add  4.4.4.4 255.255.255.0
no shut
int s1/2
ip add 34.34.34.4 255.255.255.0
no shut
exit
我们现在来模拟这样一种网络情况,现在我们的区域2由于一定的地理原因(现在离区域0非常远)不能够直接连接到区域0,但是距离区域1近。或者由于山洪爆发把区域2连接到区域0的线缆冲断了,这个时候我们区域2刚好与区域1有线缆相连
我们就可以通过虚链路的解决问题
首先我们对路由进行配置
r1
router ospf 1
net 1.0.0.0 0.255.255.255  a 0
net 12.0.0.0 0.255.255.255 a 0
r2
router ospf 2
net 12.0.0.0 0.255.255.255 a 0
net 1.0.0.0 0.255.255.255  a 1
net 23.0.0.0 0.255.255.255 a 1
r3
router ospf 3
net 23.0.0.0 0.255.255.255 a 1
net 3.0.0.0 0.255.255.255  a 1
net 34.0.0.0 0.255.255.255 a 2
r4
router ospf 4
net 34.0.0.0 0.255.255.255 a 2
net 4.0.0.0 0.255.255.255 a 2
这个时候我们从1.1.1.1 ping 4.4.4.4 肯定是无法相同的
因为区域2没有直接连接在区域0上
那么我们刚好来模拟上面一种网络情况
也就解决了我们为什么会出现虚链路这个技术,做虚链路的作用是什么?
那么我们虚链路做在什么地方呢
这个时候大家要注意虚链路是做在abr上面的
也就说我们的拓扑中
r1--------r2--------r3--------r4
   area0      area1     area2
r2是区域0和区域1的边界       r3是区域1和区域2的边界
那么这个时候我们 r2 r3都是abr      那么我们想让r1 r2 与r4 通信
就必须在r2 r3 上面做虚链路
做法
r2
router ospf 2
area 1 virtual-link 34.34.34.3  
area 1 代表虚链路是在area 1 中形成的
34.34.34.3   另一个abr的RouteID  这个地方大家要注意,你要在r3上通过sh ip ospf int 查看现在路由器的RouteID ,因为RouteID 的选举具有非抢占性,所以可能你主观上判断出来的RouteID 并没有选举上.
r3
router ospf 3
area 1 virtual-link 2.2.2.2
这个时候,虚链路就已经全部完成了现在大家在sh ip route 就可以看到我们所有的路由信息了
但是大家注意,虚链路只是为了暂时解决网络问题的一个临时方案,在网络问题解决后还是要连接到区域0的
好了,虚链路就是这些内容^_^