В этой серии статей блога я расскажу об автоматизации сети с помощью фреймворка Nornir, но прежде чем мы сможем погрузиться в хорошие вещи, давайте создадим лабораторию, в которой я смогу запустить автоматизацию.
1 Зачем использовать 3 разные платформы для лаборатории?
Очень часто используется сетевое оборудование от более чем одного поставщика (по крайней мере, для интернет-провайдеров). Исходя из моего собственного ограниченного опыта, я потратил большую часть времени на настройку и устранение неполадок на маршрутизаторах Cisco IOS-XR и Huawei VRP для повседневной работы. И потратил довольно много времени на Cisco IOS для сдачи экзамена CCNP. Но у меня не было возможности поработать над Junos так много как хотелось.
Автоматизация сетевого оборудования нескольких вендоров — болезненный процесс, особенно когда речь идет о тех, которые не имеют слишком большого глобального присутствия или которые запрещены (*кхе* Huawei *кхе*). Большинство современных средств автоматизации имеют ограниченную поддержку Huawei. Давайте посмотрим, смогу ли я использовать Nornir для работы с маршрутизаторами Huawei VRP и начать некоторые действия по автоматизации.
2 Информация о лаборатории
Я предпочитаю EVE-NG GNS3, так как я много работал над ним, когда готовился к экзамену CCNP, и я буду использовать версию сообщества (версия v2.0.3-112) для этой лабораторной работы.
2.1 Импортируйте образы маршрутизатора и запустите его
Прежде всего, нам нужно импортировать образы (изображения) маршрутизатора в EVE-NG.
Установка этих изображений немного хлопотна, но определенно не ракетостроение.
Следуйте официальным руководствам по Juniper vMX и Cisco IOS-XRv, а также этому посту для Huawei VRP.
Хорошее начало, все 3 образа запущены, давайте посмотрим информацию о версии для каждого маршрутизатора:
Juniper Junos: 20.4R3.8
root@vMX-R1> show version
Hostname: vMX-R1
Model: vmx
Junos: 20.4R3.8
JUNOS OS Kernel 64-bit [20210618.f43645e_builder_stable_11-204ab]
JUNOS OS libs [20210618.f43645e_builder_stable_11-204ab]
...
Huawei VRP: 8.180
<Huawei-R2>display ver
Huawei Versatile Routing Platform Software
VRP (R) software, Version 8.180 (NE40E V800R011C00SPC607B607)
Copyright (C) 2012-2018 Huawei Technologies Co., Ltd.
HUAWEI NE40E uptime is 0 day, 14 hours, 3 minutes
SVRP Platform Version 1.0
Cisco IOS-XR: 6.1.3
RP/0/0/CPU0:IOS-XR-R3#show version
Thu May 5 08:09:51.127 UTC
Cisco IOS XR Software, Version 6.1.3[Default]
Copyright (c) 2017 by Cisco Systems, Inc.
ROM: GRUB, Version 1.99(0), DEV RELEASE
...
2.2 Создание лаборатории в EVE-NG
Пришло время построить вокруг них простую лабораторию, чтобы проверить, работают ли они так, как задумано. IP-адреса интерфейса между маршрутизаторами X,Y установлены на 192.168.XY. Формат X/24. Для соединения между R1 и R2 это будет 192.168.12.1/24 для R1 и 192.168.12.2/24 для R2. И все 3 маршрутизатора имеют интерфейс lo0 с назначенным адресом X.X.X.X/32.

Топология EVE-NG
2.3 Изменение имени хоста и настройка интерфейсов
Давайте настроим IP-адреса интерфейсов и проведем кучу пингов, чтобы убедиться, что они подключены.
Juniper
set system root-authentication plain-text-password
set groups router system host-name vMX-R1
set apply-groups router
set interfaces ge-0/0/0 unit 0 family inet address 192.168.12.1/24
set interfaces ge-0/0/1 unit 0 family inet address 192.168.13.1/24
set interfaces lo0 unit 0 family inet address 1.1.1.1/32
commit
Huawei
<HUAWEI>system-view
[~HUAWEI]sysname Huawei-R2
[~Huawei-R2]interface ether1/0/0
[~Huawei-R2-Ethernet1/0/0]ip address 192.168.12.2 255.255.255.0
[~Huawei-R2]interface ether1/0/1
[~Huawei-R2-Ethernet1/0/0]ip address 192.168.23.2 255.255.255.0
[~Huawei-R2]interface LoopBack0
[~Huawei-R2-LoopBack0]ip address 2.2.2.2 255.255.255.255
[~Huawei-R2-LoopBack0]commit
Cisco
RP/0/0/CPU0:ios#conf t
RP/0/0/CPU0:ios(config)#hostname IOS-XR-R3
RP/0/0/CPU0:IOS-XR-R3(config)#int g0/0/0/0
RP/0/0/CPU0:IOS-XR-R3(config-if)#ipv4 address 192.168.13.3 255.255.255.0
RP/0/0/CPU0:IOS-XR-R3(config-if)#no shut
RP/0/0/CPU0:IOS-XR-R3(config-if)#int g0/0/0/1
RP/0/0/CPU0:IOS-XR-R3(config-if)#ipv4 address 192.168.23.3 255.255.255.0
RP/0/0/CPU0:IOS-XR-R3(config-if)#no shut
RP/0/0/CPU0:IOS-XR-R3(config-if)#int lo0
RP/0/0/CPU0:IOS-XR-R3(config-if)#ipv4 address 3.3.3.3 255.255.255.255
RP/0/0/CPU0:IOS-XR-R3(config-if)#commit
2.4 Конфигурация iBGP (полная сетка)
Настройка BGP для Cisco и Huawei была очень простой. Junos немного сложен, вам нужно добавить номер AS в «routing-options», прежде чем вы сможете настроить команды iBGP.
Juniper
root@vMX-R1> show configuration
routing-options {
autonomous-system 123;
}
protocols {
bgp {
group ibgp-peers {
type internal;
neighbor 192.168.12.2;
neighbor 192.168.13.3;
}
}
}
Huawei
<Huawei-R2>dis current-configuration configuration bgp
bgp 123
peer 192.168.12.1 as-number 123
peer 192.168.23.3 as-number 123
#
ipv4-family unicast
undo synchronization
peer 192.168.12.1 enable
peer 192.168.23.3 enable
Cisco
RP/0/0/CPU0:IOS-XR-R3#sh run router bgp
router bgp 123
address-family ipv4 unicast
!
neighbor 192.168.13.1
remote-as 123
address-family ipv4 unicast
!
!
neighbor 192.168.23.2
remote-as 123
address-family ipv4 unicast
!
!
!
2.5 Объявление адреса обратной связи для пиров iBGP
Объявление адреса lo0 очень просто как для Cisco, так и для Huawei, с этим справится одна сетевая команда. Однако в случае с Junos вам необходимо настроить политику и применить ее к конфигурации BGP.
Juniper
set policy-options policy-statement advertise.lo0 term 1 from route-filter 1.1.1.1/32 exact
set policy-options policy-statement advertise.lo0 term 1 then accept
set protocols bgp group ibgp-peers export advertise.lo0
Huawei
[~Huawei-R2]bgp 123
[~Huawei-R2-bgp]network 2.2.2.2 32
Cisco
router bgp 123 address-family ipv4 unicast network 3.3.3.3 255.255.255.255
Убедимся, что BGP-пиринг настроен корректно и они получают префиксы друг от друга.
3 Полные конфиги
Пока выглядит отлично, ниже приведена полная конфигурация для этой лаборатории.
Juniper
root@vMX-R1> show configuration
groups {
router {
system {
host-name vMX-R1;
}
}
}
apply-groups router;
system {
root-authentication {
encrypted-password «$6$PJBo9jFx$C2/jRVRHt/6wIJeRzJ4BJH6i.iDpoM5ZCkKkEMyUsnn9nPSDQcccK4mmvd8IGt.21Gp9x3bg3fZpmp6L/HxBI.»; ## SECRET-DATA
}
}
interfaces {
ge-0/0/0 {
unit 0 {
family inet {
address 192.168.12.1/24;
}
}
}
ge-0/0/1 {
unit 0 {
family inet {
address 192.168.13.1/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 1.1.1.1/32;
}
}
}
}
policy-options {
policy-statement advertise.lo0 {
term 1 {
from {
route-filter 1.1.1.1/32 exact;
}
then accept;
}
}
}
routing-options {
autonomous-system 123;
}
protocols {
router-advertisement {
interface fxp0.0;
}
bgp {
group ibgp-peers {
type internal;
export advertise.lo0;
neighbor 192.168.12.2;
neighbor 192.168.13.3;
}
}
}
Huawei
<Huawei-R2>dis current-configuration
sysname Huawei-R2
#
interface Ethernet1/0/0
undo shutdown
ip address 192.168.12.2 255.255.255.0
#
interface Ethernet1/0/1
undo shutdown
ip address 192.168.23.2 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
bgp 123
peer 192.168.12.1 as-number 123
peer 192.168.23.3 as-number 123
#
ipv4-family unicast
undo synchronization
network 2.2.2.2 255.255.255.255
peer 192.168.12.1 enable
peer 192.168.23.3 enable
Cisco
RP/0/0/CPU0:IOS-XR-R3#sh run
hostname IOS-XR-R3
interface Loopback0
ipv4 address 3.3.3.3 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 192.168.13.3 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 192.168.23.3 255.255.255.0
!
router bgp 123
address-family ipv4 unicast
network 3.3.3.3/32
!
neighbor 192.168.13.1
remote-as 123
address-family ipv4 unicast
!
!
neighbor 192.168.23.2
remote-as 123
address-family ipv4 unicast
!
!
!
4 Что дальше и до конца
4.1 Следующий шаг
Я добавлю кусочки и кусочки, чтобы сделать лабораторию пригодной для автоматизации, или полностью переделаю всю топологию, просто ради того, чтобы возиться. 😂
4.2 TIL
Раздел TIL посвящен тем вещам, которые я узнал во время написания постов в блоге, это могут быть как очень тривиальные команды, так и более сложные концепции.
show | compare (Junos)display configuration candidate changes (Huawei VRP)show commit changes diff (Cisco IOS-XR)Если у вас есть какие-либо мысли или вопросы по этой теме, пожалуйста, не стесняйтесь оставить комментарий или отправить мне сообщение. Я хотел бы продолжить дискуссию и услышать вашу точку зрения.
А также вы всегда можете поддержать меня зайдя на сайт и подписаться https://dzen.ru/kalyuzhnyy.ru и найти больше статей на моих ресурсах https://kalyuzhnyy.ru и https://dev.kalyuzhnyy.ru или на моем канале telegramm https://t.me/nbkalyuzhnyy на котором в будущем будут выкладываться самые актуальные новости и инструкции по навыкам и обучению. Подпишись!














