Wireguard на 2ом WAN интерфейсе

Базовая функциональность RouterOS
sciensys
Сообщения: 20
Зарегистрирован: 27 дек 2020, 18:48

Wireguard на 2ом WAN интерфейсе

Сообщение sciensys »

Кто нибудь реализовал ?

устал уже читать и пробовать...
на 1ом WAN всё ОК.

если подкинуть 2ой WAN и маркернуть (статикой тоже пробовал)
(input имеется)

chain=prerouting action=mark-connection new-connection-mark=connection_wan2 passthrough=yes connection-mark=no-mark in-interface=wan2 log=no log-prefix=""
chain=output action=mark-routing new-routing-mark=route_wan2 passthrough=no connection-mark=connection_wan2 log=no log-prefix=""

имеются абсолютно одинаковые правила для порта WG и 80 на роутер через WAN2
и если пройти по WAN2 по 80му на роутер - то всё работает, WG - нет (как с маркировкой пакетов, так и статикой)

[TUN] [HM562] Handshake for peer 1 (х:х) did not complete after 5 seconds, retrying (try 2)

Пакеты на порт WG приходят, но не уходят.

Такое чувство, что на WG интерфейс через WAN2 приходит IP шлюза, а не пира, однако, при такой же конфигурации, но на WAN1 - всё работает.

так вот вопрос, есть кто реализовал WG на 2ом WAN ?
Аватара пользователя
Chupaka
Сообщения: 4050
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Wireguard на 2ом WAN интерфейсе

Сообщение Chupaka »

Поскольку WG работает через UDP на выделенном порту, я у себя для бэкапного LTE-канала на роутере сделал одно простое правило:

Код: Выделить всё

/ip firewall mangle
add action=mark-routing chain=output new-routing-mark=lte-Backup protocol=udp src-port=12321
И вроде как этого оказалось достаточно, канал поднимается и долго держится :)
sciensys
Сообщения: 20
Зарегистрирован: 27 дек 2020, 18:48

Re: Wireguard на 2ом WAN интерфейсе

Сообщение sciensys »

не верю.

т.к. у микротик есть баг в wireguard - все исходящие идут через шлюз по умолчанию.
т.е. при таком правиле в mangle всё равно не достичь handshake.
ну и тем более, это я пробовал сразу, в т.ч. и со статической маршрутизацией
и собственно, исходя из указанного бага, тут нужна идея, прямо указанная в баге.

и решение было найдено. Помогли из Канады:

Код: Выделить всё

/ip firewall mangle
add action=mark-connection chain=prerouting comment="WAN LTE" \
    connection-mark=no-mark in-interface=isp-wan2 new-connection-mark=\
    connection_lte passthrough=yes
add action=mark-routing chain=output connection-mark=connection_lte \
    new-routing-mark=route_wan2 passthrough=no

/ip firewall nat
chain=dstnat dst-address-type=local in-interface=WAN2 protocol=udp dst-port=wg-port action=dst-nat to-addresses=ip.of.wan.1
Аватара пользователя
Chupaka
Сообщения: 4050
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Wireguard на 2ом WAN интерфейсе

Сообщение Chupaka »

А можно ссылку на баг? Я вот обновился с 7.12.1 до 7.15.3 - и сначала подумал, что всё перестало работать, а потом оказалось, что просто модем завис, после его перезагрузки второй Wireguard-канал опять заработал:

Код: Выделить всё

[Remote] > int/wireguard/peers/print detail  
Flags: X - disabled; D - dynamic 
 0    interface=wg-Headquarter name="peer1" public-key="+kiFcoybKc6oA4d7114Nji5F7681WBY="
      private-key="" endpoint-address=Headquarter.by endpoint-port=55006
      current-endpoint-address=37.45.x.y current-endpoint-port=55006 allowed-address=0.0.0.0/0
      preshared-key="" client-endpoint="" rx=29.8MiB tx=128.3MiB last-handshake=49s 

 1    interface=wg-Headquarter-lte-Backup name="peer3" public-key="cYcjk1jWrwitlywUSacECzQNVqgr90A="
      private-key="" endpoint-address=Headquarter.by endpoint-port=55009
      current-endpoint-address=37.45.x.y current-endpoint-port=55009 allowed-address=0.0.0.0/0 
      preshared-key="" client-endpoint="" rx=245.7KiB tx=419.3KiB last-handshake=2s 

Код: Выделить всё

[Headquarter] > int/wireguard/peers/print detail where interface~"Remote"
Flags: X - disabled; D - dynamic 
 0    interface=wg-Remote name="Remote" public-key="PzOdbgPPLK2aLKGs8OTheTK4pscsAQw="
      private-key="" endpoint-address=Remote.by endpoint-port=55003
      current-endpoint-address=178.125.w.z current-endpoint-port=55003 allowed-address=0.0.0.0/0
      preshared-key="" client-endpoint="" is-responder=yes rx=240.4MiB tx=97.2MiB last-handshake=34s

 1    interface=wg-Remote-lte-Backup name="Remote-lte-Backup" public-key="bIXAxRSFG34IVYnEHGTnN4TU4LHFRAE="
      private-key="" endpoint-address="" endpoint-port=0 current-endpoint-address=46.216.i.j
      current-endpoint-port=46996 allowed-address=0.0.0.0/0 preshared-key="" client-endpoint=""
      rx=381.8KiB tx=350.1KiB last-handshake=18s 
Адрес LTE на стороне сервера корректно отображается.

Я вот пытаюсь проникнуться решением из вашего сообщения - и не могу понять, как это правило NAT может чем-то помочь...