Wireguard debian 10 настройка
Шаг 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 года вышло обновление, для которого патч уже не требуется.
Главное меню » Debian » Как установить VPN-сервер и клиент Wireguard на компьютер с Debian Linux
(2 оценок, среднее: 3,00 из 5)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.
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 был установлен и загружен, выполните команду:
Базовая настройка VPN сервера WireGuard
Создайте директорию для WireGuard:
Теперь можно приступить к генерации ключей для клиента и сервера:
В результате выполнения предыдущих команд, появится 4 файла с ключами: приватный и публичный ключи для сервера, а также аналогичные ключи для клиента (мы будем использовать их при настройке клиента 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):
Установите приложение, откройте и нажмите кнопку для добавления нового подключения:
Чтобы максимально просто создать новое VPN подключение, нужно на WireGuard сервере и создать файл для генерации qr-кода:
И добавим в него следующее содержимое:
- В поле PrivateKey нужно указать содержимое файла client-private.key
- В поле PublicKey – данные из файла server-public.key
- Значение SERVER_IP замените белым (реальным) IP-адресом вашего сервера
- DNS можете заполнить на ваш выбор.
Выполните команду для генерации QR кода:
После выполнения команды, вы должны получить qr-код который нужно отсканировать в приложении на Android:
Осталось указать имя подключения и оно будет автоматически создано на вашем мобильном (со свеми ключами и настройками). После подключения к VPN серверу вы выйти в интернет с адресом WireGuard (как при подключении к любому VPN сервису):
Для устройств с IOS так же есть клиент WireGuard. Настройка выполняется аналогично Android. Все ваши шаги для подключения будут идентичными.
Настройка клиента WireGuard в Windows
Установите клиент WireGuard и запустите его.
Создайте файл client.conf ( генерируется по способу, описанному выше при генерации qr-кода), нажмите кнопку Import и укажите данный файл:
Чтобы отключиться от WireGuard, нажмите кнопку Deactivate.
Таким образом, мы настроили VPN-сервер WireGuard, который не уступает OpenVPN или IpSec, а настраивается гораздо быстрее и проще.
Читайте также: