Вопрос или проблема
Эта проблема поставила меня в тупик.
У меня настроен 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
, без определенной предварительной конфигурации. Это объясняет, почему "автоматическая" конфигурация работает, а "ручная" — нет.
Рекомендации по решению
-
Настройка Wireguard:
Убедитесь, что Wireguard настроен для приема пакетов, предназначенных0.0.0.0/0
. Это предполагает, что VPN должен уметь обрабатывать весь трафик по умолчанию через соответствующие правила фаервола и IP-таблицы. -
Авто и ручная маршрутизация:
- При добавлении маршрута через интерфейс
wg0
, убедитесь, что настройки фаервола обновляются, чтобы разрешить прохождение соответствующего трафика. - Не забывайте, что после изменения маршрута необходимо перезапускать фаервол для применения новых правил
iptables
.
- При добавлении маршрута через интерфейс
-
Одновременная работа с mwan3:
Чтобы избежать рекурсивных проблем, изучите возможность отключения триггеров mwan3 для временного выполнения ручной маршрутизации и лишь затем их повторного включения.
Избегая клише и стандартных фраз, фокусируйтесь на индивидуальных настройках вашей сети и особенностях конфигурации Wireguard, которые могут влиять на маршрутизацию.
Заключение
Эти шаги помогут вам добиться успешной маршрутизации через VPN на устройствах OpenWRT, оптимизируя работу вашей сети и обеспечивая ее безопасность. Не забудьте тщательно протестировать каждое изменение в контролируемой среде для исключения недоразумений и сбоев в работе сети.