概述
RouterOS实现了 RFC8210 中定义的到路由器协议的RPKI (Resource Public Key Infrastructure)。RTR是一种非常轻量级的低内存占用协议,用于从RPKI验证器可靠地获取前缀验证数据。 关于RPKI和如何设置验证器的更多信息可以在RIPE博客中找到: https://blog.apnic.net/2019/10/28/how-to-installing-an-rpki-validator/
基本示例
假设网络上有自己的RTR服务器,IP地址为192.168.1.1:
/routing/bgp/rpki add group=myRpkiGroup address=192.168.1.1 port=8282 refresh-interval=20
如果连接建立,并且从验证器接收到数据库,可以检查前缀的有效性:
[admin@rack1_b33_CCR1036] /routing> rpki-check group=myRpkiGroup prfx=70.132.18.0/24 origin-as=16509
valid
现在,路由过滤器可以使用缓存的数据库来根据RPKI有效性接受拒绝前缀。首先需要设置一个过滤器规则,该规则定义哪个RPKI组执行验证。之后,过滤器准备好匹配来自RPKI数据库的状态。Status可以有三个值:
valid -数据库中有记录且原始AS有效。
invalid -数据库中有记录,源AS无效。
unknown -数据库中没有前缀AS和原始AS的信息。
unverified -当RPKI组的所有RPKI会话都没有同步过数据库时设置。此值可用于处理RPKI的总故障。
/routing/filter/rule
add chain=bgp_in rule="rpki-verify myRpkiGroup"
add chain=bgp_in rule="if (rpki invalid) { reject } else { accept }"
配置选项
Sub-Menu: /routing/rpki
| 属性 | 说明 |
|---|---|
| address (IPv4/6) mandatory | RTR服务器地址 |
| disabled(yes| no;Default:no) | 是否忽略该项。 |
| expire-interval (integer [600..172800];Default:7200) | 时间间隔[s]轮询数据在验证器没有进行有效的后续更新时被认为是有效的。 |
| group (string) mandatory | 数据库被分配给的组名。 |
| port (integer [0..65535];Default:323) | 连接端口号 |
| preference (integer [0..4294967295];Default:0) | 如果有多个RTR源,则优先级号表示更优先的RTR源。越少越好。 |
| refresh-interval (integer [1..86400];Default:3600) | 从验证器轮询最新数据的时间间隔[s] |
| retry-interval (integer [1..7200];Default:600) | 验证器轮询失败后重试的时间间隔[s]。 |
| vrf (name;Default:main) | 用于绑定连接的VRF表名。 |