Найти в Дзене
Николай Калюжный

Запуск Palo Alto Firewall в Containerlab

Всем привет, в этом коротком сообщении в блоге давайте рассмотрим, как запустить брандмауэры Palo Alto в Containerlab. Если вы давно следите за мной, то наверняка знаете, что я стал чаще использовать Containerlab в своих проектах. Если вы новичок в Containerlab или хотите быстро научиться, подписывайтесь на меня https://dzen.ru/kalyuzhnyy.ru Чтобы поддержать меня. Palo Alto не предоставляет контейнерный образ виртуальной машины (не CN-Series), у него есть только образ на основе виртуальной машины. Создать контейнер из этого образа виртуальной машины можно двумя способами. Официальная документация рекомендует использовать boxen для генерации образа контейнера из виртуальной машины. Тем не менее, я решил использовать проект vrnetlab. Прежде всего, загрузите образ виртуальной машины (qcow2) с портала поддержки Palo Alto. Для доступа к этому образу может потребоваться действующий контракт на поддержку. Для этого примера я использую panos-10.2.6, но другие версии тоже должны работать. После
Оглавление

Всем привет, в этом коротком сообщении в блоге давайте рассмотрим, как запустить брандмауэры Palo Alto в Containerlab. Если вы давно следите за мной, то наверняка знаете, что я стал чаще использовать Containerlab в своих проектах. Если вы новичок в Containerlab или хотите быстро научиться, подписывайтесь на меня https://dzen.ru/kalyuzhnyy.ru Чтобы поддержать меня.

Containerlab - Создание сетевых лабораторий не может быть прощеЧто, если я скажу вам, что все, что вам нужно, это просто файл YAML с кучей строк для создания сетевой лаборатории, которую можно легко запустить на вашем ноутбуке? Я расскажу вам, что такое Containerlab
Containerlab - Создание сетевых лабораторий не может быть прощеЧто, если я скажу вам, что все, что вам нужно, это просто файл YAML с кучей строк для создания сетевой лаборатории, которую можно легко запустить на вашем ноутбуке? Я расскажу вам, что такое Containerlab

boxen или vrnetlab

Palo Alto не предоставляет контейнерный образ виртуальной машины (не CN-Series), у него есть только образ на основе виртуальной машины. Создать контейнер из этого образа виртуальной машины можно двумя способами. Официальная документация рекомендует использовать boxen для генерации образа контейнера из виртуальной машины. Тем не менее, я решил использовать проект vrnetlab.

Создание контейнерного образа с помощью vrnetlab

Прежде всего, загрузите образ виртуальной машины (qcow2) с портала поддержки Palo Alto. Для доступа к этому образу может потребоваться действующий контракт на поддержку. Для этого примера я использую panos-10.2.6, но другие версии тоже должны работать.

-2

После загрузки клонируйте репозиторий vrnetlab, переместите загруженное изображение в vrnetlab/panи запустите команду make команда.

Обратите внимание, что по умолчанию используются два ядра процессора, что может привести к задержке работы графического интерфейса и снижению его отзывчивости. Я отредактировал launch.py файл внутри vrnetlab/pan/docker , чтобы выделить вместо них 4 ядра процессора, как показано ниже. С такой регулировкой он работает плавно без заметных задержек.

self.qemu_args.extend(["-smp", "4,sockets=1,cores=4"]

После завершения, если вы запустите docker images, вы должны увидеть новое изображение из Пало-Альто.

-3

Создание лаборатории

В этом примере я настраиваю простую топологию с двумя интерфейсами. Первый интерфейс, Eth1, будет находиться в зоне APP, а второй интерфейс, Eth2, будет находиться в зоне DB. Eth1 будет использовать подсеть 10.125.1.0/24, а Eth2 — подсеть 10.135.1.0/24.

-4

Кроме того, я развертываю два контейнера Alpine Linux в каждой зоне безопасности и создаю политику безопасности, которая разрешает трафик между двумя зонами.

Файл топологии Containerlab

Этот файл containerlab с именем 'main-labs' определяет топологию, которая включает в себя узлы Palo Alto и Alpine Linux. Сеть управления настроена с подсетью 192.168.100.0/24. Топология состоит из двух основных типов узлов: paloalto_panos узел с использованием изображения vrnetlab/vr-pan:10.2.6, а также linux с помощью метода alpine:latest образ.

name: main-labs

mgmt: network: mgmt
ipv4-subnet: 192.168.100.0/24

topology: kinds: paloalto_panos: image: vrnetlab/vr-pan:10.2.6
linux: image: alpine:latest
nodes: palo-01: kind: paloalto_panos
mgmt-ipv4: 192.168.100.10
network-mode: mgmt
alpine-01: kind: linux
network-mode: none
exec: - ip addr add 10.125.1.10/24 dev eth0
- ip route add default via 10.125.1.1 dev eth0
alpine-02: kind: linux
network-mode: none
exec: - ip addr add 10.135.1.10/24 dev eth0
- ip route add default via 10.135.1.1 dev eth0
links: - endpoints: ["palo-01:eth1", "alpine-01:eth0"] - endpoints: ["palo-01:eth2", "alpine-02:eth0"]

Узел межсетевого экрана, palo-01, имеет управляющий IP-адрес 192.168.100.10 и использует сеть управления. Два контейнера Alpine Linux, alpine-01 и alpine-02, у каждого из них вручную настроены сетевые интерфейсы. alpine-01 ему присвоен IP-адрес 10.125.1.10/24 с маршрутом по умолчанию через 10.125.1.1. Подобным образом alpine-02 имеет IP-адрес 10.135.1.10/24 с маршрутом по умолчанию через 10.135.1.1.

💡

Тем network-mode: none под каждым узлом Alpine означает, что мы не хотим подключать Eth0 интерфейсов на этих Linux-узлах к сети Docker. Вместо этого мы хотим подключить их напрямую к брандмауэру, направляя весь трафик через брандмауэр.

Как всегда, просто запустите команду containerlab deploy для развертывания узлов.

Конфигурации в Пало-Альто

Полная загрузка брандмауэра занимает около 8-10 минут. Как только брандмауэр будет готов, вы можете войти в веб-интерфейс с помощью admin/Admin@123 учетные данные по умолчанию.

Как мы уже обсуждали ранее, я собираюсь назначить IP-адреса интерфейсу, назначить их зонам безопасности и создать политику безопасности.

-5
-6

Проверка подключения

Как только все было развернуто, я запустил пинг от одного узла Alpine к другому. Как вы можете видеть ниже, трафик успешно проходит через брандмауэр через созданную мной политику безопасности. Это подтверждает, что межсетевой экран правильно обрабатывает и маршрутизирует трафик между двумя зонами.

docker exec -it 3e5 /bin/sh

-7

Одна вещь, которую нужно помнить и заключение

Я заметил, что если я остановлю контейнеры (с помощью containerlab destroy, с параметром или без него --cleanup flag) и затем перезапустите их, брандмауэр загрузится с конфигурацией по умолчанию, и все мои изменения будут потеряны. Поэтому не забудьте экспортировать конфигурации перед уничтожением лаборатории. Если вы знаете способ сохранения конфигураций, пожалуйста, дайте мне знать в комментариях.

Ссылки

Контейнерлаб - https://containerlab.dev/
Боксен -
https://github.com/carlmontanari/boxen/
vrnetlab -
https://github.com/hellt/vrnetlab