Вы здесь

juniper SRX и VRF

Routing Instance

Junos способна логически группировать Routing Tables, интерфейсы, а также протоколы маршрутизации.
Такая группа называется Routing Instance
В каждой Routing Instance маршрутизация работает изолированно.

Использование Routing Instances даёт большую гибкость в настройках, поскольку одно устройство может работать, имитируя работу нескольких.

Master Routing Instance

Junos по умолчанию создаёт Master Routing Instance.
По умолчанию Master Routing Instance включает routing table inet.0
juniper_srx_i_vrf01_ciscomaster.ru.jpg

inet.0 используется для IPv4 unicast routing.

Junos также создаёт private routing instances, которые используются для внутренних коммуникаций, и которые мы можем игнорировать.
juniper_srx_i_vrf02_ciscomaster.ru.jpg

User-Defined Routing Instances

Мы можем добавлять свои Routing Instances, которые позволяют:
• forwarding: Used to implement filter-based forwarding for common Access Layer applications;
• l2vpn: Used in Layer 2 VPN implementations;
• no-forwarding: Used to separate large networks into smaller administrative entities;
• virtual-router: Used for non-VPN-related applications such as system virtualization;
• vpls: Used for point-to-multipoint LAN implementations between a set of sites in a VPN; and
• vrf: Used in Layer 3 VPN implementations

juniper_srx_i_vrf03_ciscomaster.ru.jpg

Работа с Routing Instances

juniper_srx_i_vrf04_ciscomaster.ru.jpg
При создании routing instance автоматом создаётся routing table в именем instance-name.inet.0.

Sharing Routes Between Routing Tables

Junos позволяет поместить routing information одновременно в несколько routing tables.

Первый метод использует Routing Information Base (RIB) Group.
RIB Group определяется, а затем может быть использована в секциях конфигурации.

Второй метод - использование instance-import, instance-export, auto-export.

Определение RIB Group

Чтобы понять работу RIB Group, сначала разберемся, как создаётся таблица маршрутизации в Junos без RIB Group:
Protocol -> ProtocolDB -> RIB

  1. Отрабатывает протокол маршрутизации (protocol). При этом в терминах Junos, под понятим протокол может выступать не только к примеру OSPF, но и статические маршруты, Connected routes и т.д.
  2. Protocol DB - алгоритм протокола хранит свои маршруты в Protocol DB, и оттуда по своим критериям выбирает лучший. Который помещается в RIB
  3. RIB - собственно сама таблица маршрутизации. Для IPv4 - это inet.0

RIB Group расширяет этот механизм:
Protocol -> ProtocolDB -> RIB Group
RIB-Group состоит из:
Primary RIB — таблица, куда протокол по умолчанию отдаёт свои маршруты
Secondary RIB — одна или несколько дополнительных таблиц маршрутизации, куда мы хотим, чтоб протокол так же отдавал свои маршруты.
Import-Policy — политика, описывающая, как из маршрутов мы разрешаем устанавливать в Secondary RIB, а какие нет.

Т.е. мы получили возможность устанавливать маршруты, полученные от протокола маршрутизации, не только в ту таблицу, с которой он работает по умолчанию, но и в любую другую. Причем появляются понятия Primary и Secondary RIB. Отличаются они тем, что мы можем (при помощи import policy) явно указывать, какие маршруты отдавать в secondary RIB (в primary устанавливаются все, вне зависимости от import policy).

juniper_srx_i_vrf05_ciscomaster.ru.jpg
Как уже отмечалось, Junos использует RIB Group для того, чтобы поместить routing information в несколько routing tables.
Мы определяем имя RIB Group, а в самой конфигурации задаём две основные опции:
- import-rib - перечисляет несколько routing tables, куда будет помещена входящая route information.
Первая routing table в списке - будет Primary routing table.
Primary routing table - это таблица, куда будет помещена route information при отсутствии RIB Group
- export-rib - включает только одну routing table, куда отдавать route information.
export-rib часто не применяется в конфигурации.

Применение RIB Group

После того, как мы создали RIB Group, мы можем применить её в других секциях конфигурации.
RIB Group мы можем применить например в interface routes, static routes, OSPF, IS-IS, RIP, BGP, Physical Interface Module (PIM), and Multicast Source Discovery Protocol (MSDP).

В следующем примере OSPF будет отдавать свои маршруты в таблицы: inet.0 , test.inet.0

user@R1# show routing-options rib-groups { test { import-rib [ inet.0 test.inet.0 ]; } } user@R1# show protocols ospf rib-group test; area 0.0.0.0 { interface ge-0/0/1.0; interface lo0.0; }

Это мы можем проверить через команду show route table:

user@R1> show route table inet.0 protocol ospf inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.20.101.0/24 *[OSPF/150] 00:00:30, metric 0, tag 0 > to 172.20.77.2 via ge-0/0/1.0 172.20.201.0/24 *[OSPF/150] 00:00:30, metric 0, tag 0 > to 172.20.77.2 via ge-0/0/1.0 192.168.2.1/32 *[OSPF/10] 00:00:30, metric 1 > to 172.20.77.2 via ge-0/0/1.0 224.0.0.5/32 *[OSPF/10] 2w1d 02:37:55, metric 1 MultiRecv user@R1> show route table test.inet.0 protocol ospf test.inet.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.20.101.0/24 *[OSPF/150] 00:00:27, metric 0, tag 0 > to 172.20.77.2 via ge-0/0/1.0 172.20.201.0/24 *[OSPF/150] 00:00:27, metric 0, tag 0 > to 172.20.77.2 via ge-0/0/1.0 192.168.2.1/32 *[OSPF/10] 00:00:27, metric 1 > to 172.20.77.2 via ge-0/0/1.0 224.0.0.5/32 *[OSPF/10] 00:00:27, metric 1 MultiRecv

Routing Between Instances

Между разными instances также мы можем создавать соединения: физические или логические.
juniper_srx_i_vrf06_ciscomaster.ru.jpg

Пример логического соединения:

[edit interfaces lt-0/0/0] user@R1# show unit 0 { encapsulation ethernet; peer-unit 1; family inet { } } unit 1 { encapsulation ethernet; peer-unit 0; family inet; }

Пример конфигурации

Настройка интерфейсов:

set interfaces ge-0/0/0 unit 0 description OUTSIDE_ISP-2-UNC set interfaces ge-0/0/0 unit 0 family inet address 217.170.112.10/30 set interfaces ge-0/0/1 unit 0 description INSIDE set interfaces ge-0/0/1 unit 0 family inet filter input LAN-in_filter set interfaces ge-0/0/1 unit 0 family inet address 10.40.1.1/24 preferred set interfaces ge-0/0/2 unit 0 description OUTSIDE_ISP-1-ROSTEL set interfaces ge-0/0/2 unit 0 family inet address 87.226.186.67/29

Создаём Routing instance для каждого провайдера:

set routing-instances ri-ISP-1 interface ge-0/0/2.0 set routing-instances ri-ISP-1 description "ri to ISP1" set routing-instances ri-ISP-1 instance-type virtual-router set routing-instances ri-ISP-1 routing-options static route 0.0.0.0/0 next-hop 87.226.186.65 set routing-instances ri-ISP-1 routing-options static route 0.0.0.0/0 preference 7 set routing-instances ri-ISP-2 interface ge-0/0/0.0 set routing-instances ri-ISP-2 description "ri to ISP2" set routing-instances ri-ISP-2 instance-type virtual-router set routing-instances ri-ISP-2 routing-options static route 0.0.0.0/0 next-hop 217.170.112.9 set routing-instances ri-ISP-2 routing-options static route 0.0.0.0/0 preference 9

При этом настройки туннелей привязываются к каждой routing-instance, позволяя каждому туннелю строиться через своего провайдера:

set security ike gateway ike-gate-imh ike-policy ike-policy-imh set security ike gateway ike-gate-imh address 195.219.104.1 set security ike gateway ike-gate-imh external-interface ge-0/0/2.0 set security ike gateway ike-gate-imh_pri-sec ike-policy ike-policy-imh_pri-sec set security ike gateway ike-gate-imh_pri-sec address 195.219.104.1 set security ike gateway ike-gate-imh_pri-sec external-interface ge-0/0/0.0

Настройка выхода в интернет
Выход в интернет мы сделаем через PBR, см. http://ciscomaster.ru/content/juniper-policy-based-routing
Существует метод placing routing information in multiple tables simultaneously, этот метод называется routing information base (RIB) group.
Мы можем использовать instance-import, instance-export and auto-export

Использование routing information base (RIB) group не так интуитивно. Более понятно использовать instance-import Option.

set policy-options policy-statement policy-import_pbr-ISP-1 term permit-direct-ISP-1 from instance ri-ISP-1 set policy-options policy-statement policy-import_pbr-ISP-1 term permit-direct-ISP-1 from protocol direct set policy-options policy-statement policy-import_pbr-ISP-1 term permit-direct-ISP-1 from protocol local set policy-options policy-statement policy-import_pbr-ISP-1 term permit-direct-ISP-1 then accept set policy-options policy-statement policy-import_pbr-ISP-2 term permit-direct-ISP-2 from instance ri-ISP-2 set policy-options policy-statement policy-import_pbr-ISP-2 term permit-direct-ISP-2 from protocol direct set policy-options policy-statement policy-import_pbr-ISP-2 term permit-direct-ISP-2 from protocol local set policy-options policy-statement policy-import_pbr-ISP-2 term permit-direct-ISP-2 then accept set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-1 from instance ri-ISP-1 set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-1 from protocol static set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-1 from route-filter 0.0.0.0/0 exact set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-1 then accept set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-1 from instance ri-ISP-1 set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-1 from protocol direct set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-1 from protocol local set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-1 then accept set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-2 from instance ri-ISP-2 set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-2 from protocol static set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-2 from route-filter 0.0.0.0/0 exact set policy-options policy-statement policy-import_ri-master term permit-defroute-ISP-2 then accept set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-2 from instance ri-ISP-2 set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-2 from protocol direct set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-2 from protocol local set policy-options policy-statement policy-import_ri-master term permit-direct-ISP-2 then accept set policy-options policy-statement policy-import_ri-master term reject-any then reject

Для работы PBR создаём routing-instances type forwarding.
В каждую из них мы импортируем маршруты из ri-ISP-1 и ri-ISP-2 соответственно.

set routing-instances pbr-ISP-1 description "pbr to ISP1" set routing-instances pbr-ISP-1 instance-type forwarding set routing-instances pbr-ISP-1 routing-options static route 0.0.0.0/0 next-hop 87.226.186.65 set routing-instances pbr-ISP-1 routing-options instance-import policy-import_pbr-ISP-1 set routing-instances pbr-ISP-2 description "pbr to ISP2" set routing-instances pbr-ISP-2 instance-type forwarding set routing-instances pbr-ISP-2 routing-options static route 0.0.0.0/0 next-hop 217.170.112.9 set routing-instances pbr-ISP-2 routing-options instance-import policy-import_pbr-ISP-2

В Master Routing Instance мы импортируем маршруты из ri-ISP-1 и ri-ISP-2:

set routing-options instance-import policy-import_ri-master

В результате мы получим маршрутизацию:

srx# run show route inet.0: 510 destinations, 1003 routes (510 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[Static/7] 29w3d 05:00:00 > to 87.226.186.65 via ge-0/0/2.0 [Static/9] 14w0d 00:41:46 > to 217.170.112.9 via ge-0/0/0.0

Далее делаем фильтр, и прикручиваем его на внутренний интерфейс.
Здесь логика следующая: весть внутренний трафик использует таблицу маршрутизации.
Трафик в интернет от 10.40.1.41 пойдет через ISP-1.
Остальной трафик в интернет пойдёт согласно таблице маршрутизации.

set firewall family inet filter LAN-in_filter term match-internal-traffic from source-address 10.0.0.0/8 set firewall family inet filter LAN-in_filter term match-internal-traffic from destination-address 10.0.0.0/8 set firewall family inet filter LAN-in_filter term match-internal-traffic then accept set firewall family inet filter LAN-in_filter term match-client_10_40_1_41 from source-address 10.40.1.41/32 set firewall family inet filter LAN-in_filter term match-client_10_40_1_41 then routing-instance pbr-ISP-1 set firewall family inet filter LAN-in_filter term else_accept then accept

Маршрутизация в случае сбоя основного провайдера:
см.http://ciscomaster.ru/content/juniper-i-pereklyuchenie-na-rezervnogo-isp...

set services rpm probe isp1-probe test isp1-test1 probe-type icmp-ping set services rpm probe isp1-probe test isp1-test1 target address 94.100.180.200 set services rpm probe isp1-probe test isp1-test1 probe-count 3 set services rpm probe isp1-probe test isp1-test1 probe-interval 15 set services rpm probe isp1-probe test isp1-test1 test-interval 300 set services rpm probe isp1-probe test isp1-test1 thresholds successive-loss 3 set services rpm probe isp1-probe test isp1-test1 thresholds total-loss 3 set services rpm probe isp1-probe test isp1-test1 destination-interface ge-0/0/2.0 set services rpm probe isp1-probe test isp1-test1 next-hop 87.226.186.65 set services rpm probe isp1-probe test isp1-test2 probe-type icmp-ping set services rpm probe isp1-probe test isp1-test2 target address 208.67.222.222 set services rpm probe isp1-probe test isp1-test2 probe-count 3 set services rpm probe isp1-probe test isp1-test2 probe-interval 15 set services rpm probe isp1-probe test isp1-test2 test-interval 300 set services rpm probe isp1-probe test isp1-test2 thresholds successive-loss 3 set services rpm probe isp1-probe test isp1-test2 thresholds total-loss 3 set services rpm probe isp1-probe test isp1-test2 destination-interface ge-0/0/2.0 set services rpm probe isp1-probe test isp1-test2 next-hop 87.226.186.65 set services rpm probe isp2-probe test isp2-test1 probe-type icmp-ping set services rpm probe isp2-probe test isp2-test1 target address 94.100.180.202 set services rpm probe isp2-probe test isp2-test1 probe-count 3 set services rpm probe isp2-probe test isp2-test1 probe-interval 15 set services rpm probe isp2-probe test isp2-test1 test-interval 300 set services rpm probe isp2-probe test isp2-test1 thresholds successive-loss 3 set services rpm probe isp2-probe test isp2-test1 thresholds total-loss 3 set services rpm probe isp2-probe test isp2-test1 destination-interface ge-0/0/0.0 set services rpm probe isp2-probe test isp2-test1 next-hop 217.170.112.9 set services rpm probe isp2-probe test isp2-test2 probe-type icmp-ping set services rpm probe isp2-probe test isp2-test2 target address 208.67.220.220 set services rpm probe isp2-probe test isp2-test2 probe-count 3 set services rpm probe isp2-probe test isp2-test2 probe-interval 15 set services rpm probe isp2-probe test isp2-test2 test-interval 300 set services rpm probe isp2-probe test isp2-test2 thresholds successive-loss 3 set services rpm probe isp2-probe test isp2-test2 thresholds total-loss 3 set services rpm probe isp2-probe test isp2-test2 destination-interface ge-0/0/0.0 set services rpm probe isp2-probe test isp2-test2 next-hop 217.170.112.9 set services ip-monitoring policy isp1-track match rpm-probe isp1-probe set services ip-monitoring policy isp1-track then preferred-route route 0.0.0.0/0 next-hop 217.170.112.9

Логика данной конструкции:
Если оба теста от rpm-probe isp1-track будут в состоянии FAILED, то выставляется маршрут на 217.170.112.9.

Источники
https://habr.com/ru/post/111687/
https://phil.lavin.me.uk/2019/05/juniper-junos-difference-between-rib-gr...
http://matt.dinham.net/route-leaking-with-junos/

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image