OpenWRT – изменить маршрут по умолчанию вручную для использования через VPN

Вопрос или проблема

Эта проблема поставила меня в тупик.

У меня настроен Wireguard от сайта к сайту: трафик идет как ожидалось. Я объединил локальные сети, и устройства OpenWRT являются интернет-шлюзами.

Я хочу иметь возможность использовать второе устройство OpenWRT в качестве шлюза для первого устройства.

Это работает хорошо, когда я добавляю

list allowed_ips '0.0.0.0/0' 

в скрипт /etc/config/network в раздел

config wireguard_wg0

и затем запускаю

/etc/init.d/firewall restart

Однако: я пытаюсь запустить это через скрипт mwan3 – и если я перезапускаю сеть, это вызывает еще одно событие перезагрузки mwan3, и затем начинается рекурсия, и все заканчивается плохо.

Поэтому – я попробовал сделать это вручную

ip route del default
ip route add default dev wg0 proto static scope link

Я скопировал маршруты из рабочей конфигурации и попытался применить их вручную.

И все, что я получаю – это

#ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: No error information

перезапуск брандмауэра не помогает.

Если я выгрузил таблицы маршрутов и iptables

ip route show table all
iptables-save

Я получаю ту же конфигурацию (это подтверждено с WinMerge)

но есть разница – “автоматическая” конфигурация работает (через config и /etc/init.d/network restart), а “ручная” конфигурация (через ip route …) – нет.

Я в тупике. Есть ли у кого-либо идеи, куда я должен двигаться дальше?

Спасибо

Ладно – это была “обратная” проблема.

Проблема была в том, что Wireguard не принимал пакеты, направленные на 0.0.0.0/0. И я не нашел способа на лету настроить его для добавления маршрутов на определенный интерфейс.

Таким образом, если маршрут 0.0.0.0/0 добавляется по умолчанию в wg0, и затем не используется по умолчанию.

Когда по умолчанию трафик не требуется направлять через интерфейс wg0, маршрут по умолчанию устанавливается на локальное устройство – так это работает. При переключении на резервный интерфейс (через wg), просто снова включите маршрутизацию по умолчанию на интерфейс wg0, который уже принимает “традиционный” трафик.

Вуаля! Это работает.

Ах да, и перезапустите брандмауэр, чтобы пересылаемый трафик тоже шел.

Ответ или решение

Для решения вопроса о ручной замене маршрута по умолчанию для OpenWRT через VPN, важно уделить внимание деталям настройки Wireguard и работы с маршрутизацией. Рассмотрим пошагово, как решить данную проблему, избегая общих ошибок и обеспечивая безупречное функционирование сети.

Исходная задача

У вас настроен Wireguard для связки сайтов, и трафик уже идет как положено. Вы стремитесь использовать второе устройство OpenWRT в качестве шлюза для первого устройства, добавляя следующую строчку в файл /etc/config/network:

list allowed_ips '0.0.0.0/0'

Чтобы изменения вступили в силу, вы выполняете команду:

/etc/init.d/firewall restart

Однако при попытке добиться этого через скрипт mwan3 возникает проблема из-за рекурсивного события mwan3 replug, что приводит к непредвиденной цикличности. Затем вы пробуете установить маршрутизацию вручную:

ip route del default
ip route add default dev wg0 proto static scope link

Это приводит к возникновению ошибок при попытке взаимодействовать с сетью (например, при проверке ping 8.8.8.8).

Разбор проблемы и решение

Важный момент, который упускается в ручной настройке, связан с тем, что Wireguard может не принимать пакеты, направленные на 0.0.0.0/0, без определенной предварительной конфигурации. Это объясняет, почему "автоматическая" конфигурация работает, а "ручная" — нет.

Рекомендации по решению

  1. Настройка Wireguard:
    Убедитесь, что Wireguard настроен для приема пакетов, предназначенных 0.0.0.0/0. Это предполагает, что VPN должен уметь обрабатывать весь трафик по умолчанию через соответствующие правила фаервола и IP-таблицы.

  2. Авто и ручная маршрутизация:

    • При добавлении маршрута через интерфейс wg0, убедитесь, что настройки фаервола обновляются, чтобы разрешить прохождение соответствующего трафика.
    • Не забывайте, что после изменения маршрута необходимо перезапускать фаервол для применения новых правил iptables.
  3. Одновременная работа с mwan3:
    Чтобы избежать рекурсивных проблем, изучите возможность отключения триггеров mwan3 для временного выполнения ручной маршрутизации и лишь затем их повторного включения.

Избегая клише и стандартных фраз, фокусируйтесь на индивидуальных настройках вашей сети и особенностях конфигурации Wireguard, которые могут влиять на маршрутизацию.

Заключение

Эти шаги помогут вам добиться успешной маршрутизации через VPN на устройствах OpenWRT, оптимизируя работу вашей сети и обеспечивая ее безопасность. Не забудьте тщательно протестировать каждое изменение в контролируемой среде для исключения недоразумений и сбоев в работе сети.

Оцените материал
Добавить комментарий

Капча загружается...