Зачем NAT применяется на практике:
Технология NAT позволяет экономить адресное пространство IPv4 и снижает вероятность взлома устройств, находящихся в сети оператора связи. На СКАТ доступна настройка двух режимов:
Проверим на тестах:
Тест 1. Настройка CGNAT и NAT 1:1 через CLI
Тест 2. Настройка CGNAT и NAT 1:1 через GUI
Тест 3. Настройка выгрузки NAT log на внешний коллектор и локально в файл
Приступаем к тестированию. Действия могут выполняться как в графическом интерфейсе СКАТ, так и через 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 не указано.Назначение услуги 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
Пример команды подключения услуги по 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 трансляции и направляет трафик в обе стороны, но не участвует в маршрутизации.
Чтобы обратный трафик в сторону 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 на маршрутизаторе.
С тестового ПК провести проверку применения NAT:
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
По каждому IP возможно сделать вывод текущего состояния услуги NAT.
Просмотр через fdpi_ctrl
количества активных сессий и назначенного белого адреса для конкретного серого адреса:
fdpi_ctrl list status --service 11 --ip 192.168.4.20
Результат:
Абонентские приватные IP-адреса транслируются в Публичные IP-адреса.
В том же разделе “Управление DPI/Услуги”, вкладка CGNAT.
В правой колонке “Абоненты” добавляем абонента, выбираем тип “без привязки”, вводим IP абонента, выбираем 11 услугу “CGNAT” или “NAT 1:1”, указываем галочка “Да” включить, выбираем профиль, нажимаем “Применить” и “Сохранить”.
Этих команд достаточно для настройки NAT на СКАТ. При этом СКАТ по умолчанию работает в режиме прозрачного моста, то есть создает NAT трансляции и направляет трафик в обе стороны, но не участвует в маршрутизации.
Действия те же, что и в п. 3 настройки через CLI
С тестового ПК провести проверку применения NAT:
В In интерфейс подключены абоненты, в Out интерфейс подключен интернет.
Определить где какой интерфейс возможно путем перевода порта, подключенного к СКАТ, в состояние down на R1 и вывести статус интерфейсов на СКАТ.
Проверить соответствие в fastdpi.conf
При необходимости изменить направление и сделать рестарт сервиса через команду
service fastdpi restart
По каждому IP возможно сделать вывод текущего состояния услуги NAT (GUI)
Результат:
Выводится информация по трансляции приватного адреса в публичный.
Работа с NAT log возможна в двух вариантах: запись локально в файл или выгрузка на внешний коллектор.
Для записи 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), данный вариант журналирования рекомендуется только в целях кратковременной диагностики
Для анализа данных по совершенным 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 коллекторовОткрываем раздел Управление DPI/Конфигурация. Добавляем в режиме редактора параметры записи локально в файл или выгрузки на внешний коллектор. Сохраняем и делаем рестарт сервиса.