Туннельный интерфейс Wireguard и пример настройки VPN соединения локальных сетей двух маршрутизаторов Keenetic

Начиная с версии KeeneticOS 3.3 для актуальных моделей интернет-центров Keenetic была добавлена поддержка Wireguard VPN.

В нашем примере рассмотрим, как установить Wireguard-соединение между двумя интернет-центрами Keenetic, чтобы хосты в их локальных сегментах могли обмениваться между собой данными. Такую схему подключения называют Site-To-Site VPN (например, межофисное соединение для связи с целью расширения сетевой инфраструктуры).

1. Необходимо убедиться, что внешний адрес одного из маршрутизаторов доступен с другого. В случае, если VPN-туннель нужно построить через Интернет, это означает что у одного из роутеров должен быть предоставлен провайдером публичный "белый" IPv4-адрес.

2. Установите компонент системы "Wireguard VPN". Сделать это можно в веб-конфигураторе на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".

wg-comp.png

Установить компонент "Wireguard VPN" нужно на обоих роутерах Keenetic. После этого настройки указанного VPN-туннеля появятся в веб-конфигураторе на странице "Другие подключения".

Рассмотрим графическую схему сети.

Capture01.PNG

  • Маршрутизатору А провайдер выдал публичный IP-адрес. На этот адрес, будут устанавливать подключение Маршрутизатор Б и Маршрутизатор В. Иными словами, интерфейс Wireguard на маршрутизаторе Keenetic А будет выполнять роль сервера, к которому подключаются маршрутизаторы удаленных офисов Keenetic Б и Keenetic В — клиенты.
  • В локальной сети маршрутизатора А два локальных сегмента. К ним нужно обеспечить доступ из локальной сети маршрутизатора Б. В обратном направлении, в локальную сеть Б, доступ также должен быть обеспечен из этих двух сегментов.
  • Локальная сеть за Keenetic В должна иметь в сети А доступ только к сегменту 1.
  • Хосты в удаленных сетях Б и В, также, должны иметь возможность обмениваться трафиком. 

В нашем примере в качестве публичного адреса, выданного провайдером на маршрутизатор А, мы используем частный IP-адрес 192.168.201.14. В общем случае, коммутационная среда, в которую подключены все три роутера (черные линии на иллюстрации) — не обязательно глобальная сеть, это может быть и локальная сеть провайдера.
На маршрутизаторе А (сервере, будем считать что это головной офис тогда как две удаленные сети — филиалы Б и В) подсеть сегмента 1 имеет адресацию 192.168.111.1/24, сегмента 2 — 192.168.112.1/24. Локальная сеть филиала Б — 192.168.15.1/24, локальная сеть филиала В — 192.168.26.1.24.

Маршрутизатор Локальная сеть Доступ к
сети
Адрес интерфейса
туннеля
Keenetic А
(головной офис)
192.168.111.1/24 Б, В 172.16.82.1/24
192.168.112.1/24 Б
Филиал Б 192.168.15.1/24 А1, А2, В 172.16.82.2/24
Филиал В 192.168.26.1/24 А1, Б 172.16.82.3/24

3. Настроим подключения Wireguard VPN на маршрутизаторах А и Б.

3.1. Предварительная настройка на маршрутизаторе Keenetic Б.

В меню "Интернет" — "Другие подключения", в разделе "Wireguard", нужно нажать кнопку "Добавить подключение". Откроется окно настроек, в котором укажите название туннеля — "VPN Б-А". При помощи кнопки "Генерация ключей" нужно создать пару ключей, приватный и публичный, которые будут использоваться для защиты подключения.

В поле "Адрес" указываем IP-адрес в формате IP/bitmask — 172.16.82.2/24 (это внутренний адрес туннеля). Можно использовать другую подсеть, при этом ее следует выбрать из зарезервированных для частного использования диапазонов и таким образом, чтобы избежать наложения с другими настроенными на данных устройствах подсетями. Далее нужно нажать кнопку "Сохранить публичный ключ в буфер обмена" (он потребуется на следующем шаге) и затем кнопку "Сохранить" для применения настроек.

wg01.png

3.2. Настройка на маршрутизаторе Keenetic А (соединение с филиалом Б).

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

Далее укажем адрес. Внутренний, "технический" адрес устройства в туннеле имеет смысл указать из уже избранной при настройке интерфейса на маршрутизаторе Б подсети — на нем мы указали адрес из сети 172.16.82.2/24, на маршрутизаторе А адрес следует указывать из этой же сети. Укажем на конце туннеля Keenetic А адрес 172.16.82.1 с маской сети 255.255.255.0.

TIP: Примечание: Адрес можно указать с маской 32 бита, то есть не адрес сети, а адрес хоста. При этом придется добавлять маршрут, указывающий на сеть интерфейса туннеля или индивидуально к каждому концу туннеля. В случае указания адреса таким образом, чтобы маска охватывала адреса всех участников в туннеле, выстраиваемый автоматически маршрут избавляет от необходимости вводить данные установки вручную.

Порт, указанный в поле "Порт прослушивания", будет использован при дальнейшей настройке маршрутизатора Б. На этот порт Keenetic Б (как и Keenetic В) будет обращаться при установлении туннеля. В нашем примере используем порт номер 16632. Этот порт маршрутизатор А автоматически откроет на всех интерфейсах, чтобы проходили входящие подключения. Дополнительно добавлять разрешающие правила сетевого экрана не требуется.

Capture04.PNG

Далее добавим соединение при помощи кнопки "Добавить пир". Укажем соответствующее имя соединения и публичный ключ туннеля с маршрутизатора Б. Поскольку на предыдущем шаге этот ключ был скопирован в буфер обмена, его можно сейчас вставить в поле "Публичный ключ".

В полях "Разрешенные подсети" нужно указать адреса, трафик с которых должен быть допущен от удаленной стороны, и адреса, трафик к которым может быть отправлен удаленной стороне. Это: технический адрес удаленного конца туннеля — 172.16.82.2/32 (со стороны пира Б трафик в туннеле будет идти с адресом источника 172.16.82.2, и в нашем примере мы указываем здесь явно адрес хоста, принимая во внимание что адресные пространства разрешенных подсетей на соединениях в рамках одного интерфейса не должны перекрываться), и удаленная сеть — локальная сеть маршрутизатора Б - 192.168.15.0/24 (к этой сети требуется обеспечить доступ по туннелю).

В поле "Проверка активности" необходимо указать периодичность попыток зондирования. Это внутренняя, встроенная в протокол проверка доступности удаленной стороны соединения. Обычно, достаточно 8-10-секундного интервала между проверками.

После чего, скопируем публичный ключ маршрутизатора А в буфер обмена и сохраним настройку.

Capture05.PNG

3.3. Теперь, выполняем донастройку подключения на маршрутизаторе Keenetic Б. Требуется добавить соединение, которое будет устанавливаться к маршрутизатору А.

Capture06.PNG

По щелчку на строке добавленного туннеля, открываем его настройки и нажимаем кнопку "Добавить пир".

Capture08.PNG

В настройках пира указываем Имя пира (Keenetic А), Публичный ключ (на предыдущем шаге он был скопирован в буфер обмена), адрес и порт пира в формате IP:port (это публичный адрес маршрутизатора А и порт прослушивания, который был указан при конфигурации туннеля на маршрутизаторе А), то есть, в нашем примере 192.168.201.14:16632

В поле "Разрешенные подсети" нужно внести адреса удаленных концов туннеля, указываем 172.16.82.0/24, трафик с адресов этой сети будет принят из туннеля. Добавим адреса сетей локальных сегментов 1 и 2 маршрутизатора А — 192.168.111.0/24  и 192.168.112.0/24. Исходящий трафик к этим двум сетям будет допущен к передаче по туннелю. Добавим адреса локальной сети филиала В, 192.168.26.0/24 — в эту сеть также требуется доступ. Интервал проверки активности с этой стороны выберем 10 секунд. Сохраняем установки.

Capture09.PNG

3.4. Включим настроенные VPN-интерфейсы на маршрутизаторах А и Б. Если все настроено корректно, в полях по колонке "Пир" должен отображаться зеленый индикатор статуса.

Keenetic А:

wg06.png

Keenetic Б:

wg07.png

4. Настройка сетевого экрана и маршрутизации. Для работы потребуется указать маршруты и разрешить входящий трафик на добавленные VPN-интерфейсы.

4.1. Разрешаем входящий в интерфейс Wireguard трафик. Это нужно, т.к. по умолчанию интерфейсам туннеля устанавливается публичный уровень безопасности и входящий трафик запрещен. Чтобы запросы из удаленных сетей могли проходить по туннелю, добавим на обоих роутерах соответствующую настройку в меню "Межсетевой экран".

wg08.png

wg09.png

4.2. Технические адреса сети, обозначенной на концах туннеля: 172.168.82.1 и 172.16.82.2, уже могут на этом этапе обмениваться данными. Чтобы по туннелю отправлялся трафик в удаленные сети, требуемые по схеме, на устройствах необходимо добавить маршруты (меню "Маршрутизация" - кнопка "Добавить маршрут").

Keenetic А — маршрут к сети 192.168.15.0/24 через туннель: 

wg10.png

Keenetic Б — маршруты к сетям 192.168.111.0/24 и 192.168.112.0/24 и 192.168.26.0/24 через туннель:

wg11.png

wg12.png

Capture12.PNG

Данный последний маршрут пока не может работать, так как соединение третьего филиала не настроено. Завершим настройку.

5. Настройка соединения между роутерами А и В. Процедура аналогична приведенной в пунктах 3 и 4. Публичный ключ одного из пиров (маршрутизатора в офисе А) у нас уже есть. Скопируем его в буфер обмена и настроим интерфейс Wireguard маршрутизатора в офисе В.

5.1. Офис В.

Параметры интерфейса Wireguard.

Capture14.PNG

Настройка сетевого экрана для интерфейса Wireguard.

Capture15.PNG

Capture16.PNG

Правила маршрутизации.

Capture19.PNG

Capture18.PNG

5.2. Офис А.

Добавляем в настроенный интерфейс Wireguard пир для офиса В.

Capture21.PNG

Также требуется указать маршрут к сети 192.168.26.0/24 (на маршрутизаторе Б мы уже добавляли эту настройку, теперь она заработает — после включения интерфейса в офисе В).

Capture23.PNG

Capture22.PNG

Настройка завершена.

Для проверки можно выполнить непосредственно с устройств через меню "Диагностика" ping хостов в сетях, согласно таблице-заданию (пункт 2).

Приведем получившиеся в результате настроек конфигурационные параметры.

Офис А.

access-list _WEBADMIN_Wireguard0
permit ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0

 

interface Wireguard0
description "VPN \xd0\x91,\xd0\x92-\xd0\x90"
security-level public
ip address 172.16.82.1 255.255.255.0
ip access-group _WEBADMIN_Wireguard0 in
ip tcp adjust-mss pmtu
wireguard listen-port 16632
wireguard peer 1UVOqi1XTqBvc2OSOOuJsi2KmA2EpUm1coyXVyTGBV4= !Keenetic Б
keepalive-interval 15
allow-ips 192.168.15.0 255.255.255.0
allow-ips 172.16.82.2 255.255.255.255
!
wireguard peer SUpw2YyssWeK1gRt17MQVozK2rdycvmyVEoiApcsO1M= !Keenetic В
keepalive-interval 3
allow-ips 192.168.26.0 255.255.255.0
allow-ips 172.16.82.3 255.255.255.255
!
up

 

ip route 192.168.15.0 255.255.255.0 Wireguard0
ip route 192.168.26.0 255.255.255.0 Wireguard0


Офис Б.

access-list _WEBADMIN_Wireguard0
permit ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0

 

interface Wireguard0
description "\xd0\x91-\xd0\x90"
security-level public
ip address 172.16.82.2 255.255.255.0
ip access-group _WEBADMIN_Wireguard0 in
ip tcp adjust-mss pmtu
wireguard peer 41hp2y+BdDc0MvixgzpSb4MdNRkcM1pEWqi+bNG/QWk= !Keenetic А
endpoint 192.168.201.14:16632
keepalive-interval 10
allow-ips 192.168.111.0 255.255.255.0
allow-ips 192.168.112.0 255.255.255.0
allow-ips 192.168.26.0 255.255.255.0
allow-ips 172.16.82.0 255.255.255.0
!
up

 

ip route 192.168.111.0 255.255.255.0 Wireguard0
ip route 192.168.112.0 255.255.255.0 Wireguard0
ip route 192.168.26.0 255.255.255.0 Wireguard0


Офис В.

access-list _WEBADMIN_Wireguard0
permit ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0

 

interface Wireguard0
description "VPN \xd0\x92-\xd0\x90"
security-level public
ip address 172.16.82.3 255.255.255.0
ip access-group _WEBADMIN_Wireguard0 in
ip tcp adjust-mss pmtu
wireguard peer 41hp2y+BdDc0MvixgzpSb4MdNRkcM1pEWqi+bNG/QWk= !Keenetic А
endpoint 192.168.201.14:16632
keepalive-interval 15
allow-ips 172.16.82.0 255.255.255.0
allow-ips 192.168.111.0 255.255.255.0
allow-ips 192.168.15.0 255.255.255.0
!
up

 

ip route 192.168.111.0 255.255.255.0 Wireguard0
ip route 192.168.15.0 255.255.255.0 Wireguard0

 

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 16 из 16

Еще есть вопросы? Отправить запрос

Комментарии

Комментариев: 2
  • А есть возможность использовать несколько серверов для для построения туннеля? Например Keenetic-А отключился от интернета, но Keenetic-Б имеет белый ip адрес и Keenetic-В подключается к нему.

    0
    Действия с комментариями Постоянная ссылка
  • В текущей реализации протокола, понятие "резервный пир" либо аналогичная функциональность, не определены.
    Поскольку в WireGuard нативно поддерживается IP-роуминг как инициаторов, так и ожидающей стороны, естественным решением для ситуации с резервированием можно считать использование доменного имени для сервера.
    В схеме, которую вы предлагаете, такой вариант, понятно, малоприменим. Однако и резервированием данную схему нельзя считать, поскольку по предложенному сценарию изначальная функциональность сохраняется лишь частично - сети А остаются недоступны.
    В данном случае, можно предложить не использовать подключение типа звезда, а вместо этого сразу настроить схему, где офис В для доступа к сети офиса Б устанавливает соединение непосредственно к маршрутизатору Б. В схеме в таком случае будет две серверные стороны: А и Б, и два инициатора: В (к А и к Б) и Б (к А).
    Количество пиров в схеме при этом увеличивается, однако можно при этом, все так же, обойтись одним Wireguard-интерфейсом на каждом из устройств. Если данный пример необходимо рассмотреть, задайте пожалуйста вопрос в системе консультаций на эту тему.

    1
    Действия с комментариями Постоянная ссылка

Войдите в службу, чтобы оставить комментарий.