Stupid House

Настройка WireGuard на MikroTik


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

В MikroTik настройка WireGuard появилась в седьмой версии RouterOS.

 

 

Настройка WireGuard сервера на MikroTik

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

Создаем новый интерфейс, переходим на вкладку WireGuard -> WireGuard -> +. В открывшемся окне в поле Name вводим понятное наименование интерфейса (например, для какого устройства создается данное подключение), по необходимости меняем порт подключения в поле Listen Port, нажимаем кнопку OK, поля Private Key и Public Key заполнятся автоматически.

wireguard server mikrotik create interface

Присвоим IP адрес созданному интерфейсу WireGuard, переходим в раздел IP -> Addresses -> +. В открывшемся окне в поле Address указываем IP адрес созданного интерфейса, в поле Inteface выбираем созданный WireGuard интерфейс. Т.к. подключение у нас будет точка - точка, то целесообразно для каждого подключения нарезать маски /30. Использовать маску /24 нет смысла, поскольку к одному WireGuard интерфейсу не получится создать и подключить несколько пиров, получается, что для каждого подключаемого устройства придется создавать отдельный интерфейс с пиром (по крайней мере, у меня при создании второго пира на интерфейсе у меня падало предыдущее подключение, лечилось только отключением второго пира и перезапуском подключения).

wireguard server mikrotik interface ip address

На фаерволе разрешаем входящие подключения по указанному в поле Listen Port порту. IP -> Firewall -> Filter Rules -> +, в создаваемом новом правиле на вкладке General указываем:

  • Chain - Input
  • Protocol - 17 (udp)
  • Dst. Port - порт, указанный в настройках WireGuard интерфейса, по умолчанию 13231
  • In. Interface - интерфейс, принимающий соединение, обычно это интерфейс смотрящий в сеть интернет (WAN).

 

wireguard server mikrotik add firewall rule input general

На вкладке Action в поле Action выбираем accept.

wireguard server mikrotik add firewall rule input action

Созданное правило размещаем выше запрещающих.

 

Любителям командной строки:

/interface/wireguard/add name=wireguard-map listen-port=13231 mtu=1420
/ip/address/add address=10.9.36.1/30 interface=wireguard-map
/ip/firewall/filter/add action=accept chain=input protocol=udp dst-port=13231 in-interface=ether1

 

Настройка WireGuard подключения MikroTik - MikroTik

Аналогично настройке сервера создаем новый интерфейс на клиенте, переходим на вкладку WireGuard -> WireGuard -> +. В открывшемся окне в поле Name вводим понятное наименование интерфейса, нажимаем кнопку OK, поля Private Key и Public Key заполнятся автоматически.

wireguard client mikrotik create interface

Как и для сервера присваиваем созданному интерфейсу на клиенте IP адрес, IP -> Addresses -> +.

wireguard client mikrotik interface ip address

После создания интерфейсов, на сервере и клиенте необходимо создать пиры для подключения, в которых будет указано:

  • Для сервера: публичный ключ (Public Key) клиента
  • Для клиента: публичный ключ сервера и адрес сервера

На сервере создаем пир для подключения клиента, переходим WireGuard -> Peers -> +. Заполняем:

  • Interface - созданный ранее интерфейс WireGuard на сервере
  • Public Key - публичный ключ сгенерированный ранее на клиенте
  • Allowed Address - список разрешенных IP адресов, которые будут ходить в туннеле. Можно ограничиться только определенным набором адресов либо для прохождения всего трафика указать 0.0.0.0/0 для IPv4 и ::/0 для IPv6
  • Persistant Keepalive - время, через которое будет отправляться пустой пакет для поддержания работы туннеля

wireguard server mikrotik create peer

По аналогии на клиенте создаем пир для подключения к серверу, переходим WireGuard -> Peers -> +. Заполняем:

  • Interface - созданный ранее интерфейс WireGuard на клиенте
  • Public Key - публичный ключ сгенерированный ранее на сервере
  • Endpoint - адрес сервера
  • Endpoint Port - порт, котором сервер WireGuard принимает подключения
  • Allowed Address - список разрешенных IP адресов, которые будут ходить в туннеле. Можно ограничиться только определенным набором адресов либо для прохождения всего трафика указать 0.0.0.0/0 для IPv4 и ::/0 для IPv6
  • Persistant Keepalive - время, через которое будет отправляться пустой пакет для поддержания работы туннеля

wireguard client mikrotik create peer

После сохранения настроек, если всё настроено верно, при успешном подключении на вкладке Peers в поле Last Handshake начнется отсчет времени.

 

Настройка WireGuard подключения MikroTik - Android

На сервере создаем новый интерфейс как описано в разделе «Настройка WireGuard сервера на MikroTik». Если это не первый WireGuard интерфейс на MikroTik, то в настройках надо будет указать другой порт для приема подключений, т.к. порты, используемые созданными интерфейсами уже будут заняты. Так же для нового порта не забываем открыть фаервол.

wireguard server mikrotik create interface addon

На Android устанавливаем программу WireGuard, запускаем и нажимаем синюю кнопку + расположенную внизу. Выбираем пункт Создать с нуля.

Сначала создаем новый интерфейс, вводим понятное «Наименование» подключения, в поле «Приватный ключ» нажимаем кнопку для генерации Private Key и Public Key, в поле «Адреса» вводим IP адрес интерфейса туннеля.

wireguard client android create interface

Создаем новый пир нажав ниже на надпись «Добавить пир». В параметрах добавляемого пира указываем:

  • Публичный ключ - публичный ключ сгенерированный ранее на сервере
  • Постоянное соединение - время, через которое будет отправляться пустой пакет для поддержания работы туннеля в секундах
  • Конечная точка - адрес и порт сервера WireGuard, записывается как ADDR:PORT
  • Разрешенные адреса - список разрешенных IP адресов, которые будут ходить в туннеле. Можно ограничиться только определенным набором адресов либо для прохождения всего трафика указать 0.0.0.0/0 для IPv4 и ::/0 для IPv6

wireguard client android create peer

Сохраняем настройки.

На сервере так же создаем пир в разделе WireGuard -> Peers -> +. Заполняем:

  • Interface - созданный ранее интерфейс WireGuard на сервере
  • Public Key - публичный ключ, сгенерированный ранее на клиенте Android
  • Allowed Address - список разрешенных IP адресов, которые будут ходить в туннеле. Можно ограничиться только определенным набором адресов либо для прохождения всего трафика указать 0.0.0.0/0 для IPv4 и ::/0 для IPv6
  • Persistant Keepalive - время, через которое будет отправляться пустой пакет для поддержания работы туннеля

wireguard server mikrotik create peer for android

В приложение на Android активируем WireGuard подключение переключателем.

После сохранения настроек, если всё настроено верно, при успешном подключении на вкладке Peers в поле Last Handshake на сервере начнется отсчет времени. В приложении при успешном подключении в свойствах подключения будет отсчет времени в пункте «Последнее рукопожатие».

 

Автор: muxa, 29.08.2023
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии