Настройка WireGuard для удалённых киентов
Введение
В данном руководстве описывается настройка центрального экземляра WireGuard (сервера) на Traffic Inspector Next Generation (TING) и одного или нескольких клиентских узлов для создания туннеля.
Шаг 1 - Настройка экземпляра WireGuard
Пройдите в
Нажмите для добавления нового соединения (экземпляра)
Настройте экземпляр, согласно таблице (если параметр не указан, оставьте его значение по умолчанию):
Параметр
Значение
Включен
Установить флажок.
Имя
Уникальное имя для соединения (например,
WireguardVPN).Открытый ключ
Изначально пусто. Нажмите на значок шестерёнки, что сгенерировать новые ключи.
Секретный ключ
Изначально пусто. Значение появится при генерации пары ключей для открытого ключа.
Порт прослушивания
Уникальный порт со значением 51820 или выше.
Максимальный размер кадра
1420 (значение по умолчанию) или 1412 (если используется PPPoE); на 80 байт меньше, чем MTU вашего WAN.
Адрес туннеля
Например,
10.10.10.1/24. См. примечание ниже.Пиры
Здесь указываются узлы (клиенты); оставьте пустым, пока не будет создана конфигурация пира на этапе 2.
Отключить маршруты
Флажок должен быть снятым.
Примечание
Адрес туннеля должен быть указан в нотации CIDR, иметь уникальный IP-адрес и подсеть для вашей сети, как если бы находился на физически другом маршрутизируемом интерфейсе. Подсеть должна быть достаточного размера, чтобы в неё входили всем клиентские узлы, которые будут использовать туннель. Для IPv4 это должен быть частный адрес (RFC 1918 ), например
10.10.10.1/24. Для IPv6 это может быть уникальный адрес ULA /64 или уникальный GUA /64, полученный на основе делегированного вам префикса.Не используйте адрес туннеля с размером /32 (IPv4) или /128 (IPv6).
Примечание
Оставьте поле DNS-серверы (отображается, если выбранный расширенный режим отображения формы) пустым. В противном случае WireGuard перепишет конфигурацию DNS в TING.
Сохраните настройки соединения и затем нажмите Применить
Снова откройте настройки соединения
Скопируйте открытый ключ, сгенерированный в настройках. Он понадобится для клиентского устройства на Шаге 6
Нажмите Сохранить или Отменить для выхода из настроек
Шаг 2 - Конфигурирование клиентского узла
Совет
Пиры можно сгенерировать при помощи функции генерирования узлов в разделе . При использовании данного инструмента, если вы хотите, чтобы Unbound DNS обрабатывал доменные имена, надо указать в поле DNS-серверы адрес туннеля (например, 10.10.10.1).
Перейдите
Нажмите для добавления нового пира
Настройте пир, как указано ниже (если параметр не указан, оставьте его значение по умолчанию):
Параметр
Значение
Включен
Установить флажок.
Имя
Уникальное имя (например,
user1).Открытый ключ
Введите открытый ключ клиента; при необходимости, перейдите сразу к Шагу 6, чтобы сгенерировать клиентский открытый ключ.
Разрешённые IP-адреса
Уникальный IP-адрес туннеля (IPv4 и/или IPv6) клиента - он должен быть с маской подсети /32 или /128 (в зависимости от протокола) в пределах подсети, настроенной в экземпляре WireGuard. Например,
10.10.10.2/32.Сохраните конфигурацию пира, затем нажмите Применить
Вернитесь в раздел
Откройте настройки соединения, которое было создано на Шаге 1 (например,
WireguardVPN)В выпадающем меню параметра Пиры, выберите новосозданный Пир (например,
user1)Сохраните настройки соединения, затем нажмите Применить
Повторите Шаг 2 для всех клиентов, которых вы хотите настроить
Шаг 3 - Включение/перезапуск WireGuard
Перейдите в раздел
Если для параметра Включить WireGuard не установлен флажок, поставьте его и нажмите кнопку Применить
Если флажок установлен, то надо снять, нажать Применить, поставить и снова нажать Применить
Шаг 4 - Назначения и маршрутизация
Примечание
Действия, описанные ниже в пунктах 4(а) и 4(б), могут не потребоваться в вашей ситуации:
если вы планируете, что ваши клиенты будут использовать туннель только для доступа к локальным IP-адресам/сетям, расположенным за TING, то ни один из этих шагов не нужен.
если вы планируете использовать туннель WireGuard также для доступа к IP-адресам за пределами локальной сети (например, к общедоступному интернету), то потребуется выполнить как минимум один, а возможно, и оба шага.
Тем не менее, шаг 4(а) полезно выполнить в любом случае (по причинам, изложенным в нём).
Шаг 4(а) - Назначение интерфейса для WireGuard
Подсказка
Данный шаг не является обязательным для настройки удалённого клиента. Тем не менее, это целесообразно сделать по нескольким причинам:
он создаёт псевдоним для подсети (подсетей) туннеля, который можно использовать в правилах МСЭ. В противном случае вам придётся определить собственный псевдоним или вручную указать подсеть(и).
автоматически добавляет правило исходящего NAT для IPv4, которое позволяет туннелю обращаться к IPv4-адресам за пределами локальной сети (если это нужно) (не надо его вручную добавлять).
позволяет разделить правила МСЭ для каждого соединения WireGuard (каждого устройства
wgX). Иначе их всех надо будет настроить в группе WireGuard по умолчанию, создаваемой TING. Это больше вопрос организационного удобства, чем существенная проблема.
Перейдите в
В раскрывающемся меню в секции Новый интерфейс:, выберите устройство WireGuard (
wg0, если это первое такое устройство)Добавьте описание (например,
WireguardVPN)Нажмите для добавления, затем нажмите Сохранить
Выберите ваш новый интерфейс в меню
Настройте, как указано ниже (если параметр не указан, оставьте его по умолчанию)
Параметр
Значение
Включен
Установить флажок
Блокировать
Установить флажок
Описание
Аналогично значению в , если это поле не заполнено
Тип конфигурации IPv4
Отсутствует
Тип конфигурации IPv6
Отсутствует
Примечание
Настраивать IP-адреса на интерфейсе не надо: адрес(а) туннеля, указанные в настройках соединения вашего сервера будет(-ут) автоматически назначен(ы) интерфейсу после перезапуска WireGuard.
Сохраните конфигурацию интерфейса, затем нажмите Применить изменения
Перезапустите WireGuard
Совет
При назначении интерфейсов, к ним можно добавлять шлюзы. Это будет полезно, если требуется балансировка трафика по нескольким туннелям или в более сложных сценариях машрутизации. Для этого перейдите в и добавьте новый шлюз. Выберите нужный интерфейс WireGuard в разделе и включите параметр Динамическая политика шлюза.
Совет
Если Unbound DNS настроен на работу со всеми интерфейсами (Все (рекомендуется)), его, для добавления нового интерфейса WireGuard, потребуется перезагрузить. Это необходимо для обеспечения рабты DNS через VPN-туннель.
Шаг 4(б) - Создание правила исходящего NAT
Подсказка
Данный шаг нужен (если необходим вообще) только для того, чтобы клиентские узлы могли получить доступ к IP-адресам за пределами локальных IP-адресов/подсетей, находящихся за TING (см. примечание в шаге 4). Если интерфейс уже был назначен в шаге 4(а), то для трафика IPv6 он нужен только в том случае, если в туннеле используются IPv6 ULA (для IPv6 GUA не нужен NAT). Поэтому, во многих случаях, этот шаг можно пропустить.
Перейдите в
Выберите режим Смешанное создание правил исходящего NAT (если он не был выбран ранее), нажмите Сохранить и затем Применить изменения
Нажмите для добавления нового правила
Настройте правило, как указано ниже (если параметр не указан, оставьте его по умолчанию):
Параметр
Значение
Интерфейс
WAN
Протокол
любой
Инвертировать источник
Флажок не установлен
IP-адрес источника
Если назначен интерфейс на шаге 4(а), выберите сгенерированный псевдоним для подсети (подсетей) этого интерфейса (например,
WireguardVPN сеть.Если интерфейс не назначен, см. примечание ниже.
Порт источника
любой
Инвертировать получателя
Флажок не установлен
IP-адрес назначения
любой
Порт назначения
любой
Транслируемый IP-адрес / целевой IP-адрес
Адрес интерфейса
Описание
Необязательное описание
Сохраните правило, затем нажмите Применить изменения
Перезапустите WireGuard
Подсказка
Если вы не назначили интерфейс, как было предложено на шаге 4(а), нужно будет вручную указать исходные IP-адреса или подсети для туннеля (например, 10.10.10.0/24).
Возможно, проще будет определить псевдоним (с помощью ) для данных IP-адресов/подсетей и использовать его. Если у вас настроен только один экземпляр (соединение) WireGuard и только один узел (пир) WireGuard, вы можете использовать сеть WireGuard по умолчанию (хотя это и не рекомендуется из-за непредсказуемого поведения).
Шаг 5 - Создание правил межсетевого экрана
Здесь потребуется выполнить два шага:
Cоздать правило МСЭ на интерфейсе WAN, разрешающее клиентам подключаться к серверу WireGuard в TING.
Cоздать правило МСЭ, разрешающее клиентам доступ к тем IP-адресам, к которым им должен быть предоставлен доступ.
Откройте раздел
Нажмите для добавления нового правила
Настройте правило, согласно таблице ниже (если параметр не указан, оставьте его по умолчанию):
Параметр
Значение
Действие
Разрешение
Быстрая проверка
Включить
Интерфейс
WAN
Направление
in
Версии TCP/IP
IPv4 или IPv4+IPv6 (в зависимости от того, как вы хотите, чтобы клиенты подключались к серверу; выбранное значение не связано с тем, какой тип трафика допускается в туннеле после его установления)
Протокол
UDP
Отправитель / Инвертировать
Флажок снят
Отправитель
любой
Получатель / Инвертировать
Флажок снят
Получатель
WAN адрес
Диапазон портов назначения
Порт WireGuard, указанный в настройках экземпляра на шаге 1
Описание
Необязательное описание
Сохраните правило, затем нажмите Применить изменения
Перейдите в - см. примечание ниже, если интерфейс не был назначен.
Нажмите для добавления нового правила
Настройте правило, согласно таблице ниже (если параметр не указан, оставьте его по умолчанию):
Параметр
Значение
Действие
Разрешение``
Быстрая проверка
Включить
Интерфейс
Независимо от того, на каком интерфейсе вы настраиваете правило (например,
WireguardVPN) - см. примечание нижеНаправление
in
Версии TCP/IP
IPv4 или IPv4+IPv6 (в зависимости от ситуации)
Протокол
любой
Отправитель / Инвертировать
Флажок снят
Отправитель
Если вы назначили интерфейс на шаге 4(а), выберите сгенерированный псевдоним для подсети/подсетей (например,
WireguardVPN сеть); если интерфейс не назначен, см. примечание нижеПолучатель / Инвертировать
Флажок снят
Получатель
Укажите IP-адреса, к которым должны иметь доступ клиентские узлы, например любой (или конкретные значения IP-адресов/подсетей)
Диапазон портов назначения
любой
Описание
Необязательное описание
Сохраните правило, затем нажмите Применить изменения
Примечание
Если интерфейс не был назначен, как было предложено в шаге 4(а), то второе правило МСЭ, описанное выше, нужно настроить для автоматически созданной группы WireGuard, которая появляется после включения конфигурации соединения и запуска WireGuard. Вам также потребуется указать вручную исходные IP-адреса/подсети для туннеля.
Возможно, проще будет определить псевдоним (с помощью ) для данных IP-адресов/подсетей и использовать его. Если у вас настроен только один экземпляр (соединение) WireGuard и только один узел (пир) WireGuard, вы можете использовать сеть WireGuard по умолчанию (хотя это и не рекомендуется из-за непредсказуемого поведения).
Шаг 5а - Создание правил нормализации
Пройдите в и нажмите для создания нового правила нормализации:
Если через туннель WireGuard пропускается только трафик IPv4, создайте следующее правило:
Параметр
Значение
Интерфейс
WireGuard (Группа)
Направление
Любой
Протокол
any
Отправитель
любой
Получатель
любой
Порт назначения
любой
Описание
Wireguard MSS с фиксацией IPv4Макс. MSS
1380 (по умолчанию) или 1372, если вы используете PPPoE; на 40 байт меньше, чем MTU в WireGuard
Сохраните правило
Если через туннель WireGuard пропускается трафик IPv4+IPv6 или только IPv6, создайте следующее правило:
Параметр
Значение
Интерфейс
WireGuard (Группа)
Направление
Любой
Протокол
any
Отправитель
любой
Получатель
любой
Порт назначения
любой
Описание
Wireguard MSS с фиксацией IPv6Макс. MSS
1360 (по умолчанию) или 1352, если вы используете PPPoE; на 60 байт меньше, чем MTU в WireGuard
Сохраните правило
Совет
Размер заголовка для IPv4, как правило, составляет 20 байт, для TCP также 20 байт. Суммарно - 40 байт для IPv4 TCP.
IPv6 имеет больший размер заголовка - 40 байт, что увеличивает общий итог для IPv6 TCP до 60 байт.
Примечание
Созданием правил нормализации вы обеспечиваете прохождение трафика IPv4 TCP и IPv6 TCP через туннель WireGuard без фрагментации. В противном случае, ICMP и UDP будут работать, но некоторые зашифрованные сеансы TCP запускаться не будут.
Шаг 6 - Настройка клиента WireGuard
Совет
Генерация ключей может быть выполнена на подходящем устройстве с установленными клиентскими инструментами WireGuard . Ниже приведена однострочная команда Linux для генерации пары закрытого и открытого ключей:
wg genkey | tee private.key | wg pubkey > public.key
В качестве альтернативы, приложения WireGuard, доступные на некоторых устройствах, могут автоматизировать процесс генерации ключей для вас.
Настройка клиента в значительной степени выходит за рамки данного руководства, поскольку существует огромное количество возможных целевых платформ (и соответствующих методов настройки). Пример конфигурации клиента (и сервера) приведён в приложении. Ниже приведены основные сведения, необходимые для настройки клиента:
Параметр
Значение
Интерфейс
Адрес
Означает IP-адрес(а), указанный(е) в Разрешённые IP-адреса конфигурации пира в TING.
Например:
10.10.10.2/32.Закрытый ключ
Означает ключ, который (вместе с отрытым ключом) необходимо сгенерировать вручную или автоматически на клиенте. Затем открытый ключ необходимо скопировать в конфигурацию пира в TING для соответствующего клиента - см. шаг 2.
DNS
Относится к DNS-серверам, который клиент должен использовать для туннеля (см. примечание ниже).
Например,
10.10.10.1.Пир
Открытый ключ
Означает открытый ключ (PublicKey), сгенерированный в TING. Скопируйте открытый ключ из конфигурации соединения в TING - см. шаг 1.
Адрес узла
Endpoint - обозначает публичный IP-адрес или доменное имя вашего общедоступного хоста TING, а также порт, указанный в настройках соединения в TING.
Разрешённые IP-адреса
Определяет трафик, который должен передаваться через туннель:
0.0.0.0/0и/или::/0- весь трафик IPv4 и/или IPv6 (всё через VPN);
172.16.1.0/24- трафик до определённой локальной сети;
192.168.2.1/32- только трафик до конкретного сервера.
Примечание
Если указанные DNS-серверы доступны только через туннель или вы хотите, чтобы доступ к ним осуществлялся через него, убедитесь, что они включены в Разрешённые IP-адреса.
Приложение - Примеры конфигураций
Предупреждение
Не используйте ключи из примеров повторно!
Пример конфигурационного файла клиента:
[Interface]
PrivateKey = 8GboYh0YF3q/hJhoPFoL3HM/ObgOuC8YI6UXWsgWL2M=
Address = 10.10.10.2/32, fd00:1234:abcd:ef09:10:2/128
DNS = 192.168.1.254, fd00:1234:abcd:ef09:1:254
[Peer]
PublicKey = OwdegSTyhlpw7Dbpg8VSUBKXF9CxoQp2gAOdwgqtPVI=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = opnsense.example.com:51820
Пример конфигурационного файла сервера:
[Interface]
Address = 10.10.10.1/24, fd00:1234:abcd:ef09:10:1/64
ListenPort = 51820
PrivateKey = YNqHwpcAmVj0lVzPSt3oUnL7cRPKB/geVxccs0C0kk0=
[Peer]
PublicKey = CLnGaiAfyf6kTBJKh0M529MnlqfFqoWJ5K4IAJ2+X08=
AllowedIPs = 10.10.10.2/32, fd00:1234:abcd:ef09:10:2/128