Как можно диагностировать проблему с Policy-Based Routing (PBR) в OpenWRT?

У меня есть два роутера разных моделей, которые работают на OpenWRT 23 и настроены с одинаковой конфигурацией, но находятся в разных городах. Один из роутеров функционирует нормально, в то время как другой испытывает трудности. <br/> <br/> Оба устройства настроены с работающим VPN, и с помощью PBR и luci-app-pbr маршрутизируется трафик к доменам youtube.com, googlevideo.com и другим. На "неработающем" роутере сервис перестает функционировать, хотя VPN остается активным. PBR настроен для обработки трафика в цепочке prerouting. У меня есть доступ только к проблемному роутеру удаленно. <br/> <br/> Если я переключу PBR на цепочку output и выполню команду traceroute googlevideo.com из консоли этого роутера, видно, что пакеты успешно проходят через VPN. <br/> <br/> Можете подсказать, какие шаги можно предпринять для удаленной диагностики этой проблемы? Во время проверки цепочки prerouting команда nft list sets показывает, что списки заполнены.
  • 8 октября 2024 г. 9:55
Ответы на вопрос 1
Диагностика проблем с Policy-Based Routing (PBR) в OpenWRT может быть довольно сложной, особенно когда у вас есть только удаленный доступ. Ниже приведены шаги, которые можно предпринять для диагностики проблемы:

1. **Проверка конфигурации PBR**:
   - Убедитесь, что конфигурация PBR на проблемном роутере совпадает с работающим. Особенно проверьте настройки правил на уровне `mangle` и порядок их применения.
   - Команда для проверки правил iptables: 
     ```bash
     iptables -t mangle -L -v
     ```

2. **Проверка таблицы маршрутов**:
   - Убедитесь, что в таблице маршрутов нет конфликтующих маршрутов, которые могут перезаписывать PBR:
     ```bash
     ip route show table all
     ```

3. **Логирование**:
   - Включите логирование для PBR, чтобы отслеживать, какие пакеты проходят через какие правила. Вы можете использовать `tcpdump` для этого:
     ```bash
     tcpdump -i <интерфейс> -n host youtube.com
     ```
   - Если `tcpdump` не установлен, попробуйте установить его через `opkg` (например, `opkg update && opkg install tcpdump`).

4. **Проверка VPN**:
   - Убедитесь, что VPN-туннель работает корректно, и весь трафик действительно перенаправляется через VPN. Используйте команду `curl` для запроса маршрутов:
     ```bash
     curl -4 icanhazip.com
     ```
   - Это покажет, идет ли трафик через VPN с IP-адреса VPN.

5. **Включение и проверка сетевых интерфейсов**:
   - Убедитесь, что все сетевые интерфейсы настроены и работают корректно. Можно использовать:
     ```bash
     ifconfig
     ```
   - Проверьте, активны ли нужные интерфейсы и DHCP-клиент работает как положено.

6. **Проверка MTU и MSS**:
   - Иногда проблемы с фрагментацией пакетов могут влиять на работу. Убедитесь, что MTU настроено корректно для всех интерфейсов.

7. **Тестирование с помощью traceroute и ping**:
   - Как вы уже заметили, `traceroute` дает вам полезную информацию. Попробуйте выполнить `ping` на те же домены, чтобы проверить задержку и потерю пакетов.

8. **Запросы к PBR**:
   - Убедитесь, что запросы к `youtube.com` и другим доменам обрабатываются в `prerouting`:
     ```bash
     iptables -t mangle -L PREROUTING -v
     ```

9. **Проверка версии и обновлений**:
   - Убедитесь, что программное обеспечение на роутере обновлено до последней версии OpenWRT, которая может содержать исправления для PBR:
     ```bash
     opkg update
     opkg upgrade
     ```

10. **Изменения в конфигурации**:
    - Попробуйте временно изменить конфигурацию с `prerouting` на `output`, как вы уже делали. Это может помочь понять, где именно проблема.

11. **Проверка параметров DNS**:
    - Убедитесь, что DNS-запросы обрабатываются корректно, и используйте проверенные DNS-сервисы, если требуется.

Каждый из этих шагов поможет вам локализовать проблему. Удачи!
Похожие вопросы