Приложение wireguard что за программа

Для многих обычных пользователей слово VPN сразу ассоциируется со средством доступа в сеть интернет. Действительно, это один из самых популярных сценариев использования данной технологии. Но если для большинства это всего лишь способ обхода ограничений, то специалисты чаще рассматривают VPN как защищенный канал в сетях с низким уровнем доверия: публичный Wi-Fi, сети баров, гостиниц, аэропортов. А если вы работаете с чувствительной информацией, то для таких целей лучше использовать собственный сервер, например, создав его на базе WireGuard.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

WireGuard в последнее время стремительно набирает популярность благодаря своей простоте и скорости работы. Конечно, есть и обратная сторона медали, но в данном сценарии раскрываются в основном только плюсы.

Настройка WireGuard VPN на Android ► как настроить БЕЗЛИМИТНЫЙ и БЕСПЛАТНЫЙ ВПН на Андроид!

Напомним, WireGuard — это туннель без сохранения состояния, а следовательно применять к нему термины «клиент» и «сервер» некорректно, каждый узел WireGuard может как подключаться к другим узлам, так и принимать соединения. Но если мы говорим об организации выхода в интернет посредством VPN, то здесь данные термины уместны. В данном случае VPN-сервер — это узел предоставляющий возможность выхода в интернет, а VPN-клиенты — узлы, которые данную возможность используют, при этом технология реализации самого VPN-канала роли не играет.

Настройка VPN-сервера

Для обеспечения доступа в интернет VPN-сервер должен находиться на узле, обладающем достаточной пропускной способностью и точкой выхода в определенном географическом положении, которое зависит от того, к каким именно ресурсам вам нужно получать доступ. В большинстве случаев отлично подойдет VPS (виртуальный выделенный сервер) с минимальным тарифом в нужном расположении и ОС семейства Linux. Если говорить о семействе Debian / Ubuntu, то WireGuard поддерживается начиная с Debian 10 и Ubuntu 18.04 LTS. Все описанные ниже действия следует выполнять с правами суперпользователя root или через sudo.

Если вы используете Debian 10, то вам потребуется подключить backports-репозиторий:

echo deb http://deb.debian.org/debian buster-backports main > /etc/apt/sources.list.d/buster-backports.list

Обновим источники пакетов и установим WireGuard:

apt update
apt install wireguard

Следующим шагом выполним генерацию ключей, для этого перейдем в директорию /etc/wireguard:

cd /etc/wireguard

Временно изменим маску для обеспечения нужного набора прав на создаваемые файлы:

umask 077

Выполним генерацию ключевой пары:

wg genkey > privatekey
wg pubkey < privatekey >publickey

И вернем маску к стандартным значениям:

Как настроить свой VPN сервер за 5 минут? Обзор wireguard VPN!


umask 022

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

cat /etc/wireguard/privatekey

Скопируем его содержимое, оно понадобится нам на следующем шаге, помним, что приватный ключ является секретным!

Создадим и откроем на редактирование конфигурационный файл WireGuard:

nano /etc/wireguard/wg0.conf

В данном случае мы используем nano, если вам больше по душе редактор mс, то просто замените nanо на mcedit.

Прежде всего настроим сетевой интерфейс WireGuard, для этого добавим в файл следующую секцию:

[Interface]
Address = 10.20.0.1/24
ListenPort = 34567
Privatekey = kNYGiCR3/ikepyURjFnEu5ueoCBsP2pjvGdcj2pggG8=

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

Сохраним конфигурацию и добавим службу в автозагрузку, одновременно запустив ее:

Посмотреть статус WireGuard можно командой:

Если все сделано правильно, то вы увидите информацию о созданном интерфейсе, в частности порт и публичный ключ.

wireguard-vpn-internet-access-001.png

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

Настройка NAT и брандмауэра

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

Прежде всего включим маршрутизацию, чтобы иметь возможность пересылать пакеты между интерфейсами, для этого откроем файл /etc/sysctl.conf, найдем и раскомментируем в нем следующую опцию:

net.ipv4.ip_forward = 1

Затем перечитаем настройки:

sysctl -p

Остальными настройками будет управлять iptables и этот вопрос может вызвать ряд затруднений. Настройки iptables не сохраняются при перезагрузке и существуют различные способы сделать это, наиболее простые и понятные — это скрипты, более современные — это специальные утилиты.

Более подробно о всех этих способах вы можете прочитать в нашей статье: Основы iptables для начинающих. Как сохранить правила и восстановить их при загрузке

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

Создадим файл скрипта и разместим его в /etc:

nano /etc/nat-rules

И добавим в него следующее содержимое:

#!/bin/sh

# Сбрасываем настройки брандмауэра
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Разрешаем уже установленные соединения. Первое правило в цепочке.
iptables -A INPUT -i ens33 -m state —state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем подключения по SSH
iptables -A INPUT -i ens33 -p tcp —dport 22 -j ACCEPT
# Разрешаем подключения к WireGuard
iptables -A INPUT -i ens33 -p udp —dport 34567 -j ACCEPT
#Запрещаем входящие извне. Последнее правило в цепочке.
iptables -A INPUT -i ens33 -j DROP

# Разрешаем уже установленные транзитные соединения
iptables -A FORWARD -i ens33 -o wg0 -m state —state ESTABLISHED,RELATED -j ACCEPT
# Запрещаем транзитный трафик извне
iptables -A FORWARD -i ens33 -o wg0 -j DROP

# Включаем маскарадинг для WireGuard клиентов
iptables -t nat -A POSTROUTING -o ens33 -s 10.20.0.0/24 -j MASQUERADE

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

Сделаем данный файл исполняемым:

chmod + x /etc/nat-rules

Для его запуска можно добавить в секцию [Interface] конфигурационного файла WireGuard опцию:

PostUp = /etc/nat-rules

В большинстве случаев этого достаточно, но, если вдруг у нас не запустится WireGuard мы останемся без брандмауэра. Поэтому мы предлагаем пойти другим путем.

Прежде всего убедимся, что все правила работают как следует, для этого достаточно просто запустить скрипт.

/etc/nat-rules

Посмотреть состояние брандмауэра можно командой:

iptables -L -vn

Если все работает нормально, то установим утилиту iptables-persistent:

apt install iptables-persistent

Во время установки вам будет предложено сохранить текущие правила, с чем следует согласиться. После чего ваши правила будут автоматически сохранены в /etc/iptables/rules.v4, откуда будут восстанавливаться при загрузке. Скрипт нам больше не нужен, можем его убрать.

Можно ли обойтись без скрипта? Можно. Но не все обладают достаточными навыками работы с iptables, поэтому предложенный нами способ, хоть и является более длинным и избыточным, позволяет выполнить настройку брандмауэра наиболее просто для начинающих.

Читайте также:
Network browser что это за программа

Настройка WireGuard клиента в Windows

Скачайте и установите WireGuard для Windows c официального сайта. В приложении выберите Добавить туннель — Добавить пустой туннель.

wireguard-vpn-internet-access-002.png

При этом автоматически будет создана ключевая пара и откроется окно редактирования конфигурационного файла, который уже будет содержать секцию [Interface] и закрытый ключ, все что нам останется, это добавить туда опцию с адресом интерфейса, его следует выбирать из того же диапазона, который вы указали на сервере.

Address = 10.20.0.101/24

Ниже добавим секцию [Peer] для подключения к серверу:

[Peer]
PublicKey = kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA=
AllowedIPs = 10.20.0.0/24, 0.0.0.0/0
Endpoint = 203.0.113.2:34567
PersistentKeepalive = 25

Которая содержит публичный ключ сервера, его адрес и порт, разрешенные сети. Так как нам требуется обеспечить выход в интернет через WireGuard подключение, то в список сетей мы добавили 0.0.0.0/0, что обеспечит направление в туннель всего исходящего трафика. Опция PersistentKeepalive предполагает обмен служебным трафиком с указанным пиром раз в 25 секунд, что требуется для поддержания нормальной работы клиента в том случае, если он находится за NAT.

wireguard-vpn-internet-access-003.png

После сохранения настроек туннельный интерфейс будет поднят и статус соединения будет Подключен, хотя мы еще не делали никаких настроек для данного клиента со стороны сервера. Кого-то может удивить или ввести в заблуждение такое положение дел и именно поэтому мы каждый раз акцентируем тот факт, что WireGuard — это туннель без сохранения состояния. Он ничего не знает о реальном состоянии канала и пира, к которому производится подключение, единственный способ это выяснить — послать пакет на другую сторону туннеля.

wireguard-vpn-internet-access-004.png

Так что же означает Подключен? Только то, что в конфигурации нет ошибок и туннельный интерфейс успешно поднят. Поэтому скопируем публичный ключ клиента и снова вернемся на сервер. Откроем конфигурационный файл и добавим в него следующую секцию:

[Peer]
PublicKey =i p9UjCFHiLnhQTcVgS/Y7j0s8caNj9hhn5RS2UqMXRo=
AllowedIPs = 10.20.0.101/32

Где мы укажем публичный ключ клиента и его внутренний IP-адрес, с которого следует принимать пакеты.

Перезапустим службу WireGuard на сервере:

Теперь можем проверить связь, для начала пропингуем внутренний адрес сервера 10.20.0.1 — если он отвечает, то туннель работает нормально.

Как мы уже говорили, при тех настройках, которые мы указали в туннель будет заворачиваться весь исходящий трафик клиента, в т.ч. и DNS-запросы. Поэтому если у вас в системе указаны локальные адреса DNS, скажем 192.168.1.1 роутера или адреса провайдера, недоступные из внешнего интернета, то разрешение имен работать не будет. Внешне это будет проявляться в том, что интернет работать не будет с указанием на ошибку DNS.

wireguard-vpn-internet-access-005.png

WireGuard прост, и обратная сторона этой простоты заключается в том, что мы не можем передавать нужные опции с сервера на клиента, как в OpenVPN, поэтому спасение утопающих — дело рук самих утопающих. К счастью, WireGuard позволяет задать опции для конфигурирования локального сетевого интерфейса, поэтому откройте приложение Wireguard, найдите свой туннель и выберите Редактировать, в открывшемся окне в секцию [Interface] добавьте опцию:

DNS = 8.8.8.8, 1.1.1.1

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

Настройка WireGuard клиента в Linux

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

С правами root или через sudo выполним установку и генерацию ключей точно также, как мы это делали на сервере, затем также создадим конфигурационный файл:

nano /etc/wireguard/wg0.conf

И внесем в него следующее содержимое:

[Interface]
Address = 10.20.0.102/24
Privatekey = 4Hfj7lZuaQZWkW2OGHPlkhr3Jxheg/lpcJkwiosvG0w=
DNS = 8.8.8.8, 1.1.1.1

[Peer]
PublicKey = kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA=
AllowedIPs = 10.20.0.0/24, 0.0.0.0/0
Endpoint = 203.0.113.2:34567
PersistentKeepalive = 25

Секция [Interface] описывает сетевой интерфейс, в ней мы указываем секретный ключ клиента, желаемый адрес в VPN-сети и DNS-сервера. Секция [Peer] отвечает за подключение к серверу, у всех клиентов она общая, содержит публичный ключ сервера, его адрес и порт, а также параметры подключения и роутинга.

Для управление туннелем в ручном режиме можно использовать утилиту wg-quick, для подключения выполните:

wg-quick up wg0

где wg0 — имя вашего конфигурационного файла, с этим же именем будет создан сетевой интерфейс. Если запустить команду от имени обычного пользователя будет автоматически запрошено повышение прав.

wireguard-vpn-internet-access-006.png

Для отключения используйте:

wg-quick down wg0

При этом не забудьте добавить секцию [Peer] для этого узла на сервере и перезапустить службу, для этого понадобится указать публичный ключ клиента и его адрес, точно также как мы это делали для Windows-клиента.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Дополнительные материалы:

  1. Настраиваем VPN. Часть 1 — Общие вопросы
  2. Настраиваем VPN. Часть 2 — Cтруктура сети
  3. Настраиваем VPN сервер. Часть 3 — PPTP. Платформа Linux
  4. Настраиваем VPN сервер. Часть 4 — PPTP. Платформа Windows
  5. Настраиваем VPN сервер. Часть 5 — L2TP. Платформа Windows
  6. Ubuntu Server. Форвардинг PPTP средствами iptables
  7. Организация VPN каналов между офисами при помощи OpenVPN
  8. Организация каналов между офисами при помощи OpenVPN с дополнительной парольной защитой
  9. Организация VPN каналов между офисами. Маршрутизация
  10. Организация каналов между офисами при помощи OpenVPN на платформе Linux
  11. Настройка OpenVPN-сервера для доступа в интернет
  12. Настройка двух и более OpenVPN-серверов на одном сервере
  13. Почему тормозит OpenVPN? Размер буферов приема и отправки
  14. Как настроить несколько одновременных OpenVPN подключений в Windows
  15. SSH-туннели на службе системного администратора
  16. Создание ключей и сертификатов для OpenVPN при помощи Easy-RSA 3
  17. Настройка OpenVPN-сервера на роутерах Mikrotik
  18. Настройка VPN-подключения в роутерах Mikrotik
  19. OpenVPN объединяем ключи и конфигурацию клиента в один файл
  20. OpenVPN и инфраструктура открытых ключей (PKI)
  21. Настройка OpenVPN-сервера на роутерах Mikrotik
  22. Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
  23. Настраиваем PPTP или L2TP VPN-сервер при помощи RRAS в Windows Server
  24. Автоматическое добавление маршрутов для VPN-соединения в Windows

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Источник: interface31.ru

WireGuard — это VPN-протокол будущего, который появится в ядре Android 12. Чем он лучше текущих

WireGuard — это VPN-протокол будущего, который появится в ядре Android 12. Чем он лучше текущих

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

Лучший Telegram-канал про технологии (возможно)

Что такое WireGuard

WireGuard — это протокол VPN, появившийся на свет несколько лет назад. В 2020 году технология была внедрена в ядро Linux с номером 5.6. Раз она уже поддерживается в ядре Linux, то скоро появится и в ОС Android — уже разработаны ядра с поддержкой. WireGuard безопаснее, быстрее и проще других VPN.

Преимущества этого протокола

WireGuard выделяется на фоне конкурентов несколькими особенностями. В первую очередь, у него более компактный и читаемый исходный код. Популярный OpenVPN состоит из сотен тысяч строк, WireGuard — примерно из четырёх тысяч. Что это даёт? Любые уязвимости в VPN легко обнаружить и исправить.

Читайте также:
Геткурс партнерская программа что это

Благодаря этому и понятной документации разработчикам легче изучать принцип работы и имплементировать протокол в собственные наработки.

WireGuard — это VPN-протокол будущего, который появится в ядре Android 12. Чем он лучше текущих — Преимущества этого протокола. 1

WireGuard использует самые быстрые и современные криптографические алгоритмы, признанные специалистами: Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF. Такой узкий набор снижает гибкость шифрования, но повышает надёжность. Протокол был разработан с прицелом на меньшую сложность, что делает его устойчивым к атакам.

Для рядового юзера важно не то, как VPN устроен «под капотом», а то, как он работает. При столь качественном шифровании WireGuard быстрее аналогов, а пинг ниже. Это видно как из официального тестирования, так и из независимых бенчмарков. Наибольшая разница между протоколами видна на Linux, так как там WireGuard интегрирован в ядро, соответственно и вся маршрутизация осуществляется на этом уровне. Высокая производительность протокола может стать решающим аргументом в сторону WireGuard.

WireGuard — это VPN-протокол будущего, который появится в ядре Android 12. Чем он лучше текущих — Преимущества этого протокола. 2

Сравнение производительности популярных VPN-протоколов | Wireguard.com

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

  • В тему:Делаем полностью бесплатный VPN за 30 минут — пошаговая инструкция

WireGuard появится в ядре Android 12: что это изменит

Поддержка протокола WireGuard уже включена в ветку ядра android-4.19-stable. Релизные билды Android 12 будут базироваться на ядрах android-4.19-stable, android11-5.4, android12-5.4, android12-5.10. Разумеется, поддержка технологии в ядре — лишь часть процесса внедрения. Google придётся разработать API для работы с новым модулем ядра, и пока что неизвестно, успеет ли компания сделать это к релизу ОС или нет.

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

Материалы по теме:

  • Android 12 и 13 окрашиваются под цвет обоев. Это отличная, но провальная идея
  • 5 недостатков VPN, о которых никто не предупреждает. Подводные камни
  • Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков
  • Кастомные прошивки Android 12 для Xiaomi, Samsung, Realme и других смартфонов
  • Обзор Android 12: самые интересные нововведения и главные изменения

Источник: trashbox.ru

Шпаргалка по Wireguard

Возникла необходимость предоставить доступ из интернета устройству за NAT. Самый простой способ — заказать у провайдера выделенный IP адрес. Но это не всегда возможно. Самый простой способ — арендовать дешёвый виртуальный сервер и настроить с ним соединение через VPN. Это позволит направлять запросы из интернета на необходимый узел внутри вашей локальной сети.

При этом можно предоставить статический IP адрес даже для ноутбука, который будет доступен извне по одному IP адресу, как бы он не подключился к интернету. Об этом и пойдёт речь в этой заметке.

Что такое VPN

Пишу эти строки в мире, где VPN тождественно способу обхода блокировок в интернете. Но что из себя представляет VPN реально?

Всё очень просто. VPN — это просто виртуальный кабель между двумя машинами. Сервер — это то место, куда вы можете включить свой виртуальный кабель, клиент — это вы с кабелем. При этом, в отличие от реального мира, сервер и клиент могут быть расположены на разных концах света. Всё, что вам нужно, чтобы клиент имел возможность соединиться с сервером.

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

Почему Wireguard?

Этот вопрос бы у вас не возник, если вы пробовали настроить, например, OpenVPN. Вереница параметров конфигурации клиента и сервера, создание ключей и прочее. Настройки Wireguard намного проще. Он использует современную криптографию и имеет высокую производительность.

Если вас интересует OpenVPN, то можете ознакомиться с заметкой про OpenVPN. В современных версиях, начиная с OpenVPN 2.6 появился вариант упрощенной настройки, который там и рассматривается.

Установка необходимых компонентов

Для дальнейшей настройки необходим пакет wireguard-tools . Он доступен в репозиториях Ubuntu 20.04 LTS и Fedora 35 под этим именем. В других дистрибутивах названием может отличаться. Пакет включает в себя команды wg и wg-quick , которые нам понадобятся.

Создание ключей

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

Сформировать необходимую пару ключей, согласно документации, можно с помощью команды

wg genkey | tee private.key | wg pubkey > public.key

Операцию необходимо выполнить на сервере и на клиенте. Технически, сформировать пары ключей можно на любой машине, но не забывайте, что в целях безопасности закрытый ключ должен быть доступен только владельцу.

wg genkey формирует закрытый ключ, команда tee private.key сохраняет этот ключ в файл private.key и передаёт по цепочке следующей команде — wg pubkey , которая генерирует на базе закрытого ключа открытый ключ. Далее этот открытый ключ сохраняется в файле public.key. После генерации ключей лучше скрыть private.key от чужих глаз установив разрешения 600 на файл

chmod 600 private.key

Каждый из ключей закодирован с помощью base64 кодировки, которая представляет из себя строку из нескольких десятков символов латиницы и цифр. Например:

tDxPhycF7mRLga9e5U/YQgE1FZpZjdKcNkwxIfZikXI=

Настройка сервера и клиента

Wireguard может быть настроен как вручную с использованием команды wg, так и с помощью утилиты wg-quick и написания файлов конфигурации для неё, которые будут содержать все необходимые настройки. В данной заметке рассматривается второй способ с использованием wg-quick. Кроме этого, в современных дистрибутивах wq-quick может быть легко запущена автоматически с нужной конфигурацией с помощью systemd или скриптов для системы инициализации вашего дистрибутива.

Настройки wg-quick в Ubuntu и Fedora находятся в папке /etc/wireguard . В других дистрибутивах путь может отличаться. В этой папке необходимо создать файл с расширением conf и именем сетевого интерфейса для соединения. Пример файла wg0.conf для сервера:

[Interface] Address = 192.168.0.1/24 PrivateKey = SERVER_PRIVATE_KEY ListenPort = 51820 [Peer] PublicKey = CLIENT_PUBLIC_KEY AllowedIPs = 192.168.0.2

В данной конфигурации создаётся виртуальная сеть с адресацией 192.168.0.0/24 , адрес сервера в этой сети 192.168.0.1 . Параметр ListenPort указывает на то, что это сервер и он будет прослушивать порт 51820 на сетевых интерфейсах для входящих подключений. Сервер будет использовать закрытый ключ SERVER_PRIVATE_KEY , который в реальном файле конфигурации необходимо заменить на соответствующую строку с закрытым ключом сервера.

Секция [Peer] описывает клиента и может быть использована несколько раз для разных клиентов. В секции указан публичных ключ клиента ( CLIENT_PUBLIC_KEY ) и адреса узлов, которые могут присылать пакеты через соединение ( AllowedIPs ), в данном случае, это адрес удалённой машины. Вместо CLIENT_PUBLIC_KEY укажите строку с публичным ключом клиента.

Пример файла конфигурации wg0-client.conf для клиента:

[Interface] Address = 192.168.0.2 PrivateKey = CLIENT_PRIVATE_KEY [Peer] PublicKey = SERVER_PUBLIC_KEY AllowedIPs = 192.168.0.0/24 Endpoint = SERVER_NAME:51820 PersistentKeepalive = 20

Клиентская конфигурация незначительно отличается от серверной.

В секции [Interface] указан IP адрес или несколько адресов клиента, в том числе IPv6, в виртуальной сети и закрытый ключ клиента ( CLIENT_PRIVATE_KEY ). Секция [Peer] содержит публичный ключ сервера ( SERVER_PUBLIC_KEY ). В AllowedIPs указываются диапазоны сетей, которые будут маршрутизироваться через данное соединение. В данном случае указана сеть, которая формируется сервером Wireguard — 192.168.0.0/24 . Endpoint указывает на адрес ( SERVER_NAME ) и порт сервера. Параметр PersistentKeepalive необходим для стабильного соединения, если вы находитесь за брандмауэром или NAT. Клиент будет периодически отправлять пакет на сервер, что обеспечит обновление данных об активных соединениях. Вместо значений CLIENT_PRIVATE_KEY , SERVER_PUBLIC_KEY и SERVER_NAME необходимо указать соответствующие строковые значения.

Читайте также:
Служба nfc что это за программа на Андроид

Дополнительное шифрование рукопожатия

Есть возможность сгенерировать ещё один ключ, который будет использоваться при рукопожатии сервера и клиента:

wg genpsk > psk.key

Сгенерированный ключ необходимо добавить в конфигурацию в раздел [Peer] , параметр PresharedKey на стороне сервера и стороне клиента.

Проверяем подключение

Протестировать соединение можно с помощью утилиты wg-quick , например:

# wg-quick up wg0-client [#] ip link add wg0-client type wireguard [#] wg setconf wg0-client /dev/fd/63 [#] ip -4 address add 192.168.0.2 dev wg0-client [#] ip link set mtu 1420 up dev wg0-client [#] ip -4 route add 192.168.0.0/24 dev wg0-client

Из текста сообщений видно, что адрес из значения Address был присвоен интерфейсу туннеля, а диапазон AllowedIPs был использован для создания нового маршрута.

Обеспечить автоматический запуск сервера и/или клиента можно с помощью команды:

При этом wg0 — это имя соединения: wg0 — сервер, wg0-client — клиент. Ключ —now позволит сразу запустит службу после её активации.

При тестировании Wireguard через соединение IPv6 столкнулся с проблемой, что соединение устанавливается, адреса становятся доступными, однако обмена информацией нет. Вся проблема оказалась в блокировке входящих пакетов UDP со стороны провайдера. Если у вас что-то не работает, убедитесь, что UDP пакеты успешно доставляются в обе стороны.

Превращаем сервер в шлюз

Для превращения вашего сервера в шлюз необходимо включить NAT. Это можно сделать разными способами, в том числе с использованием iptables или Firewalld.

Использование iptables

При использовании iptables необходимо в секцию [Interface] сервера добавить следующие параметры:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

где ens3 — это ваш сетевой интерфейс, который имеет белый IP адрес. Вместо режима MASQUERADE, конечно, можно применить другие методы NAT.

Настройка Firewalld

В отличии от iptables, Firewalld может быть не установлен в вашей операционной системе. Fedora использует Firewalld. В Ubuntu 20.04 LTS и 22.04 LTS может быть установлен из репозитория universe с помощью команды

sudo apt install firewalld

Как показала практика, настройки по умолчанию не блокируют порт 22, поэтому даже если Firewalld устанавливается на удалённую машину, доступ к ней вы не потеряете. Кроме этого, можно не активировать сервис firewalld , а только запустить его

sudo systemctl start firewalld

В случае проблем вы можете просто перезагрузить ваш сервер и он запустится без firewalld. Когда вы будете уверены, что всё работает как надо, можете включить сервис:

sudo systemctl enable firewalld

После этого, при следующей перезагрузке, он будет запущен автоматически.

Чтобы включить NAT, необходимо на сетевом интерфейсе, который смотрит в интернет, включить режим masquerade. Это можно сделать вручную выполнив команду

firewall-cmd —permanent —zone=ZONE —add-masquerade

где ZONE — это имя зоны, в которой находится внешний интерфейс. Однако делать этого не обязательно, потому что firewalld имеет типовые настройки для часто встречающихся вариантов. Например, зона external соответствует нашим требованиям. Просто необходимо добавить наш сетевой интерфейс в эту зону и разрешить из неё доступ к Wireguard

firewall-cmd —permanent —zone=external —add-interface ens3 firewall-cmd —permanent —zone=external —add-service wireguard

Если вы используете Firewalld до версии 1.0 или нестандартный номер порта, например, 35053, то вместо использования имени службы необходимо указать номер порта:

firewall-cmd —permanent —zone=external —add-port 35053/udp

Для VPN сети можно выбрать зону internal

firewall-cmd —permanent —zone=internal —add-interface wg0

Чтобы изменения вступили в силу, выполняем

firewall-cmd —reload

Начиная с Firewalld 1.0 по умолчанию блокируется транзитный трафик между зонами. Необходимо разрешить его с помощью policy object, например, создав правило client-to-inet :

firewall-cmd —permanent —new-policy client-to-inet firewall-cmd —permanent —policy client-to-inet —set-target ACCEPT firewall-cmd —permanent —policy client-to-inet —add-ingress-zone internal firewall-cmd —permanent —policy client-to-inet —add-egress-zone external firewall-cmd —reload

Теперь все пакеты, которые будут проходить из зоны internal в external будут подвергнуты NAT. При необходимости, на Wireguard клиенте разрешить получение любых пакетов через соединение с помощью параметра AllowedIPs

AllowedIPs = 0.0.0.0/0

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

Ещё немного о Firewalld

Наиболее часто используемую зону можно использовать в качестве зоны по умолчанию, тогда её можно не указывать в командах

firewall-cmd —set-default-zone=external

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

firewall-cmd —get-services

Детальная информация об этих службах содержится в XML файлах в папке /usr/lib/firewalld/services . Разрешите доступ, например, к вашему веб-серверу по HTTP и HTTPS протоколам

firewall-cmd —permanent —zone=external —add-service=http firewall-cmd —permanent —zone=external —add-service=https

Если подходящих вариантов не нашлось, то можно открыть порт непосредственно по номеру, например, 1080 по протоколу TCP

firewall-cmd —permanent —zone=external —add-port 1080/tcp

Передача настроек на смартфон

Клиент Wireguard для смартфона умеет считывать qr-код с конфигурацией. Чтобы сгенерировать код не нужен даже графический режим. Просто создайте файл конфигурации для вашего клиента и отобразите его в виде QR-кода в консоли с помощью команды qrencode , которая в Ubuntu и Fedora устанавливается с помощью пакетов с именем qrencode .

qrencode -t ansiutf8 < wg-client.conf

wg-client.conf — это имя файла содержимым конфигурации, которую необходимо передать на другое устройство.

Управление подключениями через NetworkManager

Возможно в вашей операционной системе уже установлен NetworkManager. Он может без проблем импортировать конфигурацию Wireguard и управлять этим подключением. Всё, что нужно сделать, импортировать конфигурацию для wg-quick:

nmcli connection import type wireguard file wg0.conf

Новое соединение получит наименование такое же, как было у файла конфигурации — wg0 .

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

nmcli connection up wg0

чтобы включить или

nmcli connection down wg0

При использовании NetworkManager необходимости запускать сервисы wg-quick нет.

Заключение

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

Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.

Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово на сервисе Boosty или любой суммой через сервис QIWI.

Источник: tavda.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru