菜单

[ Juniper JunOS ] 使用 Routing-instance 技术防止 IXP Member 恶意占用带宽资源

2020年1月1日 - Juniper

上篇文章我们与大家讲解了 Cisco IOS-XE 系统下的防御思路,见文章:《使用 CISCO VRF 技术防止 IXP Member 恶意占用带宽资源

今天再来浅谈下 JunOS 下一些防御方案。

拓扑整图:

你需要有的材料:

  1. Juniper MX 路由器一台 (如果你使用的是 SRX 路由器也是可以的)
  2. 服务器若干台(为方便模拟,拓扑图中以一台表示)
  3. 一条 Transit 链路
  4. 一条 IXP 链路(这里模拟的是德国的 DE-CIX )

你需要准备的事情:

  1. 配置好接口 IP 地址 (已预配)
  2. 配置好 BGP session (已预配)
  3. 确认网络通信一切正常

下面开始准备工作

1.验证 MX 路由器下客户端与 114.114.114.114 的通信

[admin@LittleWolf-Customer] > tool traceroute 114.114.114.114
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST
 1 192.0.2.1                       66..    4 timeout    13.2    13.2    13.2
 2 59.43.100.1                        0%    3   2.8ms     3.9     2.6     6.2
 3 59.43.100.3                        0%    3   3.3ms     4.8     2.3     8.8
 4 114.114.114.114                    0%    3     3ms     3.6       3     4.1

2.验证我方和实验对方的网络连通性

[admin@LittleWolf-Customer] > tool traceroute 114.51.41.9
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST
 1 192.0.2.1                        40%    5   1.6ms     9.2     1.6    24.4
 2 59.43.100.1                        0%    5   7.1ms     6.8     2.6    11.1
 3 59.43.100.3                        0%    5   6.8ms     5.5     3.1     7.7
 4 202.97.100.0                       0%    5   5.8ms     7.7     5.8    10.7
 5 114.51.41.9                        0%    5   4.8ms     7.7     3.5    16.6

准备工作结束,接下来连接与 DE-CIX 的物理线缆并配置与 Route Server 的 BGP session (接口 IP 地址已经标注在拓扑图上,配置BGP的过程已略过)。

配置完成后,检查 MX 路由器的关于 114.114.114.0/24 这个段的路由表:

root@vMX-VFP-LittleWolf-Backbone> show route 114.114.114.0/24 exact

inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

114.114.114.0/24   *[BGP/170] 00:23:22, localpref 100
                      AS path: 4809 4134 1919 I, validation-state: unverified
                    > to 59.43.100.1 via ge-0/0/3.0

可见路由表正确,只有 Transit ( China Telecom 4809 ) 发过来的路由。

再检查一下对端路由器:

Others-backbone#show ip bgp 114.114.114.114
BGP routing table entry for 114.114.114.0/24, version 3
Paths: (1 available, best #1, table default, not advertised to any peer)
  Not advertised to any peer
  Refresh Epoch 1
  4134 1919
    202.97.100.1 from 202.97.100.1 (202.97.200.1)
      Origin IGP, localpref 100, valid, external, best
      Community: no-advertise
      rx pathid: 0, tx pathid: 0x0

也是没有问题的,对端只有从 Transit ( China Telecom 4134 ) 接收到了该路由。

上文提到过, IXP 逻辑上可以将其视为一个巨大的交换机 ,所有的路由器都存在于一张二层网络内,所以是可以通过写静态路由的方式来强行将数据包 next-hop 更改为别人的 IXP 接口的。同样的,为了防止 IXP member 恶意占用带宽,我们可以在 Juniper 路由器上使用类似于 Cisco VRF 的技术 — Routing-instance.

首先,我们在 AS114514 写入静态路由来模拟恶意占用带宽的情况:

Others-backbone(config)# ip route 114.114.114.114 255.255.255.255 80.81.192.100

然后,在 AS114514 下的服务器上测试路由走向:

[admin@Others-Customer] > tool traceroute 114.114.114.114
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST
 1 114.51.41.1                        0%    3   4.9ms     8.2     4.9    13.9
 2 80.81.192.100                      0%    3  12.8ms     9.8     6.7    12.8
 3 59.43.100.1                        0%    2   4.6ms     5.6     4.6     6.5
 4 59.43.100.3                        0%    2   6.4ms       6     5.6     6.4
 5 114.114.114.114                    0%    2   5.6ms     5.5     5.4     5.6

可见数据包被成功的路由到 AS138667 的骨干路由器后,再被转发到 AS4809 CN2 链路。未经授权的数据占用了 AS138667 的大量带宽资源。为了预防这种现象,我们可以为路由器配置 Routing-instance.

配置如下:

[edit interfaces ge-0/0/1 unit 0 family inet]
+       filter {
+           input decix-forward; // 将防火墙规则应用在接口 input 方向,所有从 该接口进入的流量必须经过 routing-instance 转发
+       }
[edit policy-options]
+   policy-statement decix-import { // 定义导入路由的过滤器规则
+       term import-local {
+           from {
+               instance master; // 从主路由表导入
+               protocol [ local direct ]; // 导入直连和本地路由
+           }
+           then accept;
+       }
+       term last-reject {
+           then reject; // 拒绝其他路由导入
+       }
+   }
[edit]
+  firewall {
+      family inet {
+          filter decix-forward {
+              term decix-forward {
+                  then {
+                      routing-instance decix; // 定义防火墙规则,用于将其应用在接口上。所有从 decix 进入的流量将被送入 routing-instance 进行路由判断。
+                  }
+              }
+          }
+      }
+  }
+  routing-instances {
+      decix {
+          instance-type forwarding; // 由于 JunOS 拥有多种类型的 routing-instance,可以实现很多功能,这里为了以后的扩展性,选择类型为纯转发
+          routing-options {
+              static {
+                  route 0.0.0.0/0 discard; // 默认拒绝所有报文转发
+              }
+              instance-import decix-import; // 按照过滤器的规则导入本地直连路由以及客户通过 BGP 传入的路由
+          }
+      }
+  }

验证配置好后的路由表:

root@vMX-VFP-LittleWolf-Backbone> show route table decix.inet.0

decix.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[Static/5] 00:11:10
                      Discard
192.0.2.0/24      *[Direct/0] 00:07:33
                    > via ge-0/0/2.0
192.0.2.1/32      *[Local/0] 00:07:33
                      Local via ge-0/0/2.0
59.43.100.0/31     *[Direct/0] 00:07:33
                    > via ge-0/0/3.0
59.43.100.0/32     *[Local/0] 00:07:33
                      Local via ge-0/0/3.0
80.81.192.0/21     *[Direct/0] 00:07:33
                    > via ge-0/0/1.0
80.81.192.100/32   *[Local/0] 00:07:33
                      Local via ge-0/0/1.0

可见该路由表里只有导入的直连路由,没有通过 Transit 传入的路由。而因为在接口定义了防火墙规则,所以从 DE-CIX 接口来的数据将全部经过该 routing-instance 转发。并且由于导入了直连路由,所以对方访问 AS138667 的网络资源是正常的。但如果接收到了未经授权的数据( 如: destination address = 114.114.114.114 ),那么一定会匹配到 0.0.0.0/0 这条路由条目从而被丢弃。

路由跟踪( IXP 互通):

[admin@LittleWolf-Customer] > tool traceroute 114.51.41.9
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST
 1 192.0.2.1                         0%    3   1.9ms      12     1.9      22
 2 80.81.192.200                      0%    2   5.9ms     5.9     5.8     5.9
 3 114.51.41.9                        0%    2   6.7ms       6     5.3     6.7
[admin@Others-Customer] > tool traceroute 192.0.2.100
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST
 1 114.51.41.1                        0%    4   1.4ms     1.5     1.2     1.7
 2 80.81.192.100                      0%    4   4.9ms    39.9     4.7   144.9
 3 192.0.2.100                       0%    4   6.7ms     6.4     5.5     6.9

路由跟踪(模拟恶意占用带宽 ):

[admin@Others-Customer] > tool traceroute 114.114.114.114
 # ADDRESS                          LOSS SENT    LAST     AVG    BEST   WORST
 1 114.51.41.1                        0%    3   1.7ms     1.9       1     3.1
 2                                  100%    3 timeout
 3                                  100%    2 timeout
 4                                  100%    2 timeout
 5                                  100%    2 timeout
 6                                  100%    2 timeout

[admin@Others-Customer] > ping 114.114.114.114 count=3
  SEQ HOST                                     SIZE TTL TIME  STATUS
    0 114.114.114.114                                         timeout
    1 114.114.114.114                                         timeout
    2 114.114.114.114                                         timeout
    sent=3 received=0 packet-loss=100%

在启用 Routing-instance 技术后,未经授权的数据进入接口后将被阻止,避免了带宽资源无谓的消耗,节省了开支。

同样可以在过滤器里通过匹配动态路由的方式来实现自动化。

如果有什么想要说的,欢迎来 tg 群吐槽:LittleWolf Network Universe

发表评论

电子邮件地址不会被公开。 必填项已用*标注