Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
dpi:opt_cgnat:сgnat_settings [2023/08/24 08:48] – ↷ Страница перемещена из dpi:dpi_options:opt_cgnat:сgnat_settings в dpi:opt_cgnat:сgnat_settings elena.krasnobryzh | dpi:opt_cgnat:сgnat_settings [2024/11/28 12:58] (текущий) – elena.krasnobryzh |
---|
====== 2 Настройка и управление ====== | {{tag>Услуги "Услуга 11" NAT CG-NAT}} |
| ====== Настройка и управление ====== |
| {{indexmenu_n>2}} |
| Управление данным сервисом на уровне отдельных абонентов осуществляется с помощью ''[[dpi:dpi_components:platform:subscriber_management:subsman_cmd|fdpi_ctrl]]''. |
| |
| Формат команды: |
| <code bash> |
| fdpi_ctrl команда --service 11 [список опций] [список_IP или login] |
| </code> |
| Подробный синтаксис команд и способы задания IP-адресов описаны в разделе [[dpi:dpi_components:platform:subscriber_management:subsman_cmd|Команды управления]]. |
| |
| <note important>Подключение трансляции адресов для абонента осуществляется через услугу 11.</note> |
| |
| ===== CG-NAT ===== |
| Создаем профиль услуги CG-NAT, в котором определяем параметры пула IP-адресов: |
| <code bash> |
| 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 }' |
| </code> |
| Описание параметров находится в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже. |
| |
| <note important>В случае привязки к ''login'' нескольких IP или подсетей, счетчик сессий индивидуален для каждого IP-адреса.</note> |
| |
| <note>При указании диапазона внешних IP-адресов можно указать один или несколько диапазонов через запятую, [[dpi:faq:cgnat#как_поменять_параметры_уже_существующего_и_используемого_пула|можно динамически добавить дополнительные диапазоны в ранее созданный пул.]]\\ Из диапазона можно исключить крайние адреса (по соглашению о бесклассовой адресации, это адреса шлюза и широковещательный), добавив в определение диапазона символ "~" в конце определения ''cidr'', например: ''5.200.43.0/24~''.</note> |
| |
| ===== 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-адресов пула: |
| <code bash> |
| 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 }' |
| </code> |
| Описание параметров находится в [[dpi:opt_cgnat:сgnat_settings#параметры_и_возможные_значения|таблице]] ниже. |
| |
| <note>При указании диапазона внешних IP адресов можно указать один или несколько диапазонов через запятую, [[dpi:faq:cgnat#как_поменять_параметры_уже_существующего_и_используемого_пула|можно динамически добавить дополнительные диапазоны в ранее созданный пул]].\\ |
| Из диапазона можно исключить крайние адреса (по соглашению о бесклассовой адресации, это адреса сети и широковещательный) добавив в определение диапазона символ "~" в конце определения ''cidr'', например: ''5.200.43.0/24~''.\\ :!: Временное ограничение: каждый из отдельных пулов в общем списке пулов должен содержать публичных адресов не меньше, чем число рабочих потоков.</note> |
| |
| ===== Управление услугой NAT ===== |
| Подключить абоненту услугу 11 с заданными ранее параметрами пула: |
| <code bash> |
| 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 |
| </code> |
| Просмотреть список всех NAT профилей: |
| <code bash> |
| fdpi_ctrl list all profile --service 11 |
| </code> |
| |
| ===== Дополнительные настройки ===== |
| Дополнительно в глобальных параметрах **''/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** сервиса): |
| <code bash>nat_transcode_cidr=201.201.210.0/24,201.210.210.0/29</code> |
| Описание параметра находится в [[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 с требованием назначения конкретных адресов. | |