Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
dpi:opt_cgnat:faq [2023/08/28 09:06] – создано elena.krasnobryzh | dpi:opt_cgnat:faq [2024/07/29 12:53] (текущий) – удалено elena.krasnobryzh | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Вопросы и ответы ====== | ||
- | {{indexmenu_n> | ||
- | ===== 1. Почему рекомендуется создавать пул не менее чем из 2х или 4x адресов? | ||
- | Неблокирующий алгоритм диспетчеризации в DPI, распределяющий сессии по рабочим потокам, | ||
- | накладывает ограничение на то, какой белый IP адрес может быть назначен абоненту из пула: | ||
- | |||
- | - Чтобы гарантированно абонент получил свой белый адрес, необходимо чтобы в пуле было не меньше | ||
- | адресов, | ||
- | |||
- | Узнать число рабочих потоков можно командой | ||
- | < | ||
- | |||
- | - Если в пуле всего один адрес, то не всем абонентам он может быть назначен, | ||
- | |||
- | |||
- | ===== 2. Как определить, | ||
- | Посмотреть, | ||
- | < | ||
- | fdpi_ctrl list status --service 11 --ip 192.168.4.20 | ||
- | </ | ||
- | В NAT 1:1 белый адрес выделяется сразу при назначении услуги, | ||
- | |||
- | Также выделенный абоненту белый адрес рапортуется в Radius Accounting в целях его логгирования в биллинге. | ||
- | |||
- | Заранее предсказать какой-именно адрес будет выдан абоненту из пула невозможно: | ||
- | |||
- | |||
- | ===== 3. После подключения NAT стали отваливаться неактивные SSH сессии ===== | ||
- | Действительно, | ||
- | большое количество мертвых сессий в пуле уменьшает производительность 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. Сколько " | ||
- | <note important> | ||
- | |||
- | Подробнее: | ||
- | |||
- | По умолчанию на 1 белом IP для CG-NAT доступны 64512 портов (65535-1023, | ||
- | |||
- | В среднем физическое лицо создает 50-60 одновременно работающих сессий, | ||
- | |||
- | Так же необходимо учесть особенность механизма освобождения портов в NAT Pool: | ||
- | - При подключении 11 услуги абоненту [[dpi: | ||
- | - Когда абонент начинает устанавливать сессии, | ||
- | - В случае если на конкретном Public IP находится много абонентов, | ||
- | |||
- | |||
- | Рекомендации при создании NAT Pool и эксплуатации: | ||
- | - Абонентов, | ||
- | - Создавайте разряженные пулы и разделяйте клиентов в разные NAT Pool по типу: Физические лица и Юридические лица. | ||
- | - Осуществляйте мониторинг клиентов, | ||
- | |||
- | |||
- | ===== 5. Как поменять параметры уже существующего и используемого пула? ===== | ||
- | 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? ===== | ||
- | Если у абонента всего один серый адрес и требуется выдать абоненту конкретный белый адрес, то нужно учитывать зависимость между серыми и белыми адресами, | ||
- | |||
- | < | ||
- | |||
- | где 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 ===== | ||
- | 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 ===== | ||
- | Ищем конкретного абонента, | ||
- | В письме с 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: | ||
- | < |