Wireguard debian 10 настройка

Обновлено: 07.07.2024

Шаг 1 - Установка

После входа на сервер через SSH, переключитесь на пользователя root, напечатав sudo su - .
Запустите следующие команды:

Установите заголовки для вашего ядра, если вы еще этого не сделали:

Если вы этого не видите и вместо этого видите ошибку, убедитесь, что установленные вами заголовочные файлы linux имеют ту же версию, что и ядро, которое вы используете (сравните с uname -a тем, что собирается). В противном случае вам может потребоваться перезагрузить сервер, например, если вы только что произвели dist-upgrade и не перезагружены.

Шаг 2 - Конфигурация сервера

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

  • Частный ( 10.0.0.1 ) IPv4 будет IP-адресом VPN сервера. Этот IP-адрес недоступен из общедоступного Интернета, и любые прослушивающие его службы будут доступны только для клиентов, подключенных к VPN.
  • Эту подсеть можно изменить на другие частные сети . Кроме того, вы можете использовать и пересылать общедоступные IP-адреса, если на вашем сервере есть хотя бы 3 общедоступных IPv4, но это выходит за рамки данного руководства и требует тщательного межсетевого экрана.
  • Address это вышеупомянутый приватный IPv4. Подсеть / 24 указывает, что это будет обрабатывать IP-адреса 10.0.0.1 - 10.0.0.254 .
  • SaveConfig не позволяет изменениям в командной строке влиять на файл конфигурации, что может вызвать проблемы в режиме wg-quick.
  • ListenPort это порт прослушивания вашего сервера. Это нужно будет открыть в вашем брандмауэре.
  • PrivateKey это закрытый ключ, сгенерированный для сервера. Открытый ключ будет выдан каждому клиенту. Практическое правило: закрытый ключ не покидает устройство, на котором он был сгенерирован, а открытый ключ - нет.
  • AllowedIPs Здесь мы размещаем подсеть для наших клиентов, а также разрешенный IP-адрес для клиента. Ограничьте это по мере необходимости (например, удалите, 10.0.0.0/24 если вы не хотите, чтобы каждый клиент мог общаться с другими клиентами в этой подсети).
  • PersistentKeepalive : Поддерживает соединение, отправляя рукопожатие каждые 25 секунд.

Шаг 3 - Настройка клиента

Пример конфигурации клиента Windows (Windows не поддерживает /31 или /32 ), которая туннелирует весь трафик через сервер с поддержкой IPv6:

Где 1.2.3.4 находится публичный IPv4-адрес вашего сервера. Удалите адреса IPv6, если вы не хотите поддерживать IPv6.
Если вам нужна поддержка IPv6, вам также необходимо добавить IPv6-адрес клиента в конфигурацию сервера в AllowedIPs однорангового узла. Каждый сервер получает, /64 так что вы можете выделить отдельный IP-адрес для вашего клиента (или меньшую подсеть). Имейте в виду, что при пересылке общедоступного IPv6 вам нужно будет правильно настроить его брандмауэр, что выходит за рамки данного руководства (например, его можно использовать как для брандмауэра на клиенте с брандмауэром Windows, так и на сервере с iptables). Можно пересылать общедоступный IPv4 аналогичным образом. Преимущество этого состоит в том, что вам не нужен NAT на стороне сервера для переадресации портов.

Шаг 4 - Дальнейшая настройка сервера в особых случаях

Параметр AllowedIPs на клиенте будет указывать, какие диапазоны IP-адресов проходят через туннель, а какие - нет. Вам нужно будет настроить iptables на сервере, например, чтобы включить внешний доступ в Интернет при пересылке всего трафика (то есть 0.0.0.0/0 конфигурации):

Найти и изменить net.ipv4.ip_forward = 0 на net.ipv4.ip_forward = 1
Установить пакет iptables и iptables-persistent затем iptables-save > /etc/iptables/rules.v4 сохранить конфигурацию при перезагрузке:

Замените enp1s0 на основной интерфейс (вы можете проверить это с помощью ifconfig ).
Если вы хотите перенести порт вперед, подумайте:

Это сделает службу TCP, работающую на клиенте, 10.0.0.2:48000 доступной из Интернета по адресу 1.2.3.4:45000 . Обратный прокси-сервер nginx также может использоваться в качестве альтернативы proxy_pass директиве.

Шаг 5 - Включить сервер

  • systemctl enable wg-quick@wg0 (начать при загрузке)
  • systemctl status/stop/start/restart wg-quick@wg0 (по мере необходимости)

Шаг 6 - Перезагрузка конфигурационного файла (необязательно)

Чтобы полностью перезагрузить файл конфигурации, вам необходимо перезапустить сервер (это приведет к разрыву текущих подключений): systemctl restart wg-quick@wg0
Если вы просто хотите добавить клиента после обновления файла конфигурации, вы можете вместо этого выполнить: wg addconf wg0 <(wg-quick strip wg0) Это не нарушит существующие соединения.

Всякая всячина, которую дядюшка Раджа находит в интернете и хочет поделиться с читателями.

Об авторе

Архив блога

Мой блог смотрят

07 мая 2020

Как я WireGuard на Debian 10 ставил и настраивал.

WireGuard -это такая реализация VPN в пространстве ядра. Авторами заявляется, что этот туннель простой как апельсин и надёжный как швейцарский банк. (шутка)

Да и мне уже все уши им прожужжали, мол, OpenVPN - это прошлый век, а сейчас все на WireGuard переходят.

Ну я и решил попробовать поставить это дело на Debian 10, который у меня давно уже используется. И тут начались проблемы.

Первая проблема возникла уже на этапе установки. Из-за того, что WireGuard работает внутри ядра, для него собирается модуль (пакет "wireguard-dkms"). В Debian 10 используется ядро версии 4.19, в к котором ещё нет такого модуля из коробки, а ставить ядро версии 5.5 из backports я желанием не горел.

Установка заканчивается неудачей. При сборке модуля возникла примерно такая ошибка:

/wgfix.patch " и накладываем на исходные тексты: Если все прошло без ошибок, то пробуем продолжить установку:

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

Теперь можно немного расслабиться, потому что самое сложное позади. Установленное добро надо как-то настроить, чтобы использовать. Делал я это аж двумя способами.

Вместе с WireGuard устанавливается программа wg-quick и одноимённый сервис для systemd. Для описания туннелей она использует conf-файлы из каталога " /etc/wireguard ".

Сначала необходимо сгенерировать пары ключей (публичный и приватный) для сервера и клиента, а также preshared-ключ. Команды я взял из найденных в сети руководств:

Теперь можно писать файл конфигурации " /etc/wireguard/wg0.conf ". wg0 - это имя сетевого интерфейса, который будет создан при активации туннеля. По структуре файл очень похож на ini-файл.

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

Настройка клиентской части почти не отличается от серверной:

Туннель на клиенте запускается тем же способом, что и на сервере.

Если для управления сетью используется systemd-networkd, то для организация туннеля можно написать всего два юнита. У себя я сделал подобное для домашнего сервера, поэтому опишу только конфигурацию со стороны сервера.

Первый юнит - это описание сетевого устройства. У меня он называется " /etc/systemd/network/14-wg1.netdev ".

Второй юнит - это описание сети. У меня он называется " /etc/systemd/network/14-wg1.network ". После этого достаточно перезапустить сервис, чтобы появился новый интерфейс. Если на сервере и клиенте всё правильно получилось сделать, то при просмотре состояния туннеля при активном соединении должна быть примерно такая информация:

То есть соединение между узлами есть, и трафик циркулирует в обе стороны.

Я пока не пробовал соединять сети через подобный туннель и не нашёл способа заставить работать подключение только по IPv4 без явного указания ip-адреса вместо доменного имени.

UPD: 10 мая 2020 года вышло обновление, для которого патч уже не требуется.

Favorite

Добавить в избранное

Главное меню » Debian » Как установить VPN-сервер и клиент Wireguard на компьютер с Debian Linux

(2 оценок, среднее: 3,00 из 5)

Как установить VPN-сервер и клиент Wireguard на компьютер с Debian Linux

П рограммная технология Virtual Private Network (VPN) была применена предприятиями несколько лет назад для безопасного установления соединений между офисами и для предоставления сотрудникам поездок доступа к собственным приложениям. С тех пор VPN оказался полезной технологией для людей, которые хотят для защиты их конфиденциальности или доступа к географически ограниченным услугам из других регионов. До сих пор было очень сложно настроить VPN-сервис с собственным хостингом, но теперь Wireguard VPN уже здесь.

Wireguard был в разработке в течение нескольких лет. Важная веха, версия 1.0, была достигнута в марте 2020 года. В то же время она была включена в ядро Linux версии 5.6. Поскольку не многие (серверные) компьютеры в производственном использовании используют последнее ядро, Wireguard должен быть установлен и настроен на этих машинах для безопасной работы в сети. В этой статье мы устанавливаем Wireguard на компьютеры Debian Linux, которые выполняют роли VPN-сервера и клиента.

Установка Wireguard на Debian

Вам также может понадобиться установить:

После выполнения этих команд проверьте, что все необходимое для Wireguard установлено:

Если команда ничего не выводит, все необходимые модули должны быть там.

Настройка сервера Wireguard

Точно такое же программное обеспечение Wireguard установлено на серверах и клиентах Linux, потому что конфигурация VPN каждого компьютера определяет его роль. Приложения Wireguard доступны также для Windows, Android, Apple MacOS и iOS.
Давайте начнем работу по настройке, создав каталог для настроек Wireguard:

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

В приложении редактора создайте файл wg0.conf в каталоге /etc/wireguard и вставьте в него следующие строки:

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

Скопируйте и вставьте значение в поле Privatekey из файла /etc/wireguard/privatekey.

Listenport может быть любым свободным портом, 51820 по умолчанию для Wireguard.

Настройка VPN-клиента Wireguard

Если вы собираетесь настроить один или несколько VPN-клиентов, сейчас самое время убедиться, что вы можете легко копировать ключи с одного устройства на другое. Мы использовали Nextcloud в качестве временного хранилища для передачи ключей с одного устройства на другое, но вполне подойдет Yandex Диск, Evernote, Dropbox, электронная почта или любой другой сервис, которому вы доверяете и который удобно использовать.

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

Создайте закрытый и открытый ключи в каталоге /etc/wireguard, как вы это делали на сервере.

Создайте следующий файл wg0.conf в клиентском каталоге /etc/wireguard в редакторе.

Чтобы завершить настройку клиента, вы также должны отредактировать файл wg0.conf на сервере. Вставьте следующие строки в конец файла:

Publickey: Вы должны вставить открытый ключ клиентского компьютера здесь.

AllowedIPs указывает IP-адрес клиента внутри VPN-туннеля.

Читать Как установить LAMP (Linux, Apache, MySQL & PHP) и PhpMyAdmin на Debian 8

Теперь вы можете протестировать новый VPN, если он надежно соединяет ваши компьютеры. Введите следующую команду как на сервере, так и на клиенте:

На клиенте проверьте, может ли он общаться с сервером:

(или пинг 192.168.2.2, если вы нажимаете на клавиатуре сервера)

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

Маршрутизация трафика сети Wireguard VPN в интернет

Поскольку на этом этапе используются стандартные iptables брандмауэра Linux, существует множество способов сделать это, и правильные настройки также зависят от правил, уже сохраненных в iptables сервера. Вот настройки, которые работали для всех моих серверов Debian.
Введите следующие команды:

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

Команда отображает длинный список элементов, но ищет значение net.ipv4.ip_forward
Если оно равно 0, пересылка на внешние адреса отключена. Разрешить пересылку с помощью команды:

Пинг на внешний адрес для проверки. Если это работает, вы можете сделать настройку постоянной, создав файл /etc/systctl.d/local.conf и вставив эту строку в файл:

(советы по сохранению изменений в файле conf находятся в файле readme Debian, расположенном в каталоге sysctl.d).

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

date

28.04.2020

directory

Android, CentOS, Linux, Windows 10

comments

комментариев 7

WireGuard — это новый VPN протокол с открытым исходным кодом, основанный на последних концепциях криптографии. Его особенность – простота реализация и высокая скорость работы. WireGuard работать быстрее и качественнее, чем VPN-протоколы OpenVPN и IKEv2. WireGuard реализует методы виртуальной частной сети для создания защищенных соединений в маршрутизируемых или мостовых конфигурациях, Включен в состав ядра Linux, начиная с версии 5.6.

Преимущества WireGuard:

  • Простой в установке, настройке и использовании;
  • Использует современные криптографические алгоритмы: Noise protocol framework, Curve25519, ChaCha20, Poly1305 и т.д.
  • Высокая производительность за счет реализации его в виде модуля ядра (можно получить скорость до 1Гбит/с, что в 4 раза больше чем производительность OpenVPN);
  • Компактный и читаемый код (основная логика WireGuard занимает порядка 4 тыс. строк кода, тогда как в OpenVPN доходит до нескольких сотен тысяч), проще исследовать на уязвимости..

Из минусов можно привести несколько примеров:

  • WireGuard VPN работает только по UDP, то есть если у вас закрыт UDP трафик, подключения работать не будут;
  • Разработчики пока еще называют свой продукт экспериментом.

В данной статье, мы рассмотрим настройку WireGuard на сервере с CentOS 7 и 8, но данный VPN-сервер, поддерживается практически на всех Linux дистрибутивах и не только.

Установка WireGuard в Linux

Перед установкой необходимого ПО на сервер, выполните обновление пакетов на сервере с помощью пакетного менеджера:

Для CentOS 8:

В дальнейшем настройка WireGuadr не отличается на этих дистрибутивах CentOS. Чтобы проверить, что модуль wireguard был установлен и загружен, выполните команду:

установка wireguard в linux centos

Базовая настройка VPN сервера WireGuard

Создайте директорию для WireGuard:

Теперь можно приступить к генерации ключей для клиента и сервера:

В результате выполнения предыдущих команд, появится 4 файла с ключами: приватный и публичный ключи для сервера, а также аналогичные ключи для клиента (мы будем использовать их при настройке клиента WireGuard).

генерация ключей для wireguard

Далее нужно создать конфигурационный файл для сервера:

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

  • В поле PrivateKey нужно добавить содержимое файла server-private.key
  • В поле PublicKey вы добавляете содержимое с файла client-public.key
  • Address — IP адрес сервера wireguard
  • ListenPort — порт на котором будет работать wireguard
  • AllowedIPs — IP адреса, которые назначаются VPN клиенту

PostUp и PostDown правила iptables при подключении wireguard.

В блоке [Peer] указываются данные для VPN клиентов. Если их будет несколько, то нужно добавить блоки для новых клиентов, с новым IP адресом и новым ключом.

Если у вас на сервере используется не iptables, а firewalld, замените строки в конфигурационном файле, которые относятся к настройкам межсетевого экрана:

Вы заменяете на:

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

Теперь добаьте блок для нового клиента в конфигурационный файл /etc/wireguard/wg0-server.conf:

Включите форвардинг пакетов:

Добавьте сервис WireGuard в автозагрузку и запустите его:

Проверьте, что появился отдельный сетевой интерфейс:

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

Подключение к WireGuard с мобильного устройства Android

Для подключения с мобильного устройства Android, лучше всего использовать приложение WireGuard, которое доступно в Play Маркет (Google Play):

WireGuard клиент для android в Google Play

Установите приложение, откройте и нажмите кнопку для добавления нового подключения:

WireGuard добавление нового подключения в клиенте

Чтобы максимально просто создать новое VPN подключение, нужно на WireGuard сервере и создать файл для генерации qr-кода:

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

  • В поле PrivateKey нужно указать содержимое файла client-private.key
  • В поле PublicKey – данные из файла server-public.key
  • Значение SERVER_IP замените белым (реальным) IP-адресом вашего сервера
  • DNS можете заполнить на ваш выбор.

Выполните команду для генерации QR кода:

После выполнения команды, вы должны получить qr-код который нужно отсканировать в приложении на Android:

qrencode - сгенерировать qr код для подключения в wireguard

Осталось указать имя подключения и оно будет автоматически создано на вашем мобильном (со свеми ключами и настройками). После подключения к VPN серверу вы выйти в интернет с адресом WireGuard (как при подключении к любому VPN сервису):

vpn подключение wireguard в android

Для устройств с IOS так же есть клиент WireGuard. Настройка выполняется аналогично Android. Все ваши шаги для подключения будут идентичными.

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

Установите клиент WireGuard и запустите его.

wireguard клиент для windows

Создайте файл client.conf ( генерируется по способу, описанному выше при генерации qr-кода), нажмите кнопку Import и укажите данный файл:

настройка vpn подключения wireguard в windows

отключиться от wireguard

Чтобы отключиться от WireGuard, нажмите кнопку Deactivate.

Таким образом, мы настроили VPN-сервер WireGuard, который не уступает OpenVPN или IpSec, а настраивается гораздо быстрее и проще.

Читайте также: