====== Настройка и управление ====== {{indexmenu_n>2}} Управление данным сервисом на уровне отдельных абонентов осуществляется с помощью ''[[dpi:dpi_components:platform:subscriber_management:subsman_cmd|fdpi_ctrl]]''. Формат команды: fdpi_ctrl команда --service 11 [список опций] [список_IP или login] Подробный синтаксис команд и способы задания IP-адресов описаны в разделе [[dpi:dpi_components:platform:subscriber_management:subsman_cmd|Команды управления]]. Подключение трансляции адресов для абонента осуществляется через услугу 11. ===== CG-NAT ===== Создаем профиль услуги CG-NAT, в котором определяем параметры пула IP-адресов: fdpi_ctrl load profile --service 11 --profile.name test_nat --profile.json '{ "nat_ip_pool" : "5.200.43.0/24,5.200.44.128/25", "nat_tcp_max_sessions" : 2000, "nat_udp_max_sessions" : 2000 }' Описание параметров находится в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже. В случае привязки к ''login'' нескольких IP или подсетей, счетчик сессий индивидуален для каждого IP-адреса. При указании диапазона внешних IP-адресов можно указать один или несколько диапазонов через запятую, [[dpi:faq:cgnat#как_поменять_параметры_уже_существующего_и_используемого_пула|можно динамически добавить дополнительные диапазоны в ранее созданный пул.]]\\ Из диапазона можно исключить крайние адреса (по соглашению о бесклассовой адресации, это адреса шлюза и широковещательный), добавив в определение диапазона символ "~" в конце определения ''cidr'', например: ''5.200.43.0/24~''. ===== NAT 1:1 ===== Cоздание профиля услуги NAT 1:1((:!: операторы иногда используют трансляцию 1:1 как альтернативу маршрутизации белых IP до абонентских CPE, но важно понимать, что хотя эта схема немного упрощает администрирование, но она неравноценна как с точки зрения абонента, который обычно платит услугу белого адреса деньги, так и с сетевой, так как некоторое клиентское ПО знает про приватные адреса и ведет себя по другому, чем в случае с публичными адресами, например, мессенджеры WhatsApp/Viber/Skype/SIP вместо прямых P2P соединений начинают использовать stun-прокси сервера, которые часто перегружены, что может серьезно ухудшить качество голосовых и видеозвонков, не работает IPSEC VPN без поддержки NAT-T или с авторизацией по сертификатам, абонент не может использовать свой публичный IPv4 в качестве IPv6 адреса через механизм [[https://en.wikipedia.org/wiki/6to4|6to4]], в торрентах перестает работать автоопределение локального ретрекера, трекеры абонентам с серыми адресами нередко выдают меньшее число пиров, что сказывается на скорости закачки и т.п. Для L2-connected абонентов лучшей альтернативой NAT1:1 является использование unnumbered адресов, которые нативно поддерживаются СКАТ BRAS. Кроме того при переходе к IPv6/Dual Stack оператору все равно придется научиться маршрутизировать публичные IPv6 адреса)), в котором определить диапазон IP-адресов пула: fdpi_ctrl load profile --service 11 --profile.name test_nat --profile.json '{ "nat_ip_pool" : "5.200.44.0/24,5.200.44/25", "nat_type" : 1 }' Описание параметров находится в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже. При указании диапазона внешних IP адресов можно указать один или несколько диапазонов через запятую, [[dpi:faq:cgnat#как_поменять_параметры_уже_существующего_и_используемого_пула|можно динамически добавить дополнительные диапазоны в ранее созданный пул]].\\ Из диапазона можно исключить крайние адреса (по соглашению о бесклассовой адресации, это адреса сети и широковещательный) добавив в определение диапазона символ "~" в конце определения ''cidr'', например: ''5.200.43.0/24~''.\\ :!: Временное ограничение: каждый из отдельных пулов в общем списке пулов должен содержать публичных адресов не меньше, чем число рабочих потоков. ===== Управление услугой NAT ===== Подключить абоненту услугу 11 с заданными ранее параметрами пула: fdpi_ctrl load --service 11 --profile.name test_nat --ip 192.168.0.1 или fdpi_ctrl load --service 11 --profile.name test_nat --login test_subs или fdpi_ctrl load --service 11 --profile.name test_nat --cidr 192.168.1.0/24 Просмотреть список всех NAT профилей: fdpi_ctrl list all profile --service 11 ===== Дополнительные настройки ===== Дополнительно в глобальных параметрах **''/etc/dpi/fastdpi.conf''** можно задать: * ''nat_ports'' * ''nat_max_profiles'' * ''nat_exclude_private'' * ''nat_private_cidr'' * ''lifetime_flow'' * ''lifetime_flow_long'' Описание параметров находится в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже. С версии 12.0 появилась возможность выбрать метод хеширования flow по рабочим потокам. При использовании нового метода распределение адресов не зависит от количества рабочих потоков. Настраивается параметром ''rx_dispatcher'' в ''fastpdi.conf'' (для принятия изменений требуется **restart** сервиса). Значения параметра описаны в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже. Для того чтобы гарантировать NAT преобразование для приватного IP-адреса в любой публичный IP-адрес при использовании NAT 1:1, необходимо указать диапазон IP-адресов, который используется в NAT 1:1. Настраивается параметром ''nat_transcode_cidr'' в ''fastdpi.conf'' (для принятия изменений требуется **restart** сервиса): nat_transcode_cidr=201.201.210.0/24,201.210.210.0/29 Описание параметра находится в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже.\\ Параметр ''nat_transcode_cidr'' актуален **только** при использовании нового метода распределения **и** использовании NAT 1:1. В других случаях данный параметр не учитывается, его наличие не считается ошибкой. =====Параметры и возможные значения===== ^ Параметры профиля NAT ^^ ^ Параметр ^ Значение ^ | ''nat_ip_pool''\\ string | Диапазон внешних IP адресов в формате CIDR. Размер пула должен быть **не меньше** [[dpi:faq:cgnat#почему_рекомендуется_создавать_пул_не_менее_чем_из_2х_или_4x_адресов|числа рабочих потоков]]. | | ''nat_tcp_max_sessions''\\ integer | Максимальное количество TCP сессий, которые может создать абонент.\\ По умолчанию: 2000. | | ''nat_udp_max_sessions''\\ integer | Максимальное количество UDP сессий, которые может создать абонент.\\ По умолчанию: 2000. | | ''nat_type''\\ integer | Задает тип профиля.\\ Варианты:\\ ''0'' --- CGNAT;\\ ''1'' --- NAT 1:1. | | ''nat_ports''\\ string | Диапазон используемых для трансляции портов на внешних адресах.\\ По умолчанию: 1024-65535.| ^ Параметры fastdpi.conf ^^ ^ Параметр ^ Значение ^ | ''nat_max_profiles''\\ integer | Максимальное количество профилей с параметрами пулов.\\ По умолчанию: 4.\\ Максимум: 65000 (при наличии достаточного объема оперативной памяти). | | ''nat_exclude_private''\\ integer | Исключает NAT преобразование если оба адреса приватные.\\ Варианты:\\ ''0'' --- off ← (по умолчанию).\\ ''1'' --- Не делаем NAT для приватных адресов (ip_src и ip_dst --- приватные или находятся в nat_private_cidr).\\ ''2'' --- ip_src — приватный с учетом nat_private_cidr и AS для dst_ip = local.\\ ''4'' --- ip_src — приватный с учетом nat_private_cidr и AS для dst_ip = peer. | | ''nat_private_cidr''\\ string | Задает дополнительные диапазоны приватных адресов в дополнение к стандартным диапазонам((Стандартные диапазоны: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10)).\\ Максимум: 4 диапазона. | | ''lifetime_flow''\\ integer | Определяет время короткой очереди в секундах для TCP SYN, TCP FIN, UDP **для ВСЕХ соединений**. По истечении данного времени возможно повторное использование flow и всех ресурсов с ним связанных. В частности переиспользование порта связанного с flow происходит только в момент, когда до этого порта доходит очередь на конкретном обработчике. \\ Время освобождения = номер в очереди * ''lifetime_flow'' \\ По умолчанию: 60. | | ''lifetime_flow_long''\\ integer | Определяет время длинной очереди в секундах для TCP DATA установленного соединения **для ВСЕХ соединений**. По истечении данного времени возможно повторное использование flow и всех ресурсов с ним связанных. В частности переиспользование порта связанного с flow происходит только в момент, когда до этого порта доходит очередь на конкретном обработчике. СКАТ контролирует флаги в TCP соединениях (FIN, RST) при закрытии соединений и соединения переводятся в короткую очередь. \\ Время освобождения = номер в очереди * ''lifetime_flow_long''\\ По умолчанию: 300. | | ''nat_whp_lifetime''\\ integer | Определяет время короткой очереди в секундах для NAT трансляции для TCP SYN, TCP FIN, UDP. Данный параметр переопределяет ''lifetime_flow'' **только для NAT трансляций**. По истечении данного времени возможно повторное использование порта, но использование происходит только в момент, когда до этого порта доходит очередь на конкретном публичном IP адресе. Позволяет сократить время высвобождения портов.\\ По умолчанию: 75. | | ''nat_whp_lifetime_long''\\ integer | Определяет время длинной очереди в секундах для NAT трансляции для TCP DATA установленного соединения. Данный параметр переопределяет ''lifetime_flow_long'' **только для NAT трансляций**. По истечении данного времени возможно повторное использование порта, но использование происходит только в момент, когда до этого порта доходит очередь на конкретном публичном IP адресе. Позволяет сократить время высвобождения портов. СКАТ контролирует флаги в TCP соединениях (FIN, RST) при закрытии соединений и соединения переводятся в короткую очередь.\\ По умолчанию: 375. | | ''nat_transcode_cidr''\\ string\\ //Добавлен в версии 12.0// | Задает CIDR публичных адресов оператора. \\ Возможно указать только 2 CIDR (в случае использования большего количества CIDR, допустимо указание более широкого CIDR). Значения используются при перекодировке публичный –> приватный для NAT 1:1. Для приватного адреса может быть назначен любой публичный адрес для NAT 1:1. | | ''rx_dispatcher''\\ integer \\ //Добавлен в версии 12.0// | Метод хеширования flow по рабочим потокам. **Влияет на все NAT pool.**\\ Варианты:\\ ''0'' --- прежний метод ← (по умолчанию). ''(IP_SRC+IP_DST)%N ) & IP_MASK''\\ ''1'' --- метод с равномерной балансировкой по произвольному количеству потоков **с** поддержкой NAT 1:1 с требованием назначения конкретных адресов. ''(CRC(IP_SRC)%N+CRC(IP_DST)%N)%N''\\ ''2'' --- метод с равномерной балансировкой по произвольному количеству потоков **без** поддержки NAT 1:1 с требованием назначения конкретных адресов. |