Рассмотрим пример настройки VPN-сервера на WireGuard на оборудование MikroTik.
Содержание
Для чего это решение?
Настроим безопасное подключение к корпоративным ресурсам. Это требуется для доступа к терминальному серверу, общему диску или рабочей станции в офисе.
Подключение не предназначено для обхода блокировок или доступа к запрещенным ресурсам.
Инструкция составлена для новичков, подробно и без лишних настроек.
Условия
У нас есть:
- Белый статический внешний адрес;
- MikroTik с ROS7+;
- Установленный WireGuard-клиент на компьютере. Это нужно для обмена ключами с сервером и создании конфигурации;
- Локальная сеть с адресом 192.168.51.0/24;
Процесс настройки WireGuard на MikroTik
Создание интерфейса
Переходим на вкладку WireGuard, нажимаем на «+«.
- Name — это название нашего интерфейса. Оно может быть любым;
- Listen Port — это порт на котором будет работать WireGuard. Его тоже можно назначить любым.
- Поля Private Key и Public Key — не трогаем, они сгенерируются автоматически.
Это произойдет после нажатия на кнопку Apply.
Назначение адреса интерфейсу WG
Назначим IP-адрес созданному интерфейсу. Подсеть выбираем произвольно, избегая пересечения с другими. Подходящие варианты для VPN: 10.0.0.0/24, 172.16.0.0/12. В примере используем 10.15.0.0/24. Действия:
-
- Переходим на вкладку IP;
- Переходим в Addresses;
- Нажимаем на «+«;
- Вводим необходимую подсеть в Address;
- Выбираем наш интерфейс в WireGuard;
- При указании маски в поле Address (/24) — поле Network заполниться автоматически;
Добавить интерфейс в список LAN
Это необходимо сделать, если Вы используете стандартные правила FireWall. Это действие позволяет избежать проблем с доступом к локальной сети из-за этого правила.
- Переходим в раздел Interfaces;
- Вкладка Inteface List;
- Нажимаем на синий «+»;
Выбираем список LAN и наш интерфейс WireGuard, и принимаем.
Открыть порт для внешних подключений к WG
Чтобы VPN клиенты могли подключиться — необходимо открыть порт в FireWall.
В этом примере, мы указали порт на первом шаге «Создание интерфейса Wireguard» в поле Listen Port. В этом примере это порт 13231.
WireGuard работает исключительно по UDP, поэтому правило мы сделаем одно, на открытие 13231 порта по UDP в интерфейс провайдера (наш аплинк). Для этого:
- Переходим на вкладку IP;
- Открываем FireWall;
- Нажимаем на «+«;
- Выбираем Chain — input, так как у нас входящий запрос;
- Протокол указываем UDP, как писал выше WireGuard работает по UDP;
- Указываем наш порт подключение, который мы задали на шаге «Создание интерфейса» в поле Listen Port;
- Указываем интерфейс на котором работает интернет;
На вкладке Action разрешаем входящее подключение.
И по правилам хорошего тона: ставим комментарий к нашему правилу. Для этого нажимаем на Comment и подпишем правило.
Новое правило поднимаем в FireWall над запрещающими.
Наш интерфейс готов для подключения. Теперь необходимо создать клиентов и обменяться ключами.
Создание Peer / Обмен ключами
Для начала надо открыть WireGuard клиент (на Windows, MacOS, Linux они одинаковые).
Дальше нажимаем на «Создать пустую конфигурацию», и можно вставить вот такой шаблон:
1 2 3 4 5 6 7 8 |
[Interface] PrivateKey = Address = 10.0.0.2/24 [Peer] PublicKey = AllowedIPs = Endpoint = |
Обратить внимание на строчку Address, это адрес VPN-клиента в нашей сети. Его надо менять для каждого клиента. Это основной недостаток использования WireGuard: назначение IP адресов и маршрутов происходит в ручном режиме.
PrivateKey тоже оставляем тот который сгенерировало приложение.
Далее:
- Переходим в раздел в WireGuard;
- переходим на вкладку Peers;
- Нажимаем «+«;
После этого:
- Указываем созданный интерфейс WireGuard;
- Public Key берем из WireGuard клиента (см картинку ниже);
- В Allowed Address указываем, куда может подключаться клиент, в данном примере никаких запретов нет, поэтому укажем, что можно, куда угодно;
Теперь нам необходимо внести публичный ключ сервера в конфигурацию. Его мы берем из интерфейса WireGuard и вставляем в конфигурацию. Как на картинке ниже.
Всегда рекомендую указывать комментарий к учетной записи пира. Чтобы было проще идентифицировать в будущем.
На мой взгляд, самый удобный формат это: логин и ip внутри сети WireGuard, например вот так: Заполняем оставшиеся поля:
- Addreses — это внутренний IP адрес клиента в нашей WireGuard сети;
- AllowedIPs — список ip адресов, куда прокладывается туннель;
- Endoint — куда подключаться WireGuard клиенту. Формируется так: IP адрес:порт;
Проверка
Чтобы проверить работу нашего WireGuard VPN: можно подключиться из вне нашей сети и попробовать отправить ping на Mikrotik по его ip адресу. В данном примере адрес Mikrotik — 192.168.51.1
Но пинги до роутера это не то ради чего мы это всё делали. Лучше всего проверить путем попытки входа на сервер / NAS / или веб-страничку какого нибудь принтера.
Неудобства WireGuard на Mikrotik
Основным недостатком такого VPN-сервера является ручное указание маршрутов на клиентах. Ручное указание IP адресов для клиентов. Фактически, Вы являетесь DHCP-сервером. 😂
Это не является проблемой, если у Вас задача связать несколько точек. Но, если Вы планируете использоваться VPN сервер Wireaurd на Mikrotik для доступа пользователей в сеть — тут и происходит проблема из-за ручных настроек.
Пример из практики: мы приняли на обслуживание клиента у которого использовался такой тип VPN сервера. Ниже картинка, что я увидел, когда открыл Peers
33 Peers. Нельзя было разом удалить всех и перенастроить. Пришлось по-методичному, руками, перебирать каждую строчку и выяснять, кто за ней прятался.
Повезло, что всего 33, а не 333.
Если мой материал был полезен, то можете угостить меня кофе ☕️