Содержание
CGNAT. Трансляция сетевых адресов для IPv4
Зачем NAT применяется на практике:
Технология NAT позволяет экономить адресное пространство IPv4 и снижает вероятность взлома устройств, находящихся в сети оператора связи. На СКАТ доступна настройка двух режимов:
- CGNAT — Трансляция сетевых адресов и портов позволяет совместно использовать публичный IPv4 адрес несколькими абонентами и продлевает использование ограниченного адресного пространства IPv4.
- NAT 1:1 — Трансляция сетевого адреса 1в1 позволяет назначить абоненту с приватным IP публичный IP адрес без изменения настроек на его оборудовании и на маршрутизаторе, где он терминируется.
Проверим на тестах:
Тест 1. Настройка CGNAT и NAT 1:1 через CLI
Тест 2. Настройка CGNAT и NAT 1:1 через GUI
Тест 3. Настройка выгрузки NAT log на внешний коллектор и локально в файл
- Установка СКАТ “в разрыв”
- ПК с интернетом, подключенном через СКАТ.
- СКАТ расположен между двумя L2- или L3-устройствами провайдера
Приступаем к тестированию. Действия могут выполняться как в графическом интерфейсе СКАТ, так и через CLI. Выбор способа за клиентом, в инструкции представлены оба способа
Тест 1. Настройка CGNAT и NAT 1:1 через CLI
- Создание услуги NAT
- Назначение услуги NAT на абонента
- Создание обратного маршрута
- Проверка прохождения трафика
- Вывод информации о трансляциях
1. Создание услуги NAT (CLI)
Вводим команду в командной строке:
CGNAT:
fdpi_ctrl load profile --service 11 --profile.name cg_nat --profile.json '{ "nat_ip_pool" : "10.10.10.0/24", "nat_tcp_max_sessions" : 2000, "nat_udp_max_sessions" : 2000 }'
NAT 1:1:
fdpi_ctrl load profile --service 11 --profile.name bi_nat --profile.json '{ "nat_ip_pool" : "10.10.10.0/24", "nat_type": 1 }'
Значения в команде:
load profile
— создание профиляservice 11
— номер услуги на СКАТ, для услуги NAT это 11profile.name
— название создаваемого профиля,cg_nat
иbi_nat
profile.json '{ "nat_ip_pool" : "10.10.10.0/26", "nat_tcp_max_sessions" : 2000, "nat_udp_max_sessions" : 2000 }'
— настройки профиля в формате json:nat_ip_pool
— подсети NAT-пула через запятую. Если требуется исключить крайние адреса, можно добавить в конец~ (10.10.10.0/24~)
, тогда в пуле будут адреса с10.10.10.1
по10.10.10.254
.nat_tcp_max_sessions
— максимальное количество tcp сессий на одного абонента.nat_udp_max_sessions
— максимальное количество udp трансляций на одного абонента.nat_type
— режим работы NAT. 0 — для CGNAT, 1 — для NAT 1:1. По умолчанию 0, поэтому данное поле для CGNAT не указано.
2. Назначение услуги NAT на абонента (CLI)
CGNAT
Назначение услуги NAT на абонента возможно по IP или CIDR
Пример команды подключения услуги по IP:
fdpi_ctrl load --service 11 --profile.name cg_nat --ip 100.64.0.1
Пример подключения услуги на весь CIDR:
fdpi_ctrl load --service 11 --profile.name cg_nat --cidr 100.64.0.0/24
NAT 1:1
Пример команды подключения услуги по IP:
fdpi_ctrl load --service 11 --profile.name bi_nat --ip 100.64.0.1
Пример подключения услуги на весь CIDR:
fdpi_ctrl load --service 11 --profile.name bi_nat --cidr 100.64.0.0/24
Этих команд достаточно для настройки NAT на СКАТ. При этом СКАТ по умолчанию работает в режиме прозрачного моста, то есть создает NAT трансляции и направляет трафик в обе стороны, но не участвует в маршрутизации.
3. Создание обратного маршрута (CLI)
Чтобы обратный трафик в сторону NAT пула был смаршрутизирован к абонентам, потребуется создать маршрут к NAT-пулу на следующем за СКАТ маршрутизаторе и сделать этот маршрут известным остальным маршрутизаторам сети.
Рассмотрим ситуацию, когда на маршрутизаторах, между которыми стоит СКАТ, настроена стыковочная сеть 10.0.1.0/30, IP на интерфейсе маршрутизатора со стороны абонентов (R1) - 10.0.1.2, IP на интерфейсе маршрутизатора после СКАТ (R2) - 10.0.1.1 (см. схему).
На маршрутизаторе R2 потребуется настроить маршрут к NAT-пулу. Для cisco-like CLI настройка будет выглядеть так:
conf t
ip route 10.10.10.0 255.255.255.192 10.0.1.2
Также потребуется настроить редистрибуцию статических маршрутов, чтобы об этом маршруте было известно не только R2, но и в остальной сети оператора. В случае, если используется ospf:
router ospf 1 redistribute static subnets metric-type 1
Где 1
в router ospf 1
— номер процесса OSPF на маршрутизаторе.
4. Проверка прохождения трафика и ориентации интерфейсов (CLI)
С тестового ПК провести проверку применения NAT:
- Проверить доступность роутера R2.
- Выполнить команду
ping 10.0.1.2
. Если R2 недоступен, то необходимо проверить ориентацию интерфейсов СКАТ.
В In интерфейс подключены абоненты, в Out интерфейс подключен интернет.
Определить где какой интерфейс возможно путем перевода порта, подключенного к СКАТ, в состояние down на R1 и вывести статус интерфейсов на СКАТ.
fdpi_cli dev xstat|grep --no-group-separator -B1 "Link status"|paste - -|sort Device 02:00.0: Link status: link down Device 02:00.1: Link status: link up
Проверить соответствие в fastdpi.conf
При необходимости изменить направление и сделать рестарт сервиса через команду
service fastdpi restart
5. Вывод информации о трансляциях (CLI)
По каждому IP возможно сделать вывод текущего состояния услуги NAT.
Просмотр через fdpi_ctrl
количества активных сессий и назначенного белого адреса для конкретного серого адреса:
fdpi_ctrl list status --service 11 --ip 192.168.4.20
Результат:
Абонентские приватные IP-адреса транслируются в Публичные IP-адреса.
Тест 2. Настройка CGNAT и NAT 1:1 через GUI
- Создание услуги NAT
- Назначение услуги NAT на абонента
- Создание обратного маршрута
- Проверка прохождения трафика
- Вывод информации о трансляциях
1. Создание услуги NAT (GUI)
- Открываем раздел Управление DPI/Услуги. Вкладка CGNAT. Создаем Профиль с именем cg_nat.
- Создаем Профиль с именем bi_nat.
- Затем нужно активировать данную услугу в СКАТ нажатие кнопки Play. Статус поменяется на “включен”.
2. Назначение услуги NAT на абонента (GUI)
В том же разделе “Управление DPI/Услуги”, вкладка CGNAT.
В правой колонке “Абоненты” добавляем абонента, выбираем тип “без привязки”, вводим IP абонента, выбираем 11 услугу “CGNAT” или “NAT 1:1”, указываем галочка “Да” включить, выбираем профиль, нажимаем “Применить” и “Сохранить”.
Этих команд достаточно для настройки NAT на СКАТ. При этом СКАТ по умолчанию работает в режиме прозрачного моста, то есть создает NAT трансляции и направляет трафик в обе стороны, но не участвует в маршрутизации.
3. Создание обратного маршрута (GUI)
Действия те же, что и в п. 3 настройки через CLI
4. Проверка прохождения трафика и ориентации интерфейсов (CLI)
С тестового ПК провести проверку применения NAT:
- Проверить доступность роутера R2.
- Выполнить команду ping 10.0.1.2. Если R2 недоступен, то необходимо проверить ориентацию интерфейсов СКАТ.
В In интерфейс подключены абоненты, в Out интерфейс подключен интернет.
Определить где какой интерфейс возможно путем перевода порта, подключенного к СКАТ, в состояние down на R1 и вывести статус интерфейсов на СКАТ.
Проверить соответствие в fastdpi.conf
При необходимости изменить направление и сделать рестарт сервиса через команду
service fastdpi restart
5. Вывод информации о трансляциях (GUI)
По каждому IP возможно сделать вывод текущего состояния услуги NAT (GUI)
Результат:
Выводится информация по трансляции приватного адреса в публичный.
Тест 3. Настройка выгрузки NAT log на внешний коллектор и локально в файл
- Журналирование в текстовом формате
- Экспорт во внешние коллекторы
Работа с NAT log возможна в двух вариантах: запись локально в файл или выгрузка на внешний коллектор.
Вариант 1. Ведение журнала трансляций в текстовом формате через CLI
Для записи NAT трансляций в текстовый лог на сервере СКАТ в конфигурационном файле /etc/dpi/fastdpi.conf
настраиваются следующие параметры:
ajb_save_nat=1 ajb_save_nat_format=ts:ssid:event:login:proto:ipsrc:portsrc:ipsrcpostnat:portsrcpostnat:ipdst:portdst ajb_nat_path=/var/dump/dpi ajb_nat_ftimeout=30
где:
ajb_save_nat=1
— активировать запись трансляций в текстовый логajb_nat_path=/var/dump/dpi
— место размещения файлов с записью логов (по умолчанию/var/dump/dpi
)ajb_nat_ftimeout=30
периодичность записиajb_save_nat_format=ts:ssid:event:login:proto:ipsrc:portsrc:ipsrcpostnat:portsrcpostnat:ipdst:portdst
— список и порядок записываемых полей, где:ts
— timestamp (временная метка)ssid
— идентификатор сессии (для связи с данными Netflow/IPFIX по объемам)event
— событие (создание или удаление сессии)login
— логин абонентаipsrc
— IP адрес источника запроса (абонента)portsrc
— порт источника запроса (абонента)ipsrcpostnat
— IP адрес источника запроса (абонента) после NAT трансляцииportsrcpostnat
— порт источника запроса (абонента) после NAT трансляцииipdst
— IP адрес получателя запроса (хоста)portdst
— порт получателя запроса (хоста)
Файловая система для записи логов должна быть быстрой и локальной (никаких NFS и других remote), данный вариант журналирования рекомендуется только в целях кратковременной диагностики
Вариант 2. Экспорт трансляций на внешние коллекторы в формате IPFIX
Для анализа данных по совершенным NAT трансляциям на внешних системах можно экспортировать эти данных по сети в формате ipfix (aka netflow v10). Экспорт NAT трансляций настраивается следующими параметрами:
ipfix_dev=em1 ipfix_nat_udp_collectors=1.2.3.4:1500,1.2.3.5:1501 ipfix_nat_tcp_collectors=1.2.3.6:9418
где:
em1
— имя сетевого интерфейса для экспортаipfix_nat_udp_collectors
— адреса udp коллекторовipfix_nat_tcp_collectors
— адреса tcp коллекторов
Настройка журнала трансляций через GUI
Открываем раздел Управление DPI/Конфигурация. Добавляем в режиме редактора параметры записи локально в файл или выгрузки на внешний коллектор. Сохраняем и делаем рестарт сервиса.