Инструменты диагностики pfSense - сетевой анализ
pfSense предоставляет набор инструментов диагностики сети, доступных через меню Diagnostics веб-интерфейса. Эти утилиты позволяют проверять связность, анализировать маршруты, захватывать пакеты и исследовать внутреннее состояние файрвола без необходимости подключения по SSH. Каждый инструмент ориентирован на определённый аспект диагностики - от базовой проверки доступности до анализа таблицы состояний pf в реальном времени.
Систематическое использование диагностических инструментов в определённой последовательности существенно ускоряет выявление и устранение сетевых проблем.
Обзор меню Diagnostics
| Инструмент | Меню | Назначение |
|---|---|---|
| Ping | Diagnostics > Ping | Проверка доступности хоста |
| Traceroute | Diagnostics > Traceroute | Анализ маршрута до хоста |
| DNS Lookup | Diagnostics > DNS Lookup | Разрешение DNS-имён |
| ARP Table | Diagnostics > ARP Table | Таблица соответствий MAC-IP |
| NDP Table | Diagnostics > NDP Table | Таблица соседей IPv6 |
| States | Diagnostics > States | Таблица состояний файрвола |
| pfInfo | Diagnostics > pfInfo | Статистика pf |
| pfTop | Diagnostics > pfTop | Активные соединения в реальном времени |
| Packet Capture | Diagnostics > Packet Capture | Захват пакетов |
| Command Prompt | Diagnostics > Command Prompt | Выполнение команд и PHP |
| System Activity | Diagnostics > System Activity | Процессы и нагрузка |
| S.M.A.R.T. Status | Diagnostics > S.M.A.R.T. Status | Здоровье дисков |
Ping
Утилита ping доступна через Diagnostics > Ping и позволяет проверить доступность удалённого хоста с учётом маршрутизации и правил файрвола pfSense.
Параметры
- Hostname - IP-адрес или доменное имя целевого хоста
- IP Protocol - IPv4 или IPv6
- Source Address - интерфейс, с которого отправляются ICMP-запросы. Выбор источника критически важен при диагностике Multi-WAN и VPN: запрос с WAN-интерфейса и с LAN-интерфейса может следовать разными маршрутами
- Maximum number of pings - количество запросов (1, 3, 5, 10)
- Seconds between pings - интервал между запросами
Интерпретация результатов
Результат содержит время отклика (RTT) для каждого запроса и итоговую статистику: отправлено, получено, потеряно, минимальное/среднее/максимальное RTT.
Типичные сценарии:
| Результат | Возможная причина |
|---|---|
| 100% packet loss | Хост недоступен, маршрут отсутствует, блокировка ICMP на промежуточном узле |
| Высокий RTT (>100 мс в LAN) | Перегрузка канала, проблема с оборудованием |
| Нестабильный RTT | Потери на промежуточном канале, проблема с QoS |
| Request timeout с периодическими ответами | Ограничение скорости ICMP на целевом хосте |
Внимание:
При выборе Source Address следует учитывать, что ping с интерфейса WAN использует публичный IP, а ping с LAN - внутренний адрес. При диагностике VPN-туннелей необходимо выбирать интерфейс, IP-адрес которого входит в адресное пространство туннеля.
Traceroute
Утилита traceroute доступна через Diagnostics > Traceroute и отображает маршрут пакетов до целевого хоста с указанием каждого промежуточного узла.
Параметры
- Hostname - IP-адрес или доменное имя
- IP Protocol - IPv4 или IPv6
- Source Address - интерфейс-источник
- Maximum number of hops - максимальная глубина трассировки (по умолчанию 18)
- Reverse Resolve IP - обратное разрешение DNS для IP-адресов промежуточных узлов
- Use ICMP - использование ICMP вместо UDP (некоторые хосты блокируют UDP-пробы)
Интерпретация результатов
Каждая строка вывода содержит номер хопа, IP-адрес (или имя хоста) и три значения RTT. Символ * означает отсутствие ответа от данного узла.
Типичные паттерны:
- Все хопы отображаются - маршрут полностью прослеживается, проблема на целевом хосте
- Звёздочки начиная с определённого хопа - трафик блокируется на данном узле или далее
- Резкий рост RTT на конкретном хопе - перегрузка канала между данным и предыдущим узлом
- Непоследовательный маршрут - асимметричная маршрутизация или балансировка нагрузки
DNS Lookup
Утилита доступна через Diagnostics > DNS Lookup и выполняет разрешение DNS-имён с использованием DNS-серверов, настроенных в pfSense.
Параметры
- Hostname - доменное имя для разрешения
Результаты
Вывод включает:
- Полученные IP-адреса (A/AAAA записи)
- DNS-сервер, ответивший на запрос
- Время разрешения
- Результаты обратного DNS-запроса (PTR) для полученных IP-адресов
Этот инструмент полезен для проверки корректности работы DNS Resolver (Unbound) или DNS Forwarder (dnsmasq), настроенных в pfSense. При расхождении результатов с ожидаемыми следует проверить настройки DNS в System > General Setup и конфигурацию DNS Resolver в Services > DNS Resolver.
ARP Table
Таблица ARP доступна через Diagnostics > ARP Table и отображает соответствия между IP-адресами и MAC-адресами устройств в локальной сети.
Отображаемые поля
| Поле | Описание |
|---|---|
| Interface | Интерфейс, через который обнаружено устройство |
| IP Address | IPv4-адрес устройства |
| MAC Address | MAC-адрес устройства |
| Hostname | Имя хоста (если разрешено через DNS/DHCP) |
| Status | Состояние записи: permanent, reachable, stale, expired |
| Link Type | Тип подключения: ethernet |
Применение
- Обнаружение IP-конфликтов - два разных MAC-адреса для одного IP указывают на конфликт
- Идентификация устройств - определение MAC-адреса устройства по его IP (или наоборот) для привязки к конкретному оборудованию
- Обнаружение ARP-spoofing - аномальные записи могут свидетельствовать об атаке типа MITM
- Проверка связности L2 - отсутствие записи для хоста в той же подсети указывает на проблему канального уровня
NDP Table
Таблица NDP (Neighbor Discovery Protocol) доступна через Diagnostics > NDP Table и выполняет для IPv6 ту же функцию, что ARP для IPv4 - отображает соответствия между IPv6-адресами и MAC-адресами соседних устройств.
Отображаемые поля аналогичны ARP Table: интерфейс, IPv6-адрес, MAC-адрес, имя хоста и состояние.
Таблица состояний (States)
Таблица состояний доступна через Diagnostics > States и отображает все текущие соединения, отслеживаемые файрволом pf.
Отображаемые поля
| Поле | Описание |
|---|---|
| Interface | Интерфейс, на котором создано состояние |
| Protocol | Протокол: TCP, UDP, ICMP и др. |
| Source | Адрес и порт источника |
| Destination | Адрес и порт назначения |
| State | Состояние соединения (для TCP: ESTABLISHED, TIME_WAIT и др.) |
| Packets | Количество переданных пакетов |
| Bytes | Объём переданных данных |
| Age | Время существования записи |
| Expires in | Время до удаления записи |
Фильтрация состояний
Страница предоставляет поле поиска для фильтрации по IP-адресу, порту или протоколу. Это позволяет быстро найти все соединения конкретного хоста или все соединения на определённый порт.
Удаление состояний
Индивидуальные состояния можно удалить кнопкой в строке записи. Массовое удаление состояний выполняется через Diagnostics > States > Reset States. Удаление состояния принудительно прерывает соединение - клиенту потребуется установить новое.
Внимание:
Массовый сброс состояний прерывает все активные соединения через файрвол. Эту операцию следует выполнять только при необходимости - например, после изменения правил NAT, когда старые состояния содержат устаревшие трансляции.
Применение
- Диагностика проблем подключения - проверка наличия или отсутствия ожидаемого состояния
- Выявление аномалий - большое количество состояний от одного IP может указывать на сканирование или атаку
- Мониторинг VPN - проверка прохождения трафика через VPN-туннель
- Анализ NAT - проверка корректности трансляции адресов
pfInfo
Страница pfInfo доступна через Diagnostics > pfInfo и отображает полную статистику подсистемы pf (packet filter).
Отображаемые данные
- State Table - текущее и максимальное количество записей в таблице состояний, процент использования
- Counters - счётчики пакетов: match, bad-offset, fragment, short, normalize, memory, bad-timestamp, congestion, ip-option, proto-cksum, state-mismatch, state-insert, state-limit, src-limit, synproxy
- Source Tracking Table - количество записей отслеживания источников
- Limits - настроенные лимиты: states, src-nodes, frags, tables, table-entries
- Timeouts - таймауты для различных протоколов и состояний
Применение
- Мониторинг заполнения таблицы состояний - приближение к максимуму вызывает отбрасывание новых соединений
- Выявление аномалий - высокие значения bad-offset, fragment или state-mismatch указывают на проблемы или атаки
- Планирование ёмкости - анализ пиковых значений для корректировки лимитов в System > Advanced > Firewall & NAT
pfTop
Утилита pfTop доступна через Diagnostics > pfTop и отображает таблицу состояний файрвола в реальном времени, аналогично утилите top для процессов.
Режимы отображения
pfTop поддерживает несколько режимов сортировки и отображения:
- Default - все состояния, отсортированные по количеству байт
- Long - расширенный формат с дополнительными полями
- Queue - отображение очередей Traffic Shaper
- Rules - статистика по правилам файрвола
- Size - сортировка по объёму переданных данных
- Speed - сортировка по текущей скорости передачи
- State - сортировка по состоянию соединения
- Time - сортировка по времени существования
Применение
- Выявление потребителей полосы - сортировка по Speed или Size показывает хосты с наибольшим трафиком
- Мониторинг в реальном времени - наблюдение за активными соединениями во время диагностики
- Анализ правил - режим Rules показывает, какие правила обрабатывают наибольший трафик
Packet Capture
Инструмент захвата пакетов доступен через Diagnostics > Packet Capture и позволяет записывать сетевой трафик для последующего анализа. Функциональность основана на утилите tcpdump.
Параметры захвата
| Параметр | Описание |
|---|---|
| Interface | Сетевой интерфейс для захвата (WAN, LAN, OPTx, VPN) |
| Promiscuous | Захват всех пакетов на интерфейсе (не только адресованных pfSense) |
| Address Family | IPv4, IPv6 или оба |
| Protocol | Фильтр протокола: Any, ICMP, TCP, UDP, ARP, CARP и др. |
| Host Address | IP-адрес для фильтрации (источник или назначение) |
| Port | Порт для фильтрации (источник или назначение) |
| Packet Length | Максимальная длина захватываемого пакета (snaplen) |
| Count | Количество пакетов для захвата (0 - без ограничения) |
| Level of Detail | Уровень детализации вывода: Normal, Medium, High, Full |
Выполнение захвата
- Настроить параметры фильтрации
- Нажать Start для начала захвата
- Воспроизвести проблемный трафик
- Нажать Stop для остановки захвата
- Просмотреть результаты непосредственно на странице или скачать файл pcap
Скачивание pcap
После остановки захвата файл pcap доступен для скачивания по ссылке на странице. Файл можно открыть в Wireshark для детального анализа с применением фильтров отображения, следованием за потоком TCP и декодированием протоколов прикладного уровня.
Рекомендации по захвату
- Указывать максимально узкие фильтры (хост, порт, протокол) для сокращения объёма данных
- Устанавливать разумное ограничение Count для предотвращения переполнения памяти
- Для диагностики NAT выполнять захват одновременно на WAN и LAN интерфейсах (в двух вкладках браузера) для сравнения адресов до и после трансляции
- Для VPN-диагностики захватывать трафик на физическом интерфейсе (зашифрованный) и на виртуальном интерфейсе туннеля (расшифрованный)
Command Prompt
Страница доступна через Diagnostics > Command Prompt и предоставляет возможность выполнения команд операционной системы и PHP-кода непосредственно из веб-интерфейса.
Выполнение команд Shell
Поле Execute Shell Command позволяет запускать любые команды FreeBSD:
# Проверка загрузки процессора
top -b -n 1 | head -5
# Просмотр таблицы маршрутизации
netstat -rn
# Проверка сетевых интерфейсов
ifconfig -a
# Просмотр правил pf
pfctl -sr
# Проверка состояния служб
sockstat -lВыполнение PHP-команд
Поле Execute PHP Command позволяет запускать PHP-код с доступом к внутреннему API pfSense. Это используется для отладки конфигурации и выполнения операций, недоступных через стандартный интерфейс.
Внимание:
Command Prompt предоставляет полный доступ к системе с правами root. Некорректные команды могут вывести систему из строя. Следует использовать этот инструмент только при необходимости и с чётким пониманием выполняемых действий.
Загрузка и скачивание файлов
Страница также предоставляет функции загрузки файлов на pfSense и скачивания файлов с устройства. Это полезно для передачи конфигурационных файлов, скриптов или результатов диагностики.
System Activity
Страница доступна через Diagnostics > System Activity и отображает вывод утилиты top - список процессов, отсортированных по потреблению ресурсов.
Отображаемые данные
- Load Averages - средняя нагрузка за 1, 5 и 15 минут
- CPU Usage - потребление CPU по категориям (user, system, interrupt, idle)
- Memory Usage - использование оперативной памяти
- Swap Usage - использование пространства подкачки
- Process List - список процессов с PID, пользователем, приоритетом, потреблением CPU и памяти
Применение
- Выявление ресурсоёмких процессов - определение процессов, создающих чрезмерную нагрузку
- Диагностика зависаний - проверка состояния процессов (running, sleeping, zombie)
- Мониторинг памяти - контроль использования swap (активное использование swap указывает на нехватку RAM)
S.M.A.R.T. Status
Страница доступна через Diagnostics > S.M.A.R.T. Status и отображает данные диагностики S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) для жёстких дисков и SSD.
Доступные тесты
- Info - общая информация о диске: модель, серийный номер, прошивка, ёмкость
- Health - общая оценка здоровья диска (PASSED/FAILED)
- SMART Attributes - детальные атрибуты: температура, количество переназначенных секторов, часы работы, количество циклов включения
- Logs - журнал ошибок и результаты предыдущих тестов
- Short/Long Self-Test - запуск самодиагностики диска
Регулярная проверка S.M.A.R.T. позволяет обнаружить деградацию диска до его полного выхода из строя.
Методология диагностики
Систематический подход к диагностике сетевых проблем в pfSense:
Шаг 1: Определение симптомов
Определить характер проблемы: полная потеря связности, снижение производительности, периодические отказы, проблема с конкретным сервисом.
Шаг 2: Проверка базовой связности
- Ping шлюза из pfSense - проверяет работоспособность WAN-подключения
- Ping целевого хоста из pfSense - проверяет маршрутизацию
- DNS Lookup - проверяет разрешение имён
Шаг 3: Анализ маршрута
- Traceroute до целевого хоста - определяет точку обрыва маршрута
- Выбор правильного Source Address для проверки маршрутизации через конкретный интерфейс
Шаг 4: Проверка файрвола
- States - проверить наличие или отсутствие записи состояния для проблемного соединения
- Системные логи (Firewall) - проверить, не блокируется ли трафик правилами файрвола
- pfInfo - проверить, не достигнут ли лимит таблицы состояний
Шаг 5: Углублённый анализ
- Packet Capture - захватить трафик на интерфейсах для анализа на уровне пакетов
- pfTop - проверить активные соединения в реальном времени
- ARP Table - проверить разрешение адресов на канальном уровне
Шаг 6: Анализ ресурсов
- System Activity - проверить нагрузку на CPU и память
- S.M.A.R.T. - проверить здоровье дисков
- Dashboard - оценить общее состояние системы
Связанные разделы
- Графики мониторинга pfSense - визуализация исторических данных производительности для выявления трендов
- Системные логи pfSense - журналы событий для детального анализа инцидентов
- Правила файрвола pfSense - настройка правил фильтрации, влияющих на результаты диагностики