Как установить wireguard debian
Перейти к содержимому

Как установить wireguard debian

  • автор:

Установка и настройка Wireguard на примере Debian 11

Если ничего не выводит — значит все хорошо. Если будет ошибка на подобии этой:

Тогда доставим заголовки:

Настройка системы

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

Затем необходимо выполнить команду sysctl -p чтобы система перечитала конфигурацию:

Генерация ключей сервера

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

Генерация ключей клиента

Аналогичным образом создаём ключи для клиента. Команда та же:

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

Наш конфигурационный файл сервера будет находится по пути /etc/wireguard/wg0.conf и будет выглядеть следующим образом:

Файл разделен на две секции:

  • Interface — настройка сервера;
  • Peer — настройка клиентов, которые могут подключаться к серверу, секций Peer может быть несколько.

В данном случае мы настраиваем сервер WireGuard для работы с IPv4 и IPv6 одновременно, вот, что значат основные параметры:

  • Address — адрес сервера в сети VPN;
  • ListenPort — порт, на котором будет ожидать подключения WireGuard;
  • PrivateKey — приватный ключ сервера, сгенерированный ранее;
  • PostUp — команда, которая выполняется после запуска сервера. В данном случае включается поддержка MASQUERADE для интерфейса enp0s8, а также разрешается прием пакетов на интерфейсе wg0. Сетевые интерфейсы вам придется заменить на свои.
  • PostDown — выполняется после завершения работы WireGuard, в данном случае удаляет все правила, добавленные в PostUp.

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

  • PublicKey — публичный ключ клиента, сгенерированный ранее;
  • AllowedIPs — IP адрес, который может взять клиент. Обратите внимание, маска для IPv4 должна быть 32.

Теперь можно переходить к созданию конфигурационного файла непосредственно для клиента.

Для запуска сервера используйте такую команду:

Для остановки выполняем:

С помощью systemd можно настроить автозагрузку сервиса:

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

Конфигурационный файл клиента будет выглядеть примерно так:

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

  • PrivateKey — приватный ключ клиента, сгенерированный ранее;
  • Address — IP адрес интерфейса wg0 клиента;
  • DNS — серверы DNS, которые будут использоваться для разрешения доменных имён;
  • PublicKey — публичный ключ сервера, к которому надо подключится.
  • Endpoint — здесь надо указать IP адрес сервера, на котором установлен WireGuard и порт;
  • AllowedIPs — IP адреса, трафик с которых будет перенаправляться в сеть VPN, в данном примере выбраны все адреса.

После того, как вы внесли все изменения, скопируйте файл на компьютер клиента под именем /etc/wireguard/wg0.conf.

Ставим WireGuard на клиенте, копируем конфигурационный файл клиента в /etc/wireguard/wg0.conf. Подключение выполняется аналогично запуску сервера:

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

Проверка работы

Чтобы убедиться что всё работает можно выполнить ping до сервера WireGuard. Он должен быть доступен:

Если пакеты идут, значит всё хорошо. Если же нет, надо внимательно проверять инструкцию и смотреть что сделано не так. У WireGuard здесь есть проблемы. У программы нет подробных логов, где можно было бы посмотреть какая ошибка произошла, а причин проблем может быть очень много. Чаще всего — это несоответствующие ключи, закрытый порт или неверный адрес сервера. Доступность порта на сервере можно проверить с помощью утилиты nc. Надо запускать на клиентской машине:

Также можно убедится, что пакеты WireGuard доходят к серверу, для этого используйте tcpdump на сервере:

WireGuard — a fast and modern VPN

WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It can be a useful replacement for IPSec or OpenVPN.

Installation

WireGuard is packaged in as wireguard which pulls in wireguard-tools. If the installed Linux kernel doesn’t have builtin wireguard support (which it indicates by providing the virtual package wireguard-modules), wireguard-dkms will also be pulled in as a dependency.

On DebianBuster, wireguard is available from Backports. If your sources list contains the backports stanza, you can install wireguard by

On DebianBullseye and later you may use command:

The packages for DebianUnstable and DebianTesting also work on DebianJessie and DebianStretch. You can install them by following the Wireguard installation instructions, which boil down to:

Note that if the module is built with dkms you should ensure you have rebooted in to your most recent kernel update before installing.

Configuration — Debian Peers

Step 1 — Generating Keypairs

You need to generate key pairs for server and clients. To generate key pairs:

Make sure that you protect the privatekey file, e.g. via appropriate file permissions.

Step 2 — Configuration

Step 2 — Alternative A — Manual Configuration

You need to enable the following in /etc/sysctl.conf

to reload settings

In server create /etc/wireguard/wg0.conf. Open UDP port 51820 and change your interface for iptables (eth0).

Now, in client create /etc/wireguard/wg0.conf.

You may enable systemd by default in server and client by

For testing purposes, it may be sufficient to use wg-quick directly — see the wg-quick(8) man page (upstream version) and quickstart instructions.

Step 2 — Alternative B — /etc/network/interfaces

The following configuration examples focus on using /etc/network/interfaces as much as possible.

For a host with static network configuration (such as a server), using /etc/network/interfaces is often the preferred way.

Point-to-point tunnel

This example builds a simple point-to-point tunnel between two machines.

You can then simply add routes through the tunnel, either statically, or dynamically using e.g. OSPF or BGP. For static routes:

VPN client with default route

This allows a "client" to connect to a server, and redirect its default route through the tunnel. This example uses wg-quick, make sure you understand what it does to your routing tables!

Step 2 — Alternative C — systemd

systemd has native support for setting up WireGuard interfaces since version 237 (available in buster and stretch-backports).

First, create a systemd.netdev(5) file ending in .netdev and place it in /etc/systemd/network, for example as /etc/systemd/network/wg0.netdev:

Note that the above example assumes that you are setting up a "client" to connect to a server. If you are instead setting up a server, you probably want much more restricted AllowedIPs entries. Also, on a server you would typically have several WireGuardPeer sections.

The .netdev file contains security-sensitive data (the private key) and should have appropriate file permissions:

Second, create a matching systemd.network(5) file ending in .network and place it in /etc/systemd/network, for example as /etc/systemd/network/wg0.network:

Now tell systemd to reload its configuration and start systemd-networkd(8):

Step 2 — Alternative D — systemd with wg-quick

Assuming the user has a valid configuration file, by example /etc/wireguard/wg0.conf, one can simply do:

Step 2 — Alternative E — NetworkManager

NetworkManager has had support for WireGuard since version 1.16 (i.e. in DebianTesting and DebianUnstable).

This support does not yet include a GUI for configuring WireGuard interfaces, meaning that the configuration has to be done using the command line for now.

See this blog post for more details.

Step 3 — Check the end result

You can check the status of your new interface by using e.g.:

And, if you’ve let systemd create the interface, by using:

Configuration — Mobile Clients

WireGuard has a user space implementation for mobile devices available via the WireGuard app — available for Android and iOS (a full list of supported operating systems is available here).

The client can be configured in several ways:

Alternative A — Create configuration manually

This is self-explanatory, you actually create the config on the mobile device then transfer the relevant keys to the server’s config.

Alternative B — Create configuration from archive

Here you have to create a .zip archive of the client configuration file, transfer it to the device then import it into the app.

Alternative C — Import by reading a QR code (most secure method)

The mobile client as of version 0.0.20180724 supports QR code based input.

qrencode can be used to generate qr codes, even in a terminal/console using UTF8 characters.

This will generate a QR code that is readable by the mobile client.

The advantage of this approach is that there is no need to transfer sensitive information via data channels that can potentially be compromised and there is no need for any additional software.

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

В начале я расскажу как, ну а потом уже зачем использовать WireGuard для построения VPN туннелей. В этой статье я подробно опишу как «связать» между собой внешний сервер с операционной системой Debian и домашний маршрутизатор серии Keenetic.

Как установить WireGuard на Debian или Ubuntu

В репозиториях Debian 10 и Ubuntu 20.04 уже есть пакет WireGuard, поэтому для его установки вам достаточно выполнить одну команду:

в зависимости от ваших привилегий в операционной системе.

Как создать публичный и приватный ключи WireGuard

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

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

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

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

Создадим приватный и публичный ключи на сервере с операционной системой Debian

Для удобства сделаем отдельную директорию для хранения файлов ключей:

А затем создадим ключи для сервера и сохраним их.

Аналогичным способом создадим приватный и публичный ключи клиента.

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

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

Сгенерированные таким способом ключи клиента являются «серверными» для самого клиента. Важно понимать это при настройке устройств. Логичнее именовать файлы с ключами не используя привилегии клиент-сервер, а как в моем примере, unit1, unit2 и т.п. (unit — блок, узел).

Файл конфигурации сервера WireGuard

Создайте любым удобным для вас способом файл конфигурации сервера /etc/wireguard/wg0.conf со следующим содержимым. Я, как правило, использую для этого редактор файлового менеджера Midnight Commander.

Разделов [Peer] в файле конфигурации WireGuard может быть несколько.

Обратите внимание, что при построении VPN тоннеля WireGuard в файле конфигурации первого устройства мы указали приватный ключ сервера (unit1-private) и публичный ключ клиента (unit2-public).

При конфигурации второго устройства VPN WireGuard мы должны использовать unit2-private в качестве ключа сервера, а unit1-public в качестве ключа клиента.

Более наглядно покажу на рисунке:

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

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

Файл конфигурации клиента WireGuard

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

Настройка маршрутизатора серии Keenetic в качестве клиента будет описана чуть ниже.

Запуск WireGuard на Debian и Ubuntu

В случае systemd используйте следующую команду для запуска сервиса WireGuard:

Для автозапуска WireGuard при включении сервера выполните следующий код в консоли:

Как установить WireGuard на маршрутизаторе Keenetic

В роутерах торговой марки Keenetic необходимо установить компонент операционной системы Wireguard VPN:

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

И настроить его в разделе «Другие подключения»:

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

Добавьте данные сервера:

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

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

Для чего используют VPN

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

Таким способом вы можете объединить системы находящиеся в разных городах и даже странах.

Обход блокировок Рунета

Одним из частных случаев использования VPN является обход блокировок доступа к тем или иным сайтам.

Не всегда заблокированные сайты «плохие». Вот реальный пример блокировки доступа к сайту М.Видео. Вот уже несколько дней вся подсеть моего провайдера заблокирована и посетить этот интернет магазин невозможно.

Как установить и настроить WireGuard VPN на сервере Debian и маршрутизаторе Keenetic

А во время «ковровых бомбардировок» РКН (Роскомнадзор) проблем бывает еще больше, достаточно вспомнить попытки заблокировать мессенджер Телегам в России. Тогда пострадало много невинных ресурсов, один из них — сайт архиватора 7-zip.org, доступ к которому можно было получить только через зарубежные VPN.

Почему WireGuard?

Это «свежий» VPN с открытым исходным кодом. В нем используется самая современная криптография. Он прост в настройке и потребляет мало ресурсов, что особенно важно при его работе на домашнем роутере. Он кроссплатформенный и может работать практически где угодно.

Как установить Wireguard на Debian 10

В этом руководстве мы покажем вам, как установить Wireguard на Debian 10. Для тех из вас, кто не знал, WireGuard — это бесплатный, современный и быстрый VPN-сервер с открытым исходным кодом с современной криптографией. . Это быстрее и проще по сравнению с IPSec и OpenVPN. Он кроссплатформенный и может работать практически где угодно, включая Linux, Windows, Android и macOS.

В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ sudo ‘ к командам для получения привилегий root. Я покажу вам пошаговую установку Wireguard VPN на Debian 10 (Buster).

Установите Wireguard на Debian 10 Buster

Шаг 1. Перед запуском приведенного ниже руководства важно убедиться, что ваша система обновлена, выполнив следующие apt команды в терминале:

Шаг 2. Установка Wireguard на Debian 10.

Просто веселое видео для отвлечения и расслабления в течение 2 минут

WireGuard доступен из репозиториев Debian backports. Теперь мы добавляем репозиторий в вашу систему Debian:

После этого обновите apt кеш и установите WireGuard, используя следующую команду:

Шаг 3. Настройте WireGuard VPN.

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

Затем создайте новый файл со следующим содержимым: wg0 . conf

Добавьте следующие строки:

Сохраните и установите права доступа к файлу:

После этого запустите WireGuard и включите его при загрузке:

Шаг 4. Настройте брандмауэр.

Я предполагаю, что у вас настроен UFW, и мы собираемся открыть порт UDP 51820, используя ufw следующую команду:

Затем добавьте следующие правила, чтобы разрешить соединения SSH и WireGuard:

Поздравляю! Вы успешно установили Wireguard . Благодарим за использование этого руководства для установки последней версии Wireguard VPN в системе Debian. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Wireguard .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *