单播 RPF 应该防止源地址与它们应该被允许的地址不同。在阅读 Cisco 的 URPF 文档时,我注意到有一些选项可以通过路由表让它在上行链路接口上使用。
我的问题是,如果它通过默认路由,是不是所有的源地址都被允许?URPF 那时会带来什么好处?
我确定我遗漏了一些东西,所以我真的很想指出正确的方向。
单播 RPF 应该防止源地址与它们应该被允许的地址不同。在阅读 Cisco 的 URPF 文档时,我注意到有一些选项可以通过路由表让它在上行链路接口上使用。
我的问题是,如果它通过默认路由,是不是所有的源地址都被允许?URPF 那时会带来什么好处?
我确定我遗漏了一些东西,所以我真的很想指出正确的方向。
单播反向路径转发 (RPF) 在三种不同的模式下运行,并且可能有助于减少路由器的攻击向量,特别是来自欺骗 IP 地址的攻击向量。
(config-if)#ip verify unicast source reachable-via rx
在严格模式下,路由器将根据其转发信息库 (FIB) 表来检查和检查传入数据包的源 IP 地址以获取匹配路由。如果到该源 IP 地址的路由可通过接收它的接口访问,则将接收该数据包。默认情况下,严格模式下不考虑默认路由(如上配置)。
在给定接口上配置单播 RPF 严格模式后,路由器不能再在该接口上 ping 自己:
#sh ip int bri | ex unas|Int
FastEthernet0/0 11.0.11.1
#ping 11.0.11.1
.....
Success rate is 0 percent (0/5)
验证 URPF 丢弃的数据包:
#show ip int fa0/0 | i ^ [1-9]+ verification drops
5 verification drops
#show ip traffic | i unicast
0 no route, 5 unicast RPF, 0 forced drop
可以通过添加allow-self-ping
语法来更改此行为:
(config-if)#ip verify unicast source reachable-via rx allow-self-ping
此外,如您的问题所述,严格模式可以允许根据默认路由检查传入数据包的源 IP 地址。这是通过语法启用的allow-default
:
在严格模式下,allow-default
单独添加语法只会阻止收到来自传入数据包的源 IP 地址的接收,这些数据包的路由通过与接收的接口不同的接口传出。这是假设路由器上没有配置访问列表或空路由。所有可从它们接收到的接口到达的可路由源地址将与特定路由或默认路由匹配。
但是,如果您要使用空路由,则在 URPF 检查到达默认路由之前,将首先评估最具体的路由,并将作为已知恶意 IP 范围的黑名单。
示例 -来自 3.0.0.0/8 的所有流量将被 URPF 检查丢弃:
(config-if)#ip verify unicast source reachable-via rx allow-default
(config)#ip route 3.0.0.0 255.0.0.0 null 0
Bad-Source-RTR#ping 11.0.11.1 so l1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 11.0.11.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3
.....
Success rate is 0 percent (0/5)
此外,您可以指定访问控制列表 (ACL) 而不是添加allow-default
语法来完成允许和拒绝地址的结构化列表。可从接收它们的接口到达并在定义的 ACL 中匹配的地址要么被丢弃,要么被相应地允许。
!
access-list 23 permit 3.0.0.0 0.255.255.255
access-list 23 deny 4.0.0.0 0.255.255.255 log
access-list 23 permit any
!
(config)#int fa0/0
(config-if)#ip verify unicast source reachable-via rx 23
最后,您可以使用allow-default
语法指定 ACL ,但它不会产生任何效果。不会根据allow-default
选项指定的 ACL 检查数据包。
#ip verify unicast source reachable-via rx allow-default ?
<1-199> A standard IP access list number
<1300-2699> A standard IP expanded access list number
R1(config-if)#ip verify unicast source reachable-via any
在松散模式下,路由器将检查传入数据包的源 IP 地址,并根据其 FIB 表检查匹配路由。如果到达该源 IP 地址的路由可达,则可以接收数据包,而不管它是在哪个接口上接收的。默认情况下,在松散模式下不考虑默认路由(如上配置)。
松散模式和严格模式有类似的配置选项;主要区别在于使用的语法(any
vs. rx
)以及传入数据包的源 IP 地址是否可通过接收数据包的接口访问。
(config-if)#ip verify unicast source reachable-via any ?
<1-199> A standard IP access list number
<1300-2699> A standard IP expanded access list number
allow-default Allow default route to match when checking source address
allow-self-ping Allow router to ping itself (opens vulnerability in
verification)
VRF 模式可以在给定的 VRF 中利用松散或严格模式,并将根据为 eBGP 邻居配置的 VRF 表评估传入数据包的源 IP 地址。