October 7, 2021

Wireguard VPN. Быстрая настройка

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

Для начала необходимо настроить сервер Wireguard. Сервер можно настроить на домашнем ПК, роутере или на выделеном VPS. В этом примере я покажу настройку Wireguard сервера на бесплатном Amazon AWS с установленой Ubuntu 18.04 и клиентом под Android телефон.

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

Добавляем официальный репозиторий Wireguard (если у вас Ubuntu версии выше чем 19.04 - этот пункт можно пропустить):

Обновляем систему:

Настраиваем часовой пояс на системе, чтобы правильно отображались логи:

Устанавливаем заголовки ядра:

Устанавливаем сервер Wireguard:

Генерируем приватный и публичный ключи для сервера Wireguard:

Генерируем приватный и публичный ключи для мобильного клиента:

Создаем и редактируем файл настройки Wireguard сервера wg0.conf:

В этот файл записываем следущее:

Всё что выделено жирным - настраиваем под себя
Сохраняем файл: Ctrl+S --> Ctrl+X

Делаем из системы маршрутизатор:

Поднимаем Wireguard сервер:

Проверяем, что интерфейс wg0 поднялся и ждет клиентов:

Добавляем в автозапуск, чтоб после перезагрузки системы сервер поднимался автоматически:

Всё! Вот так просто мы настроили серверную часть Wireguard.

---------------
Настройка клиента Wireguard на Adnroid телефоне:

Для телефона на Android устанавливаем соответствующий клиент в официальном Маркете.
Открываем приложение, далее нажимаем на "плюс" --> <IMPORT FROM FILE OR ARCHIVE>
И выбираем заранее подготовленый файл mobile.conf

Файл должен содержать следущее:

Всё что выделено жирным - настраиваем под себя

На этом всё!

---------
В дополнение:

Настройка минимальной защиты сервера в виде firewall:

Сами файлы wg0.conf и mobile.conf с примером под мой сервер:

На основе данного манаула по настройке wireguard и unbound, и правил для iptables написал на bash+python скрипт для авто настройки wireguard на сервере

-----

Что делает скрипт:

- Включает и настраивает автоматическое обновление пакетов безопасности системы unattended upgrades

- Добавляет в систему пользователя u2998 и включает его в группу sudo

- Настраивает SSH: Меняет стандартный (22) порт на 55933 Запрещает доступ root пользователю по SSH

- Настраивает wireguard и генерирует ключи для сервера и клиента

- Настраивает DNS сервер unbound, чтобы DNS запросы шли внутри wireguard туннеля

- Создает правила для iptables, которые оставляют открытыми только порты 55933 для SSH 57800 для wireguard

Сам скрипт