{{indexmenu_n>2}} ======CGNAT. Трансляция сетевых адресов для IPv4====== **Зачем NAT применяется на практике:** Технология NAT позволяет экономить адресное пространство IPv4 и снижает вероятность взлома устройств, находящихся в сети оператора связи. На СКАТ доступна настройка двух режимов: * CGNAT — Трансляция сетевых адресов и портов позволяет совместно использовать публичный IPv4 адрес несколькими абонентами и продлевает использование ограниченного адресного пространства IPv4. * NAT 1:1 — Трансляция сетевого адреса 1в1 позволяет назначить абоненту с приватным IP публичный IP адрес без изменения настроек на его оборудовании и на маршрутизаторе, где он терминируется. **Проверим на тестах:**\\ [[dpi:dpi_brief:test_cases:nat#тест_1_настройка_cgnat_и_nat_11_через_cli|Тест 1. Настройка CGNAT и NAT 1:1 через CLI]]\\ [[dpi:dpi_brief:test_cases:nat#тест_2_настройка_cgnat_и_nat_11_через_gui|Тест 2. Настройка CGNAT и NAT 1:1 через GUI]]\\ [[dpi:dpi_brief:test_cases:nat#тест_3_настройка_выгрузки_nat_log_на_внешний_коллектор_и_локально_в_файл|Тест 3. Настройка выгрузки NAT log на внешний коллектор и локально в файл]] **Условия тестов: ** - Установка СКАТ “в разрыв” - ПК с интернетом, подключенном через СКАТ. - СКАТ расположен между двумя L2- или L3-устройствами провайдера {{ :dpi:dpi_brief:test_cases:nat_img9.png?nolink&700 |}} Приступаем к тестированию. Действия могут выполняться как в графическом интерфейсе СКАТ, так и через 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 это 11 * ''profile.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 (см. схему). {{ :dpi:dpi_brief:test_cases:nat_img10.png?nolink&700 |}} На маршрутизаторе 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.\\ {{:dpi:dpi_brief:test_cases:nat_img1.png?nolink&900|}} - Создаем Профиль с именем bi_nat.\\ {{:dpi:dpi_brief:test_cases:nat_img2.png?nolink&500|}} - Затем нужно активировать данную услугу в СКАТ нажатие кнопки Play. Статус поменяется на “включен”.\\ {{:dpi:dpi_brief:test_cases:nat_img3.png?nolink&400|}} ====2. Назначение услуги NAT на абонента (GUI)==== В том же разделе “Управление DPI/Услуги”, вкладка CGNAT.\\ В правой колонке “Абоненты” добавляем абонента, выбираем тип “без привязки”, вводим IP абонента, выбираем 11 услугу “CGNAT” или “NAT 1:1”, указываем галочка “Да” включить, выбираем профиль, нажимаем “Применить” и “Сохранить”. {{:dpi:dpi_brief:test_cases:nat_img4.png?nolink&400|}} //Этих команд достаточно для настройки NAT на СКАТ. При этом СКАТ по умолчанию работает в режиме прозрачного моста, то есть создает NAT трансляции и направляет трафик в обе стороны, но не участвует в маршрутизации. // ====3. Создание обратного маршрута (GUI)==== Действия те же, что и в [[dpi:dpi_brief:test_cases:nat#создание_обратного_маршрута_cli|п. 3 настройки через CLI]] ====4. Проверка прохождения трафика и ориентации интерфейсов (CLI)==== С тестового ПК провести проверку применения NAT: * Проверить доступность роутера R2. * Выполнить команду ping 10.0.1.2. Если R2 недоступен, то необходимо проверить ориентацию интерфейсов СКАТ. В In интерфейс подключены абоненты, в Out интерфейс подключен интернет. \\ Определить где какой интерфейс возможно путем перевода порта, подключенного к СКАТ, в состояние down на R1 и вывести статус интерфейсов на СКАТ. {{:dpi:dpi_brief:test_cases:nat_img5.png?nolink&900|}} Проверить соответствие в fastdpi.conf\\ При необходимости изменить направление и сделать рестарт сервиса через команду service fastdpi restart {{:dpi:dpi_brief:test_cases:nat_img6.png?nolink&800|}} ====5. Вывод информации о трансляциях (GUI)==== По каждому IP возможно сделать вывод текущего состояния услуги NAT (GUI) {{:dpi:dpi_brief:test_cases:nat_img7.png?nolink&500|}} **Результат:**\\ Выводится информация по трансляции приватного адреса в публичный. =====Тест 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/Конфигурация. Добавляем в режиме редактора параметры записи локально в файл или выгрузки на внешний коллектор. Сохраняем и делаем рестарт сервиса. {{:dpi:dpi_brief:test_cases:nat_img8.png?nolink&900|}}