Junos способна логически группировать Routing Tables, интерфейсы, а также протоколы маршрутизации.
Такая группа называется Routing Instance
В каждой Routing Instance маршрутизация работает изолированно.
Использование Routing Instances даёт большую гибкость в настройках, поскольку одно устройство может работать, имитируя работу нескольких.
Junos по умолчанию создаёт Master Routing Instance.
По умолчанию Master Routing Instance включает routing table inet.0
inet.0 используется для IPv4 unicast routing.
Junos также создаёт private 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
При создании routing instance автоматом создаётся routing table в именем instance-name.inet.0.
Junos позволяет поместить routing information одновременно в несколько routing tables.
Первый метод использует Routing Information Base (RIB) Group.
RIB Group определяется, а затем может быть использована в секциях конфигурации.
Второй метод - использование instance-import, instance-export, auto-export.
Чтобы понять работу RIB Group, сначала разберемся, как создаётся таблица маршрутизации в Junos без RIB Group:
Protocol -> ProtocolDB -> RIB
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).
Как уже отмечалось, 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 мы можем применить например в 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
Между разными instances также мы можем создавать соединения: физические или логические.
Пример логического соединения:
[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/
Добавить комментарий