URPF

URPF------Unicast Rerverse Path Forward
URPF 称为单手反向路径转发,其功能是在路由器用来防止 IP 欺骗或者 IP 伪造的。但 URPF 只能在路由器接口的入方向上应用,由于在接口上开启了 URPF ,所有路由器转发速度会相应地慢,所以要在接口上开启 URPF ,路由器必须开启 cef 转发。
当在一个接口上开启 URPF 时,从这个接口进入的数据都将会对数据的源 IP 地址进行查找,如果在路由表中路由器到达该源 IP 地址的出口就是该接口的话,那么路由器会转发该数据;否则丢弃该数据;丢弃数据也是查找失败的默认动作。
如果想让某一个 URPF 匹配失败的数据通过该接口,可以通过 ACL 来实现, ACL 中如果定义的是允许,则该接口会转发数据,如果 ACL 中定义的是拒绝,则该接口同样会丢弃该数据。
 
配置:
在以上拓扑中,配置好全网的路由,其中:
R1 到达任何网络的路由全都通过 12.1.1.2
R3 到达任何网络的路由全都通过 34.1.1.4
R2 到达 3.3.3.3 的路由全都通过 23.1.1.3
 
1、  R2 s1/0 接口上开启 URP
R2(config)#interface s1/0
R2(config-if)#ip verify unicast reverse-path
 
2、  R3 上以 3.3.3.3 为源地址 Ping 12.1.1.1 ,查看结果
R3#traceroute 12.1.1.1 source loopback 1
Type escape sequence to abort.
Tracing the route to 12.1.1.1
  1 34.1.1.4 100 msec 48 msec 32 msec
  2  *  *  *
          3  *
从以上输入中可以看到 R3 12.1.1.1 是不通的;因为 R3 到达 12.1.1.1 是先到达 R4, 再由 R4 发送给 R2, 最后到达 R1, 而我们在 R2 的接口上开启了 URPF ,而 R2 到达 3.3.3.3 的出口地址应该是 f0/1 ,所以 s1/0 上做 URPF 检测失败,路由器丢弃该数据;
 
3、  如果想让上述 URPF 检测失败的数据可以通过 R2 的话,可以在 R2 上配置 ACL URPF 结合使用
R2(config)#access-list 100 permit ip host 3.3.3.3 any
R2(config)#interface s1/0
R2(config-if)#ip verify unicast reverse-path 100
再次从 R3 上以源 IP 3.3.3.3 Ping 12.1.1.1 做测试,查看测试结果
R3#traceroute 12.1.1.1 source loopback 1
 
Type escape sequence to abort.
Tracing the route to 12.1.1.1
 
  1 34.1.1.4 20 msec 28 msec 32 msec
  2 24.1.1.2 48 msec 32 msec 44 msec
  3 12.1.1.1 140 msec *  120 msec
R3#
我们可以看到网络是通的,虽然这个数据在 R2 s1/0 接口上 URPF 检测失败,但我们通过配置 ACL 允许了源地址为 3.3.3.3 的数据通过,所以网络还是通的。
 
如果在这里我们以源地址 23.1.1.3 去访问 12.1.1.1 ,可以看到如下效果:
R3#ping 12.1.1.1 source 23.1.1.3
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 23.1.1.3
.....
Success rate is 0 percent (0/5)
R3#
看到网络是不通的,同样的道理, R2 s1/0 接口 URPF 检测失败;如果我们想让这个数据通过,同样可以配置 ACL 允许源地址为 23.1.1.3 的数据通过。

你可能感兴趣的:(URPF)