Рейтинг:1

Маршрутизировать весь трафик через узел Wireguard

флаг gh

У меня есть настройка Wireguard VPN, которая в основном выглядит так:

P1 ---- S ---- P ---- ЛВС
Пх -----|
  • S (ip 192.168.60.1) — это сервер WG, работающий на Ubuntu 20.04 с включенным ufw, с общедоступным IP-адресом (с использованием интерфейса wg0).
  • P (ip 192.168.60.2) — это одноранговая рабочая группа, работающая за CGNAT, без общедоступного IP-адреса, подключенная к собственной локальной сети.
  • P1..Px — это другие одноранговые узлы WG (ip-адрес 192.168.60.1x).

Ufw имеет следующую конфигурацию:

К действию от
-- ------ ----
22/tcp РАЗРЕШИТЬ ВСЕГДА
51820/udp РАЗРЕШИТЬ ВСЕГДА

Везде на eth0 РАЗРЕШИТЬ FWD Везде на wg0
Везде на wg0 РАЗРЕШИТЬ FWD Везде на eth0
Везде на wg0 РАЗРЕШИТЬ FWD Везде на wg0

Я хочу добиться, чтобы весь трафик, исходящий от одноранговых узлов P1..Px, направлялся через P.

Я пробовал следующее, но безуспешно:

  • На P1 я установил AllowedIPs для S на 0.0.0.0/0. На S я установил AllowedIPs для P на 0.0.0.0/0. - Эта конфигурация делает S недоступным через eth0 (и по-прежнему ничего не направляет на P).

  • На P1 я установил AllowedIPs для S на 0.0.0.0/0. На S я попытался настроить маршрутизацию на основе политики на основе IP-адреса источника:

     sudo ip правило добавить из 192.168.60.0/24 поиск 200
     sudo ip route добавить по умолчанию через 192.168.60.2 dev wg0 table 200
    

    Это предотвращает подключение P1 к чему-либо, кроме 192.168.60.0/24.

Рейтинг:2
флаг in

Вероятно, вам следует начать с использования Таблица=выкл. в wg-quick conf как на S, так и на P. Значение Разрешенные IP-адреса = тогда не вызовет изменения маршрутов/политик правил маршрутизации на них.

РЕДАКТИРОВАТЬ: На самом деле все должно быть хорошо, чтобы уйти Таблица= нетронутый на P, если вам не нужно Разрешенные IP-адреса = S на нем быть 0.0.0.0/0 вместо 192.168.60.0/24 по некоторым причинам, т.е. нужно, чтобы трафик исходил из самого себя для маршрутизации S. Вам не нужно возиться с маршрутами и правилами маршрутизации на P самостоятельно, поскольку даже префикс в Адрес=192.168.60.2/24 должен настроить необходимый маршрут. Следующий абзац, вероятно, не относится к тому, что вам нужно, хотя он может дать вам некоторые дополнительные сведения о том, как все работает.

И вам, вероятно, следует использовать дополнительную IP-подсеть для С и П, например 192.168.59.0/30. Это избавит вас от хлопот, связанных с необходимостью дополнительного правила IP. Не забудьте добавить маршрут подсети для 192.168.60.0/24 на P хотя, как и с Таблица=выкл., ядро ​​будет добавлять только префиксные маршруты для префикса(ов) в Адрес= поле(я). Используйте с пользой PostUp=PreDown=) кстати.

Я не предполагаю, что вы хотите направлять трафик, который исходит от самого S, к P, поэтому вместо этого вы, вероятно, захотите использовать следующее правило ip:

# ip rule add iif wg0 from 192.168.60.0/24 lookup 200

Если вам действительно нужно направить маршрут, например. трафика, отличного от ответов сервера ssh и wireguard на P, вы можете дополнительно иметь:

# ip правило добавить iif lo lookup 200
# ip rule add iif lo ipproto tcp sport 22 lookup main
# ip rule add iif lo ipproto udp sport 51820 lookup main

Примечание: вы не можете просто сопоставить с с 192.168.60.1 добавлено в первое правило, а два других опущены, потому что для неотвечающего трафика адрес источника часто (если не всегда) выбирается на основе выбранного маршрута — на данный момент он еще не установлен.

Обратите внимание, что порядок команды обычно определяет приоритет, поэтому убедитесь, что вы добавили правило «надмножества» перед правилами «подмножества», иначе последние будут переопределены первыми.

Также лучше держать таблица 200 пустым до тех пор, пока не будут установлены все желаемые правила, в противном случае удаленный доступ к хосту может быть отключен.

Наконец, nexthop не имеет смысла при маршруте к туннелю L3:

# ip route add default dev wg0 table 200

P.S. Убедитесь, что вы не только разрешили переадресацию IP-адресов в брандмауэре, но и включили ее с помощью sysctl.

Andrija Kovačević avatar
флаг gh
Спасибо за подсказки - мне удалось заставить его работать со следующей конфигурацией (все сделано на S): - добавить Table = off в wg0.conf - установить AllowedIPs = 0.0.0.0/0, для P (не уверен, что это действительно нужно) - добавить в PostUp следующее: ip rule add iif wg0 from 192.168.60.0/24 lookup 200; ip route добавить по умолчанию через 192.168.60.2 dev wg0 table 200; - добавить в PostDown следующее: ip rule delete iif wg0 from 192.168.60.0/24 lookup 200; ip route delete default via 192.168.60.2 dev wg0 table 200;
Tom Yan avatar
флаг in
Я внес некоторые изменения в ответ. Посмотрите, стало ли это яснее для вас.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.