Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| dpi:opt_cgnat:cgnat_faq:start [2023/08/28 09:03] – elena.krasnobryzh | dpi:opt_cgnat:cgnat_faq:start [2023/08/28 09:06] (текущий) – удалено elena.krasnobryzh | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Вопросы и ответы ====== | ||
| - | {{indexmenu_n> | ||
| - | - [[cgnat_faq_1|Почему рекомендуется создавать пул не менее чем из 2х или 4х адресов? | ||
| - | - [[cgnat_faq_2|Как определить, | ||
| - | - [[cgnat_faq_3|После подключения NAT стали отваливаться неактивные SSH сессии]] | ||
| - | - [[cgnat_faq_4|Сколько " | ||
| - | - [[cgnat_faq_5|Как поменять параметры уже существующего и используемого пула?]] | ||
| - | - [[cgnat_faq_6|Как выдать конкретный адрес абоненту с NAT 1:1?]] | ||
| - | - [[cgnat_faq_7|Диагностика NAT]] | ||
| - | - [[cgnat_faq_8|Как найти абонента за NAT? Работа с abuse letters]] | ||
| - | |||
| - | |||
| - | ====== 1 Почему рекомендуется создавать пул не менее чем из 2х или 4x адресов? | ||
| - | {{indexmenu_n> | ||
| - | Неблокирующий алгоритм диспетчеризации в DPI, распределяющий сессии по рабочим потокам, | ||
| - | накладывает ограничение на то, какой белый IP адрес может быть назначен абоненту из пула: | ||
| - | |||
| - | - Чтобы гарантированно абонент получил свой белый адрес, необходимо чтобы в пуле было не меньше | ||
| - | адресов, | ||
| - | |||
| - | Узнать число рабочих потоков можно командой | ||
| - | < | ||
| - | |||
| - | |||
| - | - Если в пуле всего один адрес, то не всем абонентам он может быть назначен, | ||
| - | |||
| - | ====== 2 Как определить, | ||
| - | {{indexmenu_n> | ||
| - | |||
| - | Посмотреть, | ||
| - | < | ||
| - | fdpi_ctrl list status --service 11 --ip 192.168.4.20 | ||
| - | </ | ||
| - | В NAT 1:1 белый адрес выделяется сразу при назначении услуги, | ||
| - | |||
| - | Также выделенный абоненту белый адрес рапортуется в Radius Accounting в целях его логгирования в биллинге. | ||
| - | |||
| - | Заранее предсказать какой-именно адрес будет выдан абоненту из пула невозможно: | ||
| - | |||
| - | ====== 3 После подключения NAT стали отваливаться неактивные SSH сессии ====== | ||
| - | {{indexmenu_n> | ||
| - | Действительно, | ||
| - | большое количество мертвых сессий в пуле уменьшает производительность NAT и общую. | ||
| - | |||
| - | У NAT нет возможности отличить, | ||
| - | и закрывает такие долго висящие сессии по таймауту неактивности. Такое поведение предусмотрено стандартом и поддержано большинством производителей CG-NAT. | ||
| - | |||
| - | В СКАТ время жизни сессий можно корректировать следующими параметрами | ||
| - | < | ||
| - | lifetime_flow=60 | ||
| - | lifetime_flow_long=600 | ||
| - | </ | ||
| - | где lifetime_flow_long время жизни в секундах неактивных TCP-сессий, | ||
| - | <note warning> | ||
| - | (который задается в параметрах nat пула).</ | ||
| - | |||
| - | Поэтому при необходимости поддержания долгоиграющих неактивных соединений рекомендуется | ||
| - | использовать механизм tcp keep-alive, когда периодически в сессии передается пустой пакет, | ||
| - | который сигнализирует, | ||
| - | |||
| - | Настроить tcp keep-alive можно как индивидуально для приложения на стороне сервера или клиента, | ||
| - | так и на уровне операционной системы для всех приложений сразу. | ||
| - | |||
| - | **Пример** настройки на ssh сервере | ||
| - | < | ||
| - | в файл / | ||
| - | ServerAliveInterval 60 | ||
| - | </ | ||
| - | |||
| - | **Пример** настройки на ssh клиенте | ||
| - | < | ||
| - | в файл ~/ | ||
| - | Host * | ||
| - | ServerAliveInterval 60 | ||
| - | или в командной строке | ||
| - | ssh -o TCPKeepAlive=yes -o ServerAliveInterval=60 user@example.com | ||
| - | </ | ||
| - | |||
| - | **Пример** настройки для всех приложений в centos | ||
| - | < | ||
| - | в файл / | ||
| - | net.ipv4.tcp_keepalive_time = 600 | ||
| - | net.ipv4.tcp_keepalive_intvl = 60 | ||
| - | net.ipv4.tcp_keepalive_probes = 20 | ||
| - | </ | ||
| - | |||
| - | |||
| - | ====== 4 Сколько " | ||
| - | {{indexmenu_n> | ||
| - | <note important> | ||
| - | |||
| - | Подробнее: | ||
| - | |||
| - | По умолчанию на 1 белом IP для CG-NAT доступны 64512 портов (65535-1023, | ||
| - | |||
| - | В среднем физическое лицо создает 50-60 одновременно работающих сессий, | ||
| - | |||
| - | Так же необходимо учесть особенность механизма освобождения портов в NAT Pool: | ||
| - | - При подключении 11 услуги абоненту [[dpi: | ||
| - | - Когда абонент начинает устанавливать сессии, | ||
| - | - В случае если на конкретном Public IP находится много абонентов, | ||
| - | |||
| - | |||
| - | Рекомендации при создании NAT Pool и эксплуатации: | ||
| - | - Абонентов, | ||
| - | - Создавайте разряженные пулы и разделяйте клиентов в разные NAT Pool по типу: Физические лица и Юридические лица. | ||
| - | - Осуществляйте мониторинг клиентов, | ||
| - | |||
| - | ====== 5 Как поменять параметры уже существующего и используемого пула? ====== | ||
| - | {{indexmenu_n> | ||
| - | 1) Изменение лимита на количество сессий : | ||
| - | <code bash> | ||
| - | fdpi_ctrl load profile --service 11 --profile.name test_nat_2000 --profile.json '{ " | ||
| - | </ | ||
| - | Используется команда создания пула, идентичного прежнему, | ||
| - | |||
| - | 2) Добавление дополнительных адресов в пул: | ||
| - | <code bash> | ||
| - | fdpi_ctrl load profile --service 11 --profile.name test_nat_2000 --profile.json '{ " | ||
| - | </ | ||
| - | Используется команда создания пула, идентичного прежнему, | ||
| - | |||
| - | 3) Уменьшение пула | ||
| - | <note important> | ||
| - | В этом случае потребуется освободить пул, удалить и создать его с новыми параметрами.</ | ||
| - | |||
| - | Для удобства установим jq (утилиту для работы с данными в формате JSON): | ||
| - | <code bash> | ||
| - | yum install epel-release yum-utils | ||
| - | yum-config-manager --disable epel | ||
| - | yum --enablerepo epel install jq | ||
| - | </ | ||
| - | |||
| - | После чего сохраним информацию об абонентах текущего пула, удалим и создадим пул и подключим к нему абонентов: | ||
| - | <code bash> | ||
| - | fdpi_ctrl list all --service 11 --profile.name test_nat_4000 --outformat json|jq ' | ||
| - | fdpi_ctrl list all --service 11 --profile.name test_nat_4000 --outformat json|jq -r ' | ||
| - | fdpi_ctrl del all --service 11 --profile.name test_nat_4000 | ||
| - | fdpi_ctrl del profile --service 11 --profile.name test_nat_4000 | ||
| - | fdpi_ctrl load profile --service 11 --profile.name test_nat_4000 --profile.json '{ " | ||
| - | fdpi_ctrl load --service 11 --profile.name test_nat_4000 --file save_users.txt | ||
| - | </ | ||
| - | Не забудьте изменить в командах имя пула и его новые параметры на нужные вам. | ||
| - | |||
| - | |||
| - | ====== 6 Как выдать конкретный адрес абоненту с NAT 1:1? ====== | ||
| - | {{indexmenu_n> | ||
| - | |||
| - | Если у абонента всего один серый адрес и требуется выдать абоненту конкретный белый адрес, то нужно учитывать зависимость между серыми и белыми адресами, | ||
| - | |||
| - | < | ||
| - | |||
| - | где mask зависит от числа рабочих потоков: | ||
| - | * при 4 рабочих потоках mask=3 (типично для СКАТ >= 10) | ||
| - | * при 2 рабочих потоках mask=1 (типично для СКАТ <= 6) | ||
| - | |||
| - | Фактически для младших версий СКАТ абонентам с четными серыми адресами нужно выдавать четные белые адреса, | ||
| - | |||
| - | Соответственно для старших версий нужно учитывать равенство 2 младших бит IP адреса. | ||
| - | |||
| - | При одном рабочем потоке зависимость между адресами исчезает. | ||
| - | |||
| - | Точное значение маски можно посмотреть в логе DPI: | ||
| - | < | ||
| - | Если старт был давно, то выполнить reload | ||
| - | < | ||
| - | |||
| - | <note important> | ||
| - | И в случаях когда в договоре прописана выдача конкретного белого IP адреса и текущий серый адрес абонента не подпадает по указанную выше формулу, | ||
| - | |||
| - | **Пример для СКАТ-20: | ||
| - | абоненту с серым адресом 10.0.0.15 требуется выдать белый адрес 188.99.99.27\\ | ||
| - | маска=3\\ | ||
| - | 15&3=3 равно 27&3=3 - это значит, | ||
| - | |||
| - | **Назначаем адрес абоненту командой: | ||
| - | < | ||
| - | |||
| - | ====== 7 Диагностика NAT ====== | ||
| - | {{indexmenu_n> | ||
| - | |||
| - | 1. В профиле должны быть пулы одного размера((начиная с 12 версии это требование больше не актуально)). | ||
| - | Правильно: | ||
| - | < | ||
| - | type_profile=1, | ||
| - | </ | ||
| - | Неправильно: | ||
| - | < | ||
| - | type_profile=1, | ||
| - | </ | ||
| - | |||
| - | 2. Для абонентов которые в блокировке, | ||
| - | |||
| - | 3. Посмотреть равномерность распределения приватных адресов по публичным адресам в профиле. | ||
| - | < | ||
| - | fdpi_ctrl list all status --service 11 --profile.name nat_pool |grep whiteip|cut -f7|sort|uniq -c|sort -n | ||
| - | </ | ||
| - | |||
| - | 4. Посмотреть количество абонентов, | ||
| - | < | ||
| - | fdpi_ctrl list all status --service 11 --profile.name nat_pool | awk 'BEGIN {FS=" | ||
| - | </ | ||
| - | |||
| - | 5. Посмотреть, | ||
| - | < | ||
| - | fdpi_ctrl list all status --service 11 --profile.name nat_pool |grep whiteip|cut -f7|cut -d" | ||
| - | </ | ||
| - | |||
| - | ====== 8 Как найти абонента за NAT. Работа с abuse letters ====== | ||
| - | {{indexmenu_n> | ||
| - | |||
| - | Ищем конкретного абонента, | ||
| - | В письме с abuse, как правило, | ||
| - | Нужно сделать **2 шага** — найти в abuse письме необходимые признаки и по ним в GUI СКАТ идентифицировать абонента. | ||
| - | |||
| - | ==== Шаг 1. Ищем в письме ==== | ||
| - | - Адрес из своего NAT-пула (source IP). | ||
| - | - Адрес атакуемого ресурса (destination IP) | ||
| - | - Время активности на атакуемом ресурсе //(с учетом часовых поясов!)// | ||
| - | |||
| - | * **Пример 1.** \\ {{dpi: | ||
| - | |||
| - | * ** Пример 2.** \\ {{dpi: | ||
| - | |||
| - | Еще из полезного в письме может быть: | ||
| - | - Причина abuse \\ {{dpi: | ||
| - | - История abuse (если активность была неоднократной) \\ {{dpi: | ||
| - | |||
| - | Это может помочь понять масштаб проблемы и выявлять аналогичные проблемы в сети. | ||
| - | |||
| - | ==== Шаг 2. Ищем активность абонента в GUI СКАТ ==== | ||
| - | Задача — определить по логам, какой абонент за NAT-пулом (source IP), указанным в письме, | ||
| - | |||
| - | Перед началом поиска стоит проверить 2 факта: | ||
| - | - Данный NAT-пул заведен на CG-NAT СКАТ. \\ {{dpi: | ||
| - | - Время хранения логов NAT захватывает время abuse-активности. Посмотреть и настроить \\ {{dpi: | ||
| - | |||
| - | Далее в GUI СКАТ необходимо открыть раздел NAT flow, выбрать период, | ||
| - | * {{dpi: | ||
| - | |||
| - | * {{dpi: | ||
| - | < | ||