Установка и настройка Wireguard клиентов на Android, iPhone, Windows, Linux
Для всех инструкций у вас должен быть на руках конфиг от человека, который держит Wireguard сервер.
Конфиг или файл конфигурации — это файл, содержащий в себе настройки для подключения к серверу. Он удобен тем, что его можно просто импортировать в приложение и оно настроится автоматически.
Для каждого устройства лучше иметь отдельный конфиг. Если вы подключитесь с двух устройств с помощью одного конфига, то произойдёт коллизия и как минимум одно устройство не сможет подключиться.
Указание DNS сервера в конфиге клиента необходимо для iOS и Windows. А в Linux это скорее создаст проблемы с resolvconf.
Если у вас есть исправления/дополнения к этой инструкции, пишите в комментариях.
Android#
Скачать приложение Wireguard из Google Store
Оно также есть в F-Droid
Теперь нужно открыть приложение и добавить конфиг. В приложении нажмите на кнопку с плюсом и выберите вариант “Import from file or archive”
Перейдите в директорию, где у вас лежит файл с конфигурацией. Например, если вы его скачали из телеграма, то Downloads — Telegram. Выбирайте файл “$name.conf” Конфигурация импортирована
Для запуска нажмите на переключатель около импортированного конфига. Теперь весь трафик с телефона ходит через Wireguard туннель и, скорее всего, у вас отобразится значок VPN в трее.
Проверьте, что интернет работает и трафик идёт через VPN. Для этого можно воспользоваться одним из сайтов, показывающих ваш внешний IP адрес, например https://ifconfig.co/
Обратите внимание на страну, должна отобразиться та, в которой находится сервер с Wireguard — у меня это Финляндия.
Для включения и выключения VPN вам придется заходить в приложение и дергать переключатель. Что бы не заходить каждый раз в приложение, вынесите переключатель в быстрый доступ. Например, в MIUI опустите панель состояния и выберите редактировать (значок листа бумаги с ручкой). Из нижней панели выберите значок Wireguard, нажмите на него и зажав переместите куда удобно.
iPhone#
Скачать приложение Wireguard из App Store
Теперь нужно открыть приложение и добавить конфиг. В приложении нажмите на кнопку Add a Tunnel (Добавить туннель) по центру или иконку с плюсом справа сверху и выберите вариант “Import from file or archive” (Создать из файла или архива)
Перейдите в директорию, где у вас лежит файл с конфигурацией. У файла конфигурации будет логотип Wireguard. Выбираете конфиг и разрешаете iOS “Добавление конфигурации VPN”.
Проверьте, что в вашем конфиге есть настройка DNS. Без этого в iOS не будет нормально работать туннель, при включенном туннеле. В приложении Wireguard нажмите “Править”. Если поле “DNS-серверы” заполнено, ничего менять не нужно. Если нет, то добавьте ip адрес какого-нибудь DNS сервера, например 8.8.8.8 и 1.1.1.1. Можно один, можно несколько через запятую.
Для запуска нажмите на переключатель около импортированного конфига. Теперь весь трафик с телефона ходит через VPN, и отобразится значок VPN в трее.
Проверьте, что интернет работает и трафик идёт через VPN. Для этого можно воспользоваться одним из сайтов, показывающих ваш внешний IP адрес, например https://ifconfig.co/
Обратите внимание на страну, должна отобразиться та, в которой находится сервер с Wireguard — у меня это Финляндия.
Для включения и выключения VPN, вам придется заходить в приложение и дергать переключатель. Или делать это через Настройки — VPN. В iOS нет способа из коробки как добавить ярлык в “Пункт управления”.
Windows#
Скачайте и установите приложение Wireguard с официального сайта
Нажмите “Import tunnel(s) from file” и выберите файл с конфигурацией.
Проверьте, что в вашем конфиге есть настройка DNS. Без этого туннель в Windows не будет нормально работать. В Wireguard приложении нажмите “Edit”, и в блоке Interface должен быть параметр DNS. Если он есть, ничего менять не нужно. Если нет, то после строки Address добавьте строку
После этого нажмите Save Можно указать ip адреса публичных или ваших частных DNS серверов на ваш вкус. Можно один, можно несколько через запятую.
Туннель добавлен и настроен. Для запуска нажмите “Activate”. Теперь весь трафик с компьютера ходит через VPN
Проверьте, что интернет работает, и трафик идёт через VPN. Для этого можно воспользоваться одним из сайтов, показывающих ваш внешний IP адрес, например https://ifconfig.co/
Обратите внимание на страну, должна отобразиться та, в которой находится сервер с Wireguard — у меня это Финляндия.
Запускать туннель можно двумя способами:
- Заходить в приложение и нажимать Activate
- В трее нажимать правой кнопкой на ярлык Wireguard, и левой на имя вашей конфигурации. При установке Wireguard прописывается в автозагрузку, и поэтому он всегда будет в трее.
Linux#
Для запуска Wireguard в Linux есть два стула:
- Консоль
- Плагин для Network-Manager
Wireguard поддерживается в Netwrok-Manager из коробки. Только проблема в том, что настраивать и управлять им можно только через nmcli. Для того, что бы иметь toggle в GUI Network-Manager, необходимо ставить плагин, как и для OpenVPN. Пакета с плагином нет в PPA, его нужно собирать из исходников.
Пока разберём только консольный вариант для Ubuntu 20.04. Для всех остальных линуксов настройка особо не отличается. Команды для установки можно найти на официальной странице
Копируем конфиг в директорию /etc/wireguard/. Нужно sudo
Используем wg-quick для поднятия и закрытия туннеля. Так же везде необходимо sudo, т. к. это создание интерфейса.
Имя конфигурации для wg-quick точно такое же, как имя файла конфига. Поднимаем
WireGuard + QR-code конфиг файла для мобильной версии клиента
2. Создание ключей для сервера и клиента и конфиг сервера
Генерация ключей сервера, приватного и публичного
Генерация ключей клиента, приватного и публичного
Настройка конфигурации сервера:
перед настройкой, узнайте имя интерфейса с публичным адресом, обычно eth0
вставим следующие строки:
Секция [Interface]
Address — виртуальный адрес для туннеля
ListenPort — порт соединения
PrivateKey — приватный ключ сервера
PostUp — действия после поднятия туннеля на интерфейсе wg0
PostDown — действия после отключеия туннеля на интерфейсе wg0
Секция [Peer]
PublicKey — публичный ключ клиента
AllowedIPs — выделенный(е) адрес(а) для клиента
3. Создание конфига клиента
Конфиг клиента практически похож на серверный:
Описание файла клиента:
Секция [Interface]
PrivateKey — приватный ключ клиента
Address — виртуальный адрес клиента
DNS — DNS сервера для клиента
Секция [Peer]
PublicKey — публичный ключ сервера
Endpoint — публичный адрес и порт сервера
AllowedIPs — разрешенные адрес(а) для клиента
PersistentKeepalive — опрос сервера каждые 25 секунд
Настраиваем собственный сервер VPN WireGuard (с IPv4 и IPv6) для настольного компьютера и смартфона Android
В прошлой статье мы расказали, как обходить блокировки веб-сайтов с помощью Tor в условиях его гипотетической блокировки с помощью системы DPI. Это позволит посетить любой веб-сайт, но у такого способа есть серьёзные минусы. Tor не предназначен для маршрутизации через его тоннель всего трафика с вашего компьютера. Хотя он и может использоваться таким способом, скорость при этом слишком низкая. Вместо этого предполагается использование Tor Browser, который заточен под анонимность, поэтому не сохраняет cookies, что делает повседневное использование крайне неудобным. Также доступ из Tor ко многим ресурсам заблокирован с их стороны или требует частого ввода капчи.
Что такое WireGuard и почему именно он?
Для маршрутизации всего вашего трафика через шифрованный тоннель мы предлагаем использовать VPN WireGuard. Сейчас это один из самых передовых протоколов. Он реализован для многих платформ, включая Linux, macOS, Windows, Android и iOS, а скоро должен появиться во FreeBSD и в OpenBSD. В качестве транспортного протокола используется UDP, что даёт низкие накладные расходы на передачу данных. В качестве алгоритма симметричного шифрования используется ChaCha20, который эффективно работает на множестве процессоров даже без аппаратного ускорения. Реализация очень компактная (для Linux это 5500 строк кода), включена в официальный код ядра Linux, а значит прошла хорошее рецензирование, поэтому не должна иметь проблем с безопасностью.
WireGuard следует философии UNIX: делать что-то одно и делать это хорошо. Поэтому в нём не предусмотрены многие возможности, например использование в качестве транспортного протокола TCP и обфускация трафика. В последнее время в различных источниках стали появляться сообщения о блокировке в России WireGuard с помощью системы DPI (IT и СОРМ, ЗаТелеком, ntc.party, ветка комментариев на Habr). Разве не становится такой минималистичный подход неприменимым в текущей ситуации?
Судя по всему, блокировка пока осуществляется по IP-адресам серверов конкретных известных поставщиков услуг VPN или по протоколу, но далеко не на всех портах. Это нас пока не волнует, поскольку мы будем настраивать собственный сервер и сможем указать альтернативный порт. Данное решение может оказаться временным, но тогда философия WireGuard тоже сыграет нам на руку, потому что мы сможем пробросить трафик в другой, уже более скрытный тоннель, например TCP, Tor или Shadowsocks с опциональной обфускацией. Гибкость такого подхода позволит нам выбрать решение в зависимости от ситуации. Мы постараемся предоставить соответствующие инструкции позже, а пока перейдём к настройке сервера WireGuard.
Настраиваем сервер WireGuard
Для следования инструкциям в данной статье вам понадобится любой сервер за пределами России с операционной системой Ubuntu 21.04 или подобной и статическим внешним IP-адресом. Можно купить виртуальный сервер, например на DigitalOcean (партнёрская ссылка).
Также необходимо владеть навыками работы в консольном текстовом редакторе. Можно использовать Vim или Emacs, но они требуют изучения. Самым простым вариантом для новичков будет Nano. Устанавливается командой sudo apt install nano . Вызывается командой sudo nano , которой можно дополнительно передать имя файла: sudo nano /foo/bar . Далее можно разобраться по подсказкам в нижней части экрана. Они означают сочетания клавиши Ctrl с другими клавишами.
Все дальнейшие команды необходимо исполнять не просто от имени суперпользователя, а в его окружении. Если вы не вошли от его имени по SSH (а мы рекомендуем отключать такую возможность, о чём подробнее будет сказано в конце статьи), то выполните команду sudo su .
Для начала нужно разрешить пересылку пакетов IP. В файле /etc/sysctl.conf раскомментируем следующие строки (удалим символ # в начале строки):
Применим новую конфигурацию:
Установим WireGuard и другие нужные пакеты:
Далее мы создадим файлы ключей и конфигурации. В целях безопасности необходимо ограничить доступ к ним только для суперпользователя, поэтому установим маску текущей сессии командной оболочки:
Сгенерируем ключи для сервера и пары клиентов (в дальнейшем мы будем подключать к VPN домашний компьютер и смартфон):
Выведем на экран сгенерированные ключи:
После окончания настройки сервера и клиентов или сейчас, если вы не собираетесь очищать экран, эти файлы можно удалить:
Теперь нужно выбрать порт и подсети IPv4 и IPv6. Мы будем использовать порт 37581 и подсети 10.73.105.0/24 и fd41:ce44:b4c9:44ca::/64 . Вы можете использовать их же или выбрать любой другой порт (от 1 до 65535, кроме 22, поскольку он используется для SSH) и любые подсети из 10.0.0.0/8 и fd00::/8 (если знаете, как их рассчитывать). Вопрос выбора порта особенно интересен, так как есть информация о блокировках WireGuard по порту, но мы не столкнулись ни с какими проблемами такого рода. На всякий случай рекомендуем не использовать стандартный порт 51820 .
Создадим файл /etc/wireguard/wg0.conf . Ключи нужно заменить на те, что мы сгенерировали. Название интерфейса eth0 у вас может отличаться, узнать его можно командой sudo ifconfig :
Теперь включим и запустим сервис:
Проверить работу сервера можно командой sudo wg show . На экране должна появиться следующая информация (ключи будут отличаться):
Настраиваем WireGuard на настольном компьютере
Здесь мы рассмотрим настройку WireGuard на настольном компьютере под управлением операционной системы Ubuntu 20.04 или подобной. Если вы используете другую операционную систему, то воспользуйтесь инструкциями из Интернета.
Повторим команды, которые мы уже использовали на сервере:
Теперь с помощью консольного текстового редактора создадим файл /etc/wireguard/wg0.conf . Ключи, опять же, нужно заменить на те, что мы сгенерировали. IP-адрес 164.90.178.225 замените на адрес вашего сервера:
Если вы использовали графический текстовый редактор, то файл нужно защитить явно:
Теперь включим и запустим сервис:
Проверить работу сервера можно командой sudo wg show . На экране должна появиться следующая информация (ключи и порт будут отличаться):
Узнать свой IP-адрес можно следующей командой:
Он должен совпадать с IP-адресом вашего сервера.
Если на вашем сервере настроен IPv6, то у вас он тоже будет работать, даже если ваш поставщик услуг Интернета не поддерживает его:
Настраиваем WireGuard на смартфоне Android
Для смартфонов под управлением операционной системы Android существует официальное приложение от оригинального разработчика WireGuard, доступное в Google Play Store и, конечно, для самостоятельной компиляции из исходного кода.
Интерфейс настройки повторяет структуру уже созданного нами ранее файла конфигурации для настольного компьютера, но мы всё-таки приведём пример заполнения полей. Опять же, нужно заменить ключи, IP-адрес и порт сервера на те, которые вы сгенерировали.
В секции “Interface”:
- Name: любое название
- Private key: SI+uObmWkwTXykuGk0E2LdClUvAmwkjRJA/XBo7//m4=
- Public key: QmmAJIv5U5eMynOHz6/b4zqtuEURhhaKxV+QVmHcRWQ= (должен появиться автоматически)
- Addresses: 10.73.105.3/32, fd41:ce44:b4c9:44ca::3/128
- DNS servers: 1.1.1.1
В секции “Peer” (нужно нажать кнопку “ADD PEER”):
- Public key: /Rv/4+vo9pGPRAL5EOAk/LkEy7nXdvKH4ZX5UkS78yA=
- Endpoint: 164.90.178.225:37581
- Allowed IPs: 0.0.0.0/0, ::/0
Также вы можете сгенерировать QR-код с вашей конфигурацией, который удобно считывать с помощью приложения WireGuard для смартфона. Для этого создайте где угодно файл конфигурации wg0.conf аналогичный тому, который мы создавали для настольного компьютера:
Теперь установить программу для генерации QR-кодов и запустите её:
Считайте этот QR-код с помощью приложения WireGuard для смартфона. Не забудьте после этого удалить файл конфигурации, так как он содержит ваш приватный ключ:
После включения VPN узнать ваш IP-адрес можно на сайте https://myip.com. Он должен совпадать с IP-адресом вашего сервера.
Безопасность
Теперь ваш VPN должен работать. Однако мы совсем не рассматривали вопросы безопасности.
Категорически важно обновить пакеты на вашем сервере и делать это регулярно (хотя бы раз в неделю):
Столь же важно включить аутентификацию в SSH по ключу вместо пароля или использовать очень длинный пароль (минимум 32 большие и маленькие цифры и буквы), а также сменить стандартный порт 22 на какой-нибудь другой (строка Port 22 в файле /etc/ssh/sshd_confg и команда sudo systemctl restart ssh.service для перезапуска).
Стоит запретить вход по SSH от имени суперпользователя. Для этого нужно создать другого пользователя, установить для него пароль и ключи SSH и раскомментировать в файле /etc/ssh/sshd_config строку PermitRootLogin no . Этот пользователь, хотя и будет иметь возможность исполнять команды от имени суперпользователя, должен требовать для этого ввод пароля. Таким образом, защита важных файлов будет состоять и из ключа, и из пароля.
Обычной практикой является использование сетевого экрана. В данном случае мы не видим в этом серьёзной необходимости, но всё-таки рекомендуем настроить его. Можно воспользоваться сетевым экраном вашего поставщика услуг VPS и самой операционной системы. Необходимо открыть порты SSH и WireGuard и запретить всё остальное. Следующие команды сохранят настройки и применят их даже после перезагрузки:
Проверить работу сетевого экрана можно командой sudo ufw status verbose .
В большинстве других случаев также рекомендуются такие практики, как настройка Fail2ban для предотвращения множественных попыток подключения по SSH или включение доступа по SSH только после простукивания портов (англ. port knocking), настройка мониторинга и сбора журналов. Однако это выходит за рамки данной статьи.
Есть три основные опасности, которые может представлять для вас незащищённый сервер VPN в случае его взлома:
- Перехват вашего нешифрованного трафика;
- Подмена DNS и дальнейшая подмена веб-сайтов, если переход изначально осуществлён по HTTP и без знания веб-браузером параметров HSTS (от англ. HTTP Strict Transport Security);
- Осуществление незаконных действий с вашего сервера.
Мы не считаем эти опасности очень критичными. При следовании советам из данной статьи они менее вероятны, чем, например, взлом домашнего маршрутизатора (англ. router), за безопасностью которых редко кто следит, насмотря на риски. Так что мы считаем, что если вы смогли выполнить указанные здесь инструкции, то вы вполне можете пользоваться собственным сервером VPN и не беспокоиться. Однако мы всё-таки надеемся, что вы не остановитесь на прочтении данного материала и подробнее изучите работу сетей и операционных систем. Хотя бы потому, что в современных условиях это может вам пригодиться, чтобы просто не потерять доступ в Интернет.
Как установить wireguard на телефон
WireGuard
Версия: 1.0.20220516
Последнее обновление программы в шапке: 18.05.2022
Краткое описание:
Подключение к VPN-серверам, используя современную криптографию.
Описание:
Это простое приложение для управления VPN туннелями WireGuard.