Я уже писал об использовании PBR на оборудовании Cisco, а в этой статье мы будем это делать на Juniper.
PBR предоставляет механизм реализации пересылки (forwarding)/ маршрутизации (routing) пакетов данных, основанный на политике, представляющей собой набор правил, определенной администраторами сети. Это предоставляет более гибкий механизм для обработки пакетов на маршрутизаторах, дополняя существующий механизм, предоставленный протоколами маршрутизации.
Дано
- ISP#1 (10.0.0.1/30), подключение по BGP
- ISP#2, подключение по BGP
- Juniper MX240
Задача
Настроить BGP сессии с двумя ISP`ами, а так же обеспечить работу статически пророученную на нас ISP#1 небольшую реальную подсеть, для примера скажем это будет 128.1.1.0/24.
Реализация
Если не применить PBR политику к статически пророученной ISP#1 подсети, то при передаче пакетов будут использовать маршруты, которые были получены по BGP от двух ISP`ов и пакеты от реальной подсети ISP#1 могут уходить в канал через ISP#2, что в большинстве случаях работать не будет, в виду того что ISP#2 не выпустит чужие подсети через свою инфрастуктуру или вы получите не симметричную трассу. К сожалению мы по своей работе сталкиваемся с провами, которые не осуществляют фильтрацию чужих подсетей, что развязывает руки DDoS`ерам… когда при атаках они подделывают SRC адреса. Я искренне надеюсь, что ты (читатель) осуществляешь фильтрацию перед тем как «выплюнуть» пакет из своей сети в свой внешний канал.
Немного теории по названиям роут таблиц в Junos`е:
JUNOS default routing tables Name
- inet.0 — IPv4 unicast routes. BGP, IS-IS, OSPF, and RIP store their routing information in this table and use the routes in this table when advertising routes to their neighbors. Configured static routes are also stored in this table.
- inet.1 — Multicast forwarding cache. DVMRP and PIM store their routing information in this table.
- inet.2 — Used by MBGP to provide reverse path forwarding (RPF) checks.
- inet.3 — Traffic engineering paths. Stores path and label information.
- inet6.0 — IPv6 unicast routes.
- iso.0 — ISO routes for IS-IS.
- mpls.0 — MPLS label-switched path (LSP) next hops.
В реализации задачи нам поможет механизм rib-groups:
rib-groups group-name {
import-policy [ policy-names ];
import-rib [ routing-table-names ];
export-rib routing-table-name;
}
А так же interface-routes:
interface-routes {
rib-group group-name;
}
Приступим к настойке и для начала создадим rib группу, в конфиге получим:
root@mx240# show routing-options
interface-routes {
rib-group inet isp1-static-group;
}
rib-groups {
isp1-static-group {
import-rib [ inet.0 isp1-static.inet.0 ];
}
}
Затем создадим routing-instance isp1-static в которой и укажем default на ISP#1:
root@mx240# show routing-instances
isp1-static {
instance-type forwarding;
routing-options {
static {
route 0.0.0.0/0 next-hop 10.0.0.1;
}
}
}
Теперь нам надо как то match`ить пакеты где source адресом выступает статически пророученная подсеть реальников 128.1.1.0/24 и перенапралять их в routing-instance isp1-static.
В этом нам поможет firewall filter:
root@mx240# show firewall filter isp1-static-subnets
term match {
from {
source-address {
128.1.1.0/24;
}
}
then {
routing-instance isp1-static;
}
}
term default {
then accept;
}
Этим мы добиваемся того, что пакеты из подсети 128.1.1.0/24 будут маршрутизироватся по таблице isp1-static, а все остальные подсети будут использовать таблицу по умолчанию inet.
Что нам осталось сделать ?
Осталось применить наш filter на Layer-3 интерфейсе роутера откуда у нас поступают пакеты от клиентов с source адресом этой подсети.
В моем примере это vlan 3, т.к. именно за данным интерфейсом находится ещё один роутер, для клиентов в подсети 128.1.1.0/24:
root@mx240# show routing-options static
route 128.1.1.0/24 {
next-hop 172.16.1.2;
retain;
}
Применим filter:
root@mx240# show interfaces irb
unit 3 {
family inet {
filter {
input isp1-static-subnets;
}
address 172.16.1.3/29;
}
}
Все приготовления сделаны, теперь можно commit`ить конфигурацию и проверять её работу.
Посмотрим маршруты в созданной нами routing-instance isp1-static:
root@mx240> show route table isp1-static.inet.0
isp1-static.inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[Static/5] 1d 18:51:33
> to 10.0.0.1 via irb.800
....skiped....
Как мы можем видеть наш default в данной таблице присутствует и таким образом все пакеты с SRC-адресом из подсети 128.1.1.0/24 будут отправлены через интерфейс на ISP#1 10.0.0.1.
Ссылки
- Creating Routing Table Groups
- Configuring How Interface Routes Are Imported into Routing Tables
- Demystifying Juniper’s rib-groups
- Juniper PBR (сохраненная копия)
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Уважайте чужой труд.
Автор: Николаев Дмитрий (virus (at) subnets.ru)
Похожие статьи:
- Не найдено
Добавить комментарий
Вам следует авторизоваться для размещения комментария.