В начале я расскажу как, ну а потом уже зачем использовать WireGuard для построения VPN туннелей. В этой статье я подробно опишу как «связать» между собой внешний сервер с операционной системой Debian и домашний маршрутизатор серии Keenetic.
- Как установить WireGuard на Debian или Ubuntu
- Как создать публичный и приватный ключи WireGuard
- Создадим приватный и публичный ключи на сервере с операционной системой Debian
- Файл конфигурации сервера WireGuard
- Файл конфигурации клиента WireGuard
- Запуск WireGuard на Debian и Ubuntu
- Как установить WireGuard на маршрутизаторе Keenetic
- Для чего используют VPN
- Обход блокировок Рунета
- Почему WireGuard?
Как установить WireGuard на Debian или Ubuntu
В репозиториях Debian 10 и Ubuntu 20.04 уже есть пакет WireGuard, поэтому для его установки вам достаточно выполнить одну команду:
# apt install wireguard
или
$ sudo apt install wireguard
в зависимости от ваших привилегий в операционной системе.
Как создать публичный и приватный ключи WireGuard
После того как демон (сервис) WireGuard установлен для организации VPN тоннеля необходимо для каждого устройства создать два ключа: приватный и публичный. В минимальной конфигурации из 2-х участников всего нам понадобятся 4 ключа.
Ключи можно создать на любом устройстве как индивидуально только для него, так и для всех устройств сразу. Команда создания ключей одна, при каждом запуске она создает новый уникальный ключ (пару ключей).
Публичный ключ создается на основе приватного.
Ключ — это просто строка (набор символов), которую мы будем указывать в файлах конфигурации VPN WireGuard. Сгенерированные строки мы запишем в файлы с уникальными названиями, чтобы потом их (строки с набором символов) оттуда взять. Сами файлы ключей напрямую нигде не использутся.
Создадим приватный и публичный ключи на сервере с операционной системой Debian
Для удобства сделаем отдельную директорию для хранения файлов ключей:
cd ~
mkdir wireguard
cd wireguard
А затем создадим ключи для сервера и сохраним их.
wg genkey | tee unit1-private.key | wg pubkey > unit1-public.key
Аналогичным способом создадим приватный и публичный ключи клиента.
Команда создания приватного и публичного ключей для клиента ничем не отличается от указанной выше для сервера, изменим лишь имена файлов в которые сохраним сгенерированные ключи:
wg genkey | tee unit2-private.key | wg pubkey > unit2-public.key
Если к серверу планируется несколько подключений, то подобным способом можно создать ключи для остальных участников:
wg genkey | tee unit3-private.key | wg pubkey > unit3-public.key
wg genkey | tee unit4-private.key | wg pubkey > unit4-public.key
Сгенерированные таким способом ключи клиента являются «серверными» для самого клиента. Важно понимать это при настройке устройств. Логичнее именовать файлы с ключами не используя привилегии клиент-сервер, а как в моем примере, unit1, unit2 и т.п. (unit — блок, узел).
Файл конфигурации сервера WireGuard
Создайте любым удобным для вас способом файл конфигурации сервера /etc/wireguard/wg0.conf со следующим содержимым. Я, как правило, использую для этого редактор файлового менеджера Midnight Commander.
[Interface]
# IP-адрес сервера в виртуальной сети
Address = 172.29.111.1/24
# порт, на котором ожидать подключения
ListenPort = 64999
# приватный ключ сервера
PrivateKey = SNN6DRlhGKuG/12345Vn1jAhvIhcMDVwvMUjDRPUU=
[Peer]
# публичный ключ клиента
PublicKey = 8obhd57GKCXPR5M8W1Q2D67890hw6hskAmQkIYZQ4=
# назначить клиенту следующий IP-адрес
AllowedIPs = 172.29.111.2/32
Разделов [Peer] в файле конфигурации WireGuard может быть несколько.
Обратите внимание, что при построении VPN тоннеля WireGuard в файле конфигурации первого устройства мы указали приватный ключ сервера (unit1-private) и публичный ключ клиента (unit2-public).
При конфигурации второго устройства VPN WireGuard мы должны использовать unit2-private в качестве ключа сервера, а unit1-public в качестве ключа клиента.
Более наглядно покажу на рисунке:
Общее правило: Для организации связи каждое устройство должно иметь свой приватный ключ и публичные ключи устройств с которыми нужно организовать VPN туннель.
Файл конфигурации клиента WireGuard
Если сервер с операционной системой Debian выступает в роли клиента туннеля WireGuard, то его файл конфигурации будет отличаться от приведенного выше тем, что в нем указывается IP адрес сервера.
[Interface]
PrivateKey = Uni2-Private-key
Address = 172.29.111.2/24
[Peer]
PublicKey = Unit1-Public-key
#Адрес сервера и его порт
Endpoint = SERVER_IP_ADDRESS:64999
AllowedIPs = 0.0.0.0/0
Настройка маршрутизатора серии Keenetic в качестве клиента будет описана чуть ниже.
Запуск WireGuard на Debian и Ubuntu
В случае systemd используйте следующую команду для запуска сервиса WireGuard:
$ sudo systemctl start wg-quick@wg0
Для автозапуска WireGuard при включении сервера выполните следующий код в консоли:
$ sudo systemctl enable wg-quick@wg0
Как установить WireGuard на маршрутизаторе Keenetic
В роутерах торговой марки Keenetic необходимо установить компонент операционной системы Wireguard VPN:
И настроить его в разделе «Другие подключения»:
Добавьте данные сервера:
и клиента:
Если все сделали правильно, то туннель автоматически заработает и останется лишь настроить маршрутизацию трафика.
Для чего используют VPN
VPN используют для объединения в единую сеть нескольких компьютеров (серверов) через интернет. При этом доступ в эту сеть могут получить только устройства этой сети. То есть задача VPN не только передать информацию между вашими компьютерами, но и защитить ее (информацию) от посторонних глаз.
Таким способом вы можете объединить системы находящиеся в разных городах и даже странах.
Обход блокировок Рунета
Одним из частных случаев использования VPN является обход блокировок доступа к тем или иным сайтам.
Не всегда заблокированные сайты «плохие». Вот реальный пример блокировки доступа к сайту М.Видео. Вот уже несколько дней вся подсеть моего провайдера заблокирована и посетить этот интернет магазин невозможно.
А во время «ковровых бомбардировок» РКН (Роскомнадзор) проблем бывает еще больше, достаточно вспомнить попытки заблокировать мессенджер Телегам в России. Тогда пострадало много невинных ресурсов, один из них — сайт архиватора 7-zip.org, доступ к которому можно было получить только через зарубежные VPN.
Почему WireGuard?
Это «свежий» VPN с открытым исходным кодом. В нем используется самая современная криптография. Он прост в настройке и потребляет мало ресурсов, что особенно важно при его работе на домашнем роутере. Он кроссплатформенный и может работать практически где угодно.