路由筛选规则实现类似脚本的语法。下面的示例快速演示了一个路由过滤器,它匹配来自子网192.168.1.0/24的前缀长度大于24的前缀,并将默认距离增加1。如果没有匹配,则将默认距离减去1。
/路由过滤规则add chain=myChain rule="if (dst in 192.168.1.0/24 && dst-len>24) {set distance +1;Accept} else{设置距离-1;接受}”
过滤规则可以由多个匹配器和动作组成:
If ([matchers]) {[actions]} else {[actions]}
有两种类型的属性:
可读属性可以与其他可读属性(仅用于数字属性)或使用布尔运算符的常量值匹配。
[matchers]:[道具可读][bool操作符]:[道具可读][actions]: [action][道具可写][value]
如果只有一个可能的操作,则不使用布尔运算符。
不带布尔运算符的示例:
If(协议已连接){accept}
带布尔运算符的示例:
If (bgp-med < 30) {accept}
使用可读标志属性时,匹配器不需要指定布尔运算符和值
If (ospf-dn) {reject}
注意路由过滤器链的默认动作是“拒绝”。
Ipv4 | ipv6 | l2vpn | l2vpn-cisco | vpnv4 | vpnv6
Ext1 | ext2 | inter | intra | nssa1 | nssa2
OSPF路由类型:
Prepend最后收到的远端对等体ASN。如果前缀来自路由器,那么这个参数不会在路由器的输出上起任何作用,因为ASN还不存在。
如果在BGP输入中使用它作为一个匹配器,可以过滤超过一定数量的前缀。例如,如果一个远端对等体将它的ASN前置5次,但我们希望允许最多4次前置ASN,那么我们可以使用:"如果(bgp-path-peer-prepend4){拒绝}"
如果(bgp-path-peer-prepend4){拒绝}
此参数还覆盖从远端对等体接收到的任何前置符,例如,如果远端对等体将其AS前置符加了3次,我们可以通过设置"bgp-path-peer-prependBGP输入为1”
bgp-path-peer-prepend
IPv4/IPv6地址或接口名称。在BGP输出的情况下,网关可以通过以下方式进行调整:
没有| arp | icmp | bfd | bfd-mh
显卡|出路|不完整
类型1 |类型2
跳chain_name
设置prop_name
pref-src | bgp-med | bgp-out-med | bgp-local-pref
Bgp-communities, bgp-ext-communities, bgp-large-communities, comment
Bgp-communities, bgp-ext-communities, bgp-large-communities
设置prop_writeable值
集pref-src+1
集距离+ospf-ext-metric
rpki-verify rpki_group_name
如果(dst在192.168.0.0/16 && dst-len在16-32){拒绝;}
如果(不是bgp-network){拒绝;}
list_name中的DST
路由过滤器允许使用delete命令清除BGP团体。Delete命令根据团体字类型接受几个参数:
可以指定多个团体类型,例如从community-ext列表中删除所有的sso、其他类型的ext团体和特定的rt:
/routing/filter/community-ext-list add list=myRTList communities="rt:1.1.1.1:222" /routing/filter/rule/add chain=myChain rule="delete bgp-ext-communities sso,other,myRTList;"
AS路径是自治系统编号的序列,如AS Path 123 456 789表示该路由来自编号为789的自治系统,报文要到达目的地需要经过两个自治系统:456和789。要应用特定的路由策略,管理员可能需要匹配AS路径中的特定AS号或一组数字(例如,拒绝通过AS 456的前缀),这可以使用正则表达式(regexp)实现。
有两种常用的方法来操作AS路径数据:
基本上,第一种方法是对每个字符执行匹配,第二种方法是对整个AS号执行匹配。正如您可以想象的那样,后一种方法比字符串匹配方法更快,占用的资源更少。
此更改将要求管理员实现新的Regex策略。RouterOS v6中的旧Regex模式不能直l雷竞技接复制/粘贴,因为它们会导致语法错误或意想不到的结果。
让我们以一个非常基本的AS路径过滤规则为例。
/routing/filter/rule/add chain=myChain rule="if (bgp-as-path .1234.) {accept}"
在ROS v7中,这个Regex模式将匹配AS路径中间的任何地方的ASN 1234,在ROS v6中,相同的模式将匹配任何包含ASN至少由6个字符组成并包含“1234”字符串的AS路径。显然,如果我们直接将Regex模式从一个实现复制/粘贴到另一个实现,将导致意想不到/危险的结果。ROS v6中的等效模式看起来像这样:“._1234_.”。
让我们以ROS v6中的另一个例子为例,假设我们有一个模式“1234[5-9]”,它所做的是在字符串的任何地方匹配12345到12349,这意味着有效的匹配是as路径“12345 3434”,“11 9123467 22”等等。如果您在ROS v7中输入相同的模式,它将匹配包含精确的ASN 1234的AS路径,然后是ASN 5到9的范围(匹配的AS路径将是“1234 7 111”,“111 12345 222”等,它将不匹配“12345 3434”)。
不要直接从ROS v6或Cisco配置中复制Regex模式,它们不直接兼容。在某些情况下,它可能导致意想不到甚至危险的配置。
l雷竞技RouterOS现在有一个内置的正则表达式检查工具来简化管理员的艰难生活。这个工具也支持num-list,所以现在精确的正则表达式可以在应用到路由过滤器之前针对任何as路径进行测试。
/routing/filter/num-list add list=test range=100-1500 /routing/filter/test-as-path-regexp regexp="[:test:]]5678\$" as-path="1234,5678"
数学:
1234
1234 1234 1234
零路径
不匹配:
1234 5678
匹配:
3 1234 6
12345 678
匹配:
5678
1234 1234 5678
12345 5678
12345
45678
91011
[]
(^)
表示AS号的集合,其中必须匹配列表中的一个AS号。
在打开括号后使用^来对集合求反。
也可以引用预定义的数字列表num-list与[[:numset_name:]]
^[12345678 1-100]
99
101
()
5678 9999
不支持重复范围{}。
常用号码列表可从/路由/过滤器/ num-list菜单。可以在筛选规则中使用这些数字列表来简化筛选设置过程。
/路由/过滤器/ num-list
以类似的方式,您还可以定义社区、扩展社区和大型社区列表。团体集可用于匹配、追加和设置。
例如,从列表中匹配团体并清除属性:
/routing/filter/community-list add communities=111:222 list=myCommunityList /routing/filter/rule/add chain=myChain rule="if (bgp-communities equal-list myCommunityList) {delete bgp-communities wk,other;接受;}”
/路由/过滤器/ community-list
表示为的社区列表著名的名称或以下格式:作为:数字”,每个section可以是整数[0..65535]。
公认的知名名字:
Accept-own graceful-shutdown no-advertise no-llgr route-filter-6Accept-own-nh Internet no-export no-peer route-filter-xlate-4Blackhole llgr-stale local-as route-filter-4 route-filter-xlate-6
/路由/过滤器/ community-ext-list
扩展社区列表表示为生整数值或键入格式:"类型:值,其中type可以为:
值取决于类型,有关RT和SoO值的更多信息请询问谷歌。
/路由/过滤器/ community-large-list
大型社区列表以以下格式表示:管理:value1: value2,每个section可以是整数[0..4294967295]。
路由选择规则允许控制如何从可用的候选路由中选择输出路由。默认情况下(如果没有设置选择规则)输出总是选择最佳路由。
例如,如果我们看下面的路由表,我们可以看到有两条候选路由和一条最佳路由。缺省情况下,BGP在选择发送路由时,将选择激活路由。
[admin@4] /routing/route> print where dst-address=1.0.0.0/24 Flags: A - ACTIVE;b, y - COPY列:DST-ADDRESS, GATEWAY, AFI, DISTANCE, SCOPE, TARGET-SCOPE, IMMEDIATE-GW DST-ADDRESS GATEWAY AFI DISTANCE SCOPE TARGET-SCOPE IMMEDIATE-GW b 1.0.0.0/24 10.155.101.217 ip4 19 40 30 10.155.109.254%ether1 Ab 1.0.0.0/24 10.155.109.254%ether1 b 1.0.0.0/24 10.155.109.254%ether1 ip4 20 40 30 10.155.101.231 ip4 20 40 30 10.155.109.254%ether1
但在某些情况下,你可能会希望优先选择其他路线,而不是活跃的路线,这里有游戏中的选择规则。
RouterOS中的选择规则从l雷竞技/路由/过滤器/ select-rule菜单。
/路由/过滤器/ select-rule
选择规则还可以调用路由筛选器,其中根据筛选器规则选择路由。例如,为了模拟默认的输出选择,我们可以设置以下规则集:
/路由过滤规则add chain=get_active rule="if (active) {accept}" /路由过滤规则select-rule add chain=my_select_chain do-where=get_active
/路由/过滤器/链
BGP/OSPF配置中可以引用的过滤规则链的动态列表。
只读属性:
/路由/过滤器/ select-chain
BGP/OSPF配置中可以引用的过滤器选择链的动态列表。