Начиная с версии KeeneticOS 3.3 для актуальных моделей интернет-центров Keenetic была добавлена поддержка Wireguard VPN.
В нашем примере рассмотрим, как установить Wireguard-соединение между тремя интернет-центрами Keenetic, чтобы хосты в их локальных сегментах могли обмениваться между собой данными. Такую схему подключения называют Site-To-Site VPN (например, межофисное соединение для связи с целью расширения сетевой инфраструктуры).
1. Необходимо убедиться, что внешний адрес одного из маршрутизаторов доступен с другого. В случае, если VPN-туннель нужно построить через Интернет, это означает что у одного из роутеров должен быть предоставлен провайдером публичный "белый" IPv4-адрес.
2. Установите компонент системы "Wireguard VPN". Сделать это можно в веб-конфигураторе на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".
Установить компонент "Wireguard VPN" нужно на трех роутерах Keenetic. После этого настройки указанного VPN-туннеля появятся в веб-конфигураторе на странице "Другие подключения".
Рассмотрим графическую схему сети.
- Маршрутизатору А провайдер выдал публичный 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 (это внутренний адрес туннеля). Можно использовать другую подсеть, при этом ее следует выбрать из зарезервированных для частного использования диапазонов и таким образом, чтобы избежать наложения с другими настроенными на данных устройствах подсетями. Далее нужно нажать кнопку "Сохранить публичный ключ в буфер обмена" (он потребуется на следующем шаге) и затем кнопку "Сохранить" для применения настроек.
3.2. Настройка на маршрутизаторе Keenetic А (соединение с филиалом Б).
На маршрутизаторе А аналогично нужно добавить подключение, указать название и сгенерировать пару ключей. Копировать в буфер обмена публичный ключ А пока не надо.
Далее укажем адрес. Внутренний, "технический" адрес устройства в туннеле имеет смысл указать из уже избранной при настройке интерфейса на маршрутизаторе Б подсети — на нем мы указали адрес из сети 172.16.82.2/24, на маршрутизаторе А адрес следует указывать из этой же сети. Укажем на конце туннеля Keenetic А адрес 172.16.82.1 с маской сети 255.255.255.0.
TIP: Примечание: Адрес можно указать с маской 32 бита, то есть не адрес сети, а адрес хоста. При этом придется добавлять маршрут, указывающий на сеть интерфейса туннеля или индивидуально к каждому концу туннеля. В случае указания адреса таким образом, чтобы маска охватывала адреса всех участников в туннеле, выстраиваемый автоматически маршрут избавляет от необходимости вводить данные установки вручную.
Порт, указанный в поле "Порт прослушивания", будет использован при дальнейшей настройке маршрутизатора Б. На этот порт Keenetic Б (как и Keenetic В) будет обращаться при установлении туннеля. В нашем примере используем порт номер 16632. Этот порт маршрутизатор А автоматически откроет на всех интерфейсах, чтобы проходили входящие подключения. Дополнительно добавлять разрешающие правила сетевого экрана не требуется.
Далее добавим соединение при помощи кнопки "Добавить пир". Укажем соответствующее имя соединения и публичный ключ туннеля с маршрутизатора Б. Поскольку на предыдущем шаге этот ключ был скопирован в буфер обмена, его можно сейчас вставить в поле "Публичный ключ".
В полях "Разрешенные подсети" нужно указать адреса, трафик с которых должен быть допущен от удаленной стороны, и адреса, трафик к которым может быть отправлен удаленной стороне. Это: технический адрес удаленного конца туннеля — 172.16.82.2/32 (со стороны пира Б трафик в туннеле будет идти с адресом источника 172.16.82.2, и в нашем примере мы указываем здесь явно адрес хоста, принимая во внимание что адресные пространства разрешенных подсетей на соединениях в рамках одного интерфейса не должны перекрываться), и удаленная сеть — локальная сеть маршрутизатора Б - 192.168.15.0/24 (к этой сети требуется обеспечить доступ по туннелю).
В поле "Проверка активности" необходимо указать периодичность попыток зондирования. Это внутренняя, встроенная в протокол проверка доступности удаленной стороны соединения. Обычно, достаточно 8-10-секундного интервала между проверками.
После чего, скопируем публичный ключ маршрутизатора А в буфер обмена и сохраним настройку.
3.3. Теперь, выполняем донастройку подключения на маршрутизаторе Keenetic Б. Требуется добавить соединение, которое будет устанавливаться к маршрутизатору А.
По щелчку на строке добавленного туннеля, открываем его настройки и нажимаем кнопку "Добавить пир".
В настройках пира указываем Имя пира (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 секунд. Сохраняем установки.
3.4. Включим настроенные VPN-интерфейсы на маршрутизаторах А и Б. Если все настроено корректно, в полях по колонке "Пир" должен отображаться зеленый индикатор статуса.
Keenetic А:
Keenetic Б:
4. Настройка сетевого экрана и маршрутизации. Для работы потребуется указать маршруты и разрешить входящий трафик на добавленные VPN-интерфейсы.
4.1. Разрешаем входящий в интерфейс Wireguard трафик. Это нужно, т.к. по умолчанию интерфейсам туннеля устанавливается публичный уровень безопасности и входящий трафик запрещен. Чтобы запросы из удаленных сетей могли проходить по туннелю, добавим на обоих роутерах соответствующую настройку в меню "Межсетевой экран".
4.2. Технические адреса сети, обозначенной на концах туннеля: 172.168.82.1 и 172.16.82.2, уже могут на этом этапе обмениваться данными. Чтобы по туннелю отправлялся трафик в удаленные сети, требуемые по схеме, на устройствах необходимо добавить маршруты (меню "Маршрутизация" - кнопка "Добавить маршрут").
Keenetic А — маршрут к сети 192.168.15.0/24 через туннель:
Keenetic Б — маршруты к сетям 192.168.111.0/24 и 192.168.112.0/24 и 192.168.26.0/24 через туннель:
Данный последний маршрут пока не может работать, так как соединение третьего филиала не настроено. Завершим настройку.
5. Настройка соединения между роутерами А и В. Процедура аналогична приведенной в пунктах 3 и 4. Публичный ключ одного из пиров (маршрутизатора в офисе А) у нас уже есть. Скопируем его в буфер обмена и настроим интерфейс Wireguard маршрутизатора в офисе В.
5.1. Офис В.
Параметры интерфейса Wireguard.
Настройка сетевого экрана для интерфейса Wireguard.
Правила маршрутизации.
5.2. Офис А.
Добавляем в настроенный интерфейс Wireguard пир для офиса В.
Также требуется указать маршрут к сети 192.168.26.0/24 (на маршрутизаторе Б мы уже добавляли эту настройку, теперь она заработает — после включения интерфейса в офисе В).
Настройка завершена.
Для проверки можно выполнить непосредственно с устройств через меню "Диагностика" 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