Выход из изолированной сети наружу
- Проверено на версии — 2.2.1
- Требуется — изолированная сеть на VLAN, вторая изолированная сеть с выходом во внешнюю сеть
Изолированная сеть замкнута сама на себя, а её узлам нужен доступ во внешнюю сеть — к репозиториям обновлений, службе времени, корпоративным сервисам. Выход даётся через общий VRF, а адреса при этом транслируются, чтобы внешней стороне не требовался обратный маршрут. Значения — из сквозного примера.
Что получится
- В таблице маршрутизации VRF
demoпоявится маршрут по умолчанию через VRFtenant2. - Соединения, открытые узлами сети
10.88.0.0/24, будут уходить наружу с адреса агента в сетиtenant2. - Встречные соединения — снаружи в сеть
demo— по-прежнему запрещены.
Перед началом
- Профили
demoиtenant2созданы, агенты получили адреса в обеих сетях. - В сети
tenant2есть маршрут во внешнюю сеть. - Адреса сети
demoне транслируются где-то ещё: SNAT-группа на те же адреса приведёт к двойной трансляции, и система такую политику отклонит.
Настройка
- Откройте раздел VRF, перейдите на вкладку Cross-VRF политики и нажмите Создать политику.
- Заполните форму:
- Из VRF —
demo; - В VRF —
tenant2; - Режим политики — Между VRF (routed);
- Сети назначения —
0.0.0.0/0; - Сети источников —
10.88.0.0/24; - Транслировать адреса источников (NAT-masquerade) — включите.
- Из VRF —
- Сохраните политику.
- Убедитесь, что узлы сети
demoиспользуют плавающий шлюз10.88.0.1как маршрут по умолчанию.
Важно: 0.0.0.0/0 в поле Сети назначения допускается только вместе с трансляцией адресов источников. Без неё политика открыла бы всю таблицу маршрутизации целевого VRF и обнулила изоляцию, поэтому система такую пару отклоняет.
Встречная политика для ответного трафика не нужна: ответы на уже установленные соединения проходят по состоянию соединения. Вторая политика потребуется, только если инициировать соединения нужно и с обратной стороны.
Проверка
В интерфейсе системы
- На вкладке Cross-VRF политики пара
demo → tenant2присутствует с режимомrouted. - Уходящий наружу трафик виден инструментом TCP Dump на интерфейсе
ens19.301: источником пакетов будет адрес агента в сетиtenant2, а не адрес узла сетиdemo. Это и есть подтверждение трансляции. - Путь до внешнего адреса проверяется инструментом Traceroute с выбором интерфейса
ens19.301.
На машине
Таблицу маршрутизации VRF интерфейс пока не показывает, поэтому маршрут по умолчанию смотрят на агенте:
ip route show vrf demoТрафиком
С узла сети demo обратитесь к внешнему адресу:
curl -sS -o /dev/null -w '%{http_code}\n' http://<внешний адрес>/В журнале внешнего узла источником запроса будет 10.89.0.11 или 10.89.0.12. Обратное направление остаётся закрытым: обращение снаружи к 10.88.0.201 проходить не должно.
Частые ошибки
Сообщения об ошибках называют поля по именам, под которыми они уходят в систему: Сети источников — это from_prefixes, Сети назначения — to_prefixes.
| Сообщение | Что означает | Что сделать |
|---|---|---|
NAT-политика требует непустой from_prefixes: он ограничивает masquerade адресами источника | Включена трансляция, но не заданы Сети источников | Перечислите сети, которым разрешён выход |
default-префикс "0.0.0.0/0" протекает всей таблицей и обнуляет изоляцию | В Сетях назначения указан маршрут по умолчанию без трансляции | Включите Транслировать адреса источников либо перечислите конкретные сети |
NAT-политика открывает IPv6-назначения (...), но from_prefixes не содержит ни одного IPv6-префикса — трафик этой семьи уходил бы без masquerade | В назначениях есть сеть IPv6, а в источниках — только IPv4 | Добавьте в Сети источников сеть IPv6 либо уберите назначения IPv6 |
from_prefixes NAT-политики накрывают адрес 10.88.0.240 SNAT-пула "pool-1" — источник уже транслируется пулом (double-NAT) | Те же адреса транслирует SNAT-группа | Сузьте Сети источников либо откажитесь от одной из двух трансляций |
from_prefixes NAT-политики накрывают data-адрес 10.10.10.11 агента slb-node-1 — служебный трафик агента должен сохранять источник | В Сети источников попал адрес рабочего трафика агента | Укажите только изолированные сети |
"0.0.0.0/0" накрывает локально терминируемый адрес ... — leak не доставляет на локальный адрес (нужен SLB-листенер) | В Сетях назначения оказался адрес самого агента в целевом VRF | Уберите этот адрес из назначений; чтобы опубликовать приложение на этом адресе, заведите конфигурацию балансировки |
Routed-leak к/от default-плоскости пока не поддерживается (только VRF↔VRF): политика demo→default | Одним из концов выбрана default (global) | Для этой пары доступен только режим Через балансировщик |
Дальше
- Серверы в другом VRF — если нужна не маршрутизация, а публикация приложения из соседней сети.
- Проверка и диагностика VRF.