Wireguard vpn keenetic что это
WireGuard — прекрасный VPN будущего?
Наступило время, когда VPN уже не является каким-то экзотическим инструментом бородатых сисадминов. Задачи у пользователей разные, но факт в том, что VPN стал нужен вообще всем.
Проблема текущих VPN решений в том, что их тяжело правильно настроить, дорого обслуживать, а так же в них полно legacy кода сомнительного качества.
Несколько лет назад канадский специалист по информационной безопасности Jason A. Donenfeld решил, что хватит это терпеть, и начал работу над WireGuard. Сейчас WireGuard готовится к включению в состав ядра Linux, он даже получил похвалы от Линуса Торвальдса и в американском сенате.
Заявленные преимущества WireGuard над другими VPN решениями:
Неужели найдена серебрянная пуля? OpenVPN и IPSec пора закапывать? Я решил с этим разобраться, а заодно сделал скрипт для автоматической установки личного VPN сервера.
Принципы работы
Принципы работы можно описать примерно так:
Вся основная логика WireGuard занимает менее 4 тысяч строк кода, тогда как OpenVPN и IPSec имеют сотни тысяч строк. Для поддержки современных криптоалгоритмов предлагается включить в состав ядра Linux новый криптографический API Zinc. В данный момент идет обсуждение, насколько это удачная идея.
Производительность
Максимальное преимущество в производительности (по сравнению с OpenVPN и IPSec) будет заметно на Linux системах, так как там WireGuard реализован в виде модуля ядра. Кроме этого поддерживаются macOS, Android, iOS, FreeBSD и OpenBSD, но в них WireGuard выполняется в userspace со всеми вытекающими последствиями для производительности. Поддержку Windows обещают добавить в ближайшем будущем.
Результаты бенчмарков с официального сайта:
Мой опыт использования
Я не эксперт по настройке VPN. Однажды настраивал OpenVPN ручками и это было очень муторно, а IPSec даже и не пытался. Слишком много решений нужно принимать, очень легко выстрелить себе в ногу. Поэтому я всегда пользовался готовыми скриптами для настройки сервера.
Так вот, WireGuard, с моей точки зрения, вообще идеален для пользователя. Все низкоуровневые решения приняты в спецификации, поэтому процесс подготовки типичной VPN инфраструктуры занимает всего несколько минут. Нафакапить в конфигурации практически невозможно.
Процесс установки детально описан на официальном сайте, отдельно хочется отметить отличную поддержку OpenWRT.
Генерируются ключи шифрования утилитой wg :
Далее, нужно создать серверный конфиг /etc/wireguard/wg0.conf со следующим содержанием:
и поднять туннель скриптом wg-quick :
На клиентской машине, создать конфиг /etc/wireguard/wg0.conf :
И точно так же поднять туннель:
Осталось настроить NAT на сервере, чтобы клиенты могли выходить в Интернет, и все готово!
Такую простоту использования и компактность кодовой базы удалось достичь за счет отказа от функционала дистрибьюции ключей. Здесь нет сложной системы сертификатов и всего этого корпоративного ужаса, короткие ключи шифрования распространяются примерно как SSH ключи. Но в связи с этим возникает проблема: WireGuard будет не так просто внедрять в некоторых уже существующих сетях.
Из недостатков стоит отметить, что WireGuard не заработает через HTTP proxy, поскольку в качестве транспорта есть только протокол UDP. Возникает вопрос, возможно ли будет обфусцировать протокол? Конечно, это не прямая задача VPN, но для OpenVPN, например, существуют способы маскировки под HTTPS, что помогает жителям тоталитарных стран полноценно пользоваться Интернетом.
Выводы
Подводя итог, это очень интересный и перспективный проект, можно уже сейчас использовать его на личных серверах. Какой профит? Высокая производительность на Linux системах, простота настройки и поддержки, компактная и читабельная кодовая база. Однако, бросаться переводить комплексную инфраструктуру на WireGuard еще рано, стоит подождать включение в состав ядра Linux.
Для экономии своего (и вашего) времени я разработал автоматический установщик WireGuard. С его помощью можно поднять личный VPN для себя и своих знакомых даже ничего в этом не понимая.
Как настроить WireGuard, ваш собственный VPN нового века
Напоминаем, что все действия, описанные в статье, пользователь делает на свой страх и риск. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.
⇡#Что такое WireGuard и зачем он нужен?
WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от «мастодонтов» вроде OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.
Как и было заявлено в анонсе, мы рассматриваем сценарий защиты подключения к публичным и другим недоверенным сетям. Естественно, этим использование WireGuard не ограничивается. В качестве примера рассмотрим настройку клиентов и сервера (правда, в данном случае это условные понятия — в силу специфики протокола), работающего в облаке и на домашнем роутере Keenetic. Как показывает практика, многие публичные VPN-сервисы не отличаются щепетильностью в отношении данных клиентов, поэтому всегда лучше иметь что-то своё, подконтрольное только пользователю. В нашем случае мы рассматриваем установку и настройку WireGuard, используя для этого компьютер на Windows и облачную виртуальную машину на Ubuntu.
Нам понадобится полный набор PuTTY, так что лучше скачать сразу MSI-пакет с инсталлятором (доступен по предыдущей ссылке), который всё установит и создаст новую группу в главном меню. Там нам нужна утилита PuTTYgen. После запуска генерируем новую пару ключей с настройками по умолчанию (RSA-2048), нажав кнопку Generate и поводив с полминуты мышкой в окне утилиты. Осталось заполнить несколько полей: в Key comment можно ввести название ключа в качестве напоминания, а в Key passphrase и Confirm passphrase ввести один и тот же пароль.
⇡#Настройка сервера Vscale
Vscale — российский облачный провайдер, имеющий собственные площадки в Москве и Санкт-Петербурге и предлагающий неплохие конфигурации по низким ценам. Самый дешёвый сервер, мощностей которого вполне достаточно для наших задач, обойдётся в 200 руб./месяц. Хранение снапшота стоит ещё 40 руб./месяц. И его тоже можно перенести из одного региона в другой. Зато никаких ограничений по трафику нет.
Специально для читателей 3DNews Vscale подготовила промокод 3DNEWS500, чтобы можно было ознакомиться со всеми возможностями сервиса. После регистрации надо пополнить баланс хотя бы на 100 рублей или привязать банковскую карту. Затем промокод надо активировать на этой странице. Код будет действовать до 23:59:59 18.02.2020.
Интерфейс сервиса доступен на русском языке. Разобраться в нём просто, так что коротко опишем основные этапы. Для работы первым делом нужно в настройках аккаунта добавить публичный SSH-ключ, полученный в PuTTYgen. Затем в разделе серверов создать новый сервер с ОС Ubuntu 18.04, указав нужный регион, тариф и ключ. В течение минуты сервер будет готов и запущен.
Отдельного SSH-клиента для доступа к командной строке не требуется, так как Vscale предоставляет веб-консоль. Для входа вводим логин root и нажимаем Enter, далее по одной вводим нижеприведённые команды и на всё соглашаемся, нажимая Enter:
Пара замечаний на случай использования других облачных провайдеров. Во-первых, для Ubuntu 19.10 и более свежих версий ОС добавлять ppa не надо, достаточно будет первых двух команд. Во-вторых, доступ к командной строке возможен с помощью PuTTY. В поле Host Name надо ввести IP-адрес сервера, а в разделе Connection → SSH → Auth — путь до приватного ppk-ключа. Логин root, а пароль тот, что был указан при создании ключа (Key passphrase). Для удобства можно сохранить сессию (Save). По нажатии кнопки Open откроется окно консоли, при первом запуске предваряемое уведомлением о безопасности, с которым надо согласиться.
Обратите внимание, что даже за выключенным сервером сохраняются ресурсы, которые точно так же оплачиваются. Поэтому ненужный сервер надо удалять. Если VPN необходим не на постоянной основе, а лишь иногда, то можно сохранить все настройки, создав снапшот (бэкап). Сам снапшот можно перенести в другой регион и при создании нового сервера выбрать именно его в качестве основы. Создавать снапшот надо строго после завершения настройки VPN-сервера и весьма желательной в этом случае установки DDNS-клиента, выключив сервер непосредственно перед созданием бэкапа.
⇡#Настройка VPN-сервера WireGuard
Для настройки сервера WireGuard не будем мудрствовать лукаво, а воспользуемся открытым решением easy-wg-quick. Данный скрипт автоматически формирует файлы конфигурации и позволяет легко манипулировать настройками. Предварительно надо установить сам wireguard и некоторые дополнительные утилиты. В веб-консоли Vscale или в PuTTY вводим следующие команды, нажимая Enter после каждой:
При первом запуске скрипт по умолчанию создаст конфигурационный файл для сервера и для одного клиента, а также выведет QR-код, который можно отсканировать в мобильном приложении WireGuard, чтобы тут же получить все необходимые настройки.
Чтобы добавить настройки ещё для одного клиента (ноутбука, например), надо ещё раз выполнить эту же команду, указав имя нового профиля:
Например, для имени профиля win10 будет создан соответствующий файл wgclient_win10.conf. Его содержимое можно просмотреть командой cat, что пригодится при настройке клиента WireGuard в будущем.
После добавления всех нужных профилей осталось лишь добавить сервер WireGuard в автозапуск и включить его:
Для просмотра текущих подключений используйте эту команду:
⇡#Настройка VPN-клиента WireGuard
Клиенты для Windows, Android, iOS и других ОС можно скачать на сайте WireGuard. С мобильными версиями всё просто — достаточно отсканировать QR-код. Или же, как и для всех остальных клиентов, вручную скопировать настройки из файлов wgclient_*.conf. Из дополнительных опций там есть только возможность исключить доступ через VPN для выбранных пользователем приложений: Excluded Applications в настройках профиля.
В случае Windows-клиента в меню левой нижней кнопки надо выбрать Add empty tunnel, вставить в новом окне всё содержимое conf-файла, указать имя профиля (Name). Опционально можно включить функцию kill-switch для блокировки любого трафика вне VPN-подключения. Наконец, надо сохранить (Save) и активировать (Activate) соединение. Для проверки корректности подключения проще всего зайти на какой-нибудь сайт, определяющий текущий внешний IP-адрес.
В актуальных моделях роутеров Keenetic с прошивкой версии 3.3 или старше также появилась поддержка VPN-подключений WireGuard — нужно установить одноимённый компонент. Чтобы импортировать настройки соединения, нужно сохранить содержимое файла wgclient_*.conf (см. выше) в текстовый документ, а затем в разделе «Другие подключения» загрузить параметры из этого файла. Роутер создаст на их основе новое подключение, которое нужно активировать переключателем в левой части списка.
Для корректной работы надо сделать несколько небольших изменений (кстати, после каждого действия не забывайте нажимать кнопку «Сохранить» в нижней части веб-интерфейса). Во-первых, включить галочку «Использовать для входа в Интернет». Во-вторых, поле «Разрешенные подсети» привести к виду 0.0.0.0/0. В-третьих, в разделе «Приоритеты подключений» перетащить свежесозданное подключение выше всех остальных.
После этого все клиенты, подключённые к роутеру, по умолчанию будут выходить в Интернет через VPN-туннель. Если же необходим доступ только для некоторых устройств, то лучше завести отдельный профиль.
Обратите внимание, что для каждого клиента нужно будет сгенерировать и скопировать собственный conf-файл. Если на предыдущем этапе вы настроили DDNS-клиент на сервере, то в разделе Endpoint у всех клиентов надо будет прописать DDNS-имя вместо IP-адреса.
⇡#Настройка WireGuard для Keenetic: сервер и мобильный клиент
В самом начале мы уже упоминали, что принципиального различия между сервером и клиентом в случае WireGuard нет. И раз уже поддержка этого протокола доступна в прошивке, то можно настроить подключение клиентов к роутеру. В текущей версии не все настройки вынесены в веб-интерфейс, но ничего сложного всё равно нет. Единственное требование — наличие «белого» внешнего IP-адреса, пусть даже динамического (в этом случае поможет DDNS).
В разделе «Другие подключения» в секции WireGuard нужно добавить новое подключение. Указываем имя (любое) и ставим галочку «Генерация ключей» (Generate a random key pair). В поле «Адрес» надо ввести любой подходящий адрес из частного диапазона, но такой, чтобы он не пересекался с другими сетями на самом роутере. В качестве примера используем 10.11.12.1/24. Номер порта можно указать произвольный, лишь бы он не блокировался провайдером и не совпадал с уже открытыми портами для других сервисов. В нашем примере это 55555. Наконец, в поле DNS надо указать адрес любого публичного DNS-сервера.
Следующий этап — добавление пиров (клиентов) соответствующей кнопкой. Имя указываем любое, а в поле «Разрешённые подсети» вводим 0.0.0.0/0. Теперь открываем на смартфоне мобильное приложение WireGuard и добавляем новое подключение — Create from scratch. В разделе Interface указываем имя (любое) и жмём кнопку Generate. Содержимое поля Public Key копируем и вставляем в настройках пира на роутере в поле «Публичный ключ». В поле Addresses указываем частный IP-адрес из той же подсети, что и для роутера. В нашем примере у него был 10.11.12.1/24, так что для клиента возьмём просто следующий: 10.11.12.2/24. DNS опять же любой публичный.
В разделе Peers в поле Public keys копируем содержимое поля «Публичный ключ» роутера, в Allowed IPs вводим 0.0.0.0/0, а в Endpoint вводим внешний IP-адрес роутера (или DDNS-имя) и порт через двоеточие, то есть для нашего примера должна получиться конструкция вида xx.xx.xx.xx:55555. Опционально можно включить функцию поддержки активности подключения, указав время в секундах в поле Persistent keepalive на клиенте и в поле «Проверка активности» в параметрах пира на роутере. Обычно достаточно интервала от 3 до 30 секунд. Для остальных клиентов придётся повторить эту же процедуру добавления новых пиров.
Но это ещё не всё. После добавления пиров необходимо разрешить им доступ в локальную сеть и в Интернет. В разделе «Межсетевой экран» надо найти WireGuard-подключение — ориентируйтесь по имени, оно может быть в выпадающем меню сверху — и завести для него новое разрешающее правило (см. скриншот выше). Также надо будет подключиться к роутеру по telnet с помощью PuTTY и ввести несколько команд. Адрес по умолчанию my.keenetic.net, логин и пароль те же, что для доступа к веб-интерфейсу, команды приведены ниже:
Наконец, после всех этих действий надо активировать WireGuard-соединение. Если всё прошло успешно, то после подключения клиента напротив пира будет гореть зелёный кружочек и показываться статистика по трафику. Только учтите, что производительность роутера всё-таки намного меньше, чем у любого облачного сервера. Так что приличную скорость соединения он обеспечит ценой нагрузки на CPU маршрутизатора, что может повлиять на работу других сервисов.
Напоследок напомним «народную» мудрость: на VPN надейся, а сам не плошай. Проще говоря, надо всегда соблюдать осторожность и цифровую гигиену. К совсем уж подозрительным сетям и вовсе подключаться не надо, да и про базовые правила забывать не стоит. Их не так уж много: вовремя ставить обновления ОС и ПО, использовать двухфакторную аутентификацию, тщательно выбирать используемые программы, проверять разумность запросов ПО на доступ к различным ресурсам устройства, обзавестись современным антивирусом. Всё это касается и смартфонов, и планшетов, и ноутбуков, и десктопов.
VPN на Wireguard для полных новичков
Это подробная инструкция по настройке личного VPN на протоколе Wireguard, чтобы обходить блокировки Роскомнадзора и защищаться от хакеров в чужих Wi-Fi с компьютеров и телефонов. По шагам, с картинками, для самых маленьких.
Если вы в России, у вас наверняка не работает LinkedIn или тормозит Twitter, а в месте с ним и половина интернета. VPN поможет нивелировать вредительство провайдеров и государственных органов. Кроме того, в общедоступных Wi-Fi точках, к которым вы подключаетесь в кафе, могут сидеть мамкины хакеры, которые перехватывают трафик и могут украсть у вас данные или подсунуть вирус. Достаточно включить VPN, и ваш трафик станет для таких вредителей недоступен.
Содержать VPN-сервер стоит денег, потому что где-то должен работать компьютер с серверной программой, и кто-то должен платить за электричетсво и работу инженеров. Если не платите вы, значит платит кто-то другой. В замен этот другой получает что-то ценное, например ваши персональные данные, которые затем можно использовать для мошенничества или шантажа. Не пользуйтесь бесплатными VPN-сервисами.
Конечно, у платных VPN есть свои плюсы, например быстрое переключение между локациями (чтобы сменить сервер с Германии на США, например), особо продвинутые средства обхода блокировок и тому подобное. К счастью, в России блокировки осуществляются довольно просто, и для их обхода такие сервисы избыточны.
Вам понадобится VPS — самый дешёвый хостинг в стране, где блокировок нет. Мои рекомендации:
Или любой другой сервер на Ubuntu за пределами России, к которому у вас есть root-доступ.
За каждого нового клиента на VPS по ссылкам, которые я указал вначале, мне перепадает несколько долларов. Этого как раз хватает на оплату хостинга для этого блога. Если вы зарегаетесь через мои ссылки — мне будет приятно.
Шаг 1 — Запустите VPS
Нужен самый простой сервер на Ubuntu 20.04 или новее.
Шаг 2 — Подключитесь к VPS
Шаг 3 — Установите Wireguard
Мы воспользуемся готовым скриптом от доброго человека.
На этом этапе у вас есть установленный и работающий сервер WireGuard. Теперь нужно создать учётные записи для подключения с компьютера и телефона.
Шаг 4 — Создайте учётные записи
Сразу после установки WireGuard в консоли начнётся процесс создания учётной записи.
Кроме того, нужно сохранить текстовые данные к этой учётной записи для подключения с компьютера. Для этого откроем файл конфигурации:
Шаг 4.1 — Ещё одна учётная запись
Лучше давать каждому пользователю по учётной записи, чтобы при необходимости можно было точечно её отключить.
Чтобы добавить ещё одного пользователя, снова введите команду
./wireguard-install.sh
Скрипт спросит, что именно сделать. Введите единицу (Add a new user), нажмите Enter и вы снова увидите процесс создания нового пользователя.
Шаг 5 — Подключение к VPN
Windows / Mac
Android / iOS
Послесловие
От чего не защитит VPN
Именно по этой причине нужно делать отдельные учётные записи WireGuard для каждого пользователя, и никогда не выкладывать эти учётки в открытый доступ, иначе вам возможно придётся отвечать за действия какого-то анонима из интернета.
И, разумеется, VPN не сделает вас анонимным, если вы заходите в социальные сети под учёткой с вашим настоящим именем.
Доступ в локальную сеть и в интернет через Wireguard для Keenetic
Настройка Wireguard для Keenetic для одновременного доступа в локальную сеть и в интернет через VPN.
В данной заметке я расскажу, как организовать соединение с вашей локальной сетью за роутером Keenetic, если у вас уже настроен выход в интернет через WG сервер с роутера и телефона.
Помимо защиты ваших интернет соединений VPN может обеспечить соединение с вашей домашней сетью. Таким образом я организую свое небольшое облако. Файлы из моей домашней сети всегда доступны, где бы я не был.
Как я уже говорил у вас уже должен быть настроен Wireguard сервер, роутер и телефон должны выходить через этот сервер в интернет. Я же расскажу, как с телефона попасть в локальную сеть за роутером с использованием Wireguard, и при этом не потерять VPN выход в интернет. Для этого нужно будет использовать консоль роутера Keenetic.
Настройка Keenetic
Также убедитесь, что у вас есть пользователь, у которого есть права входа через SSH. На той же странице у вас есть список пользователей. Зайдите в редактор прав пользователя, и убедитесь что у него активирован пункт “Доступ к командной строке (TELNET и SSH)”.
Теперь заходим в консоль управления роутером.
Первым делом нам надо узнать, какой интерфейс был присвоен нашему соединению на роутере. Если это ваше первое соединение с Wireguard, то скорее всего это Wireguard0. Но давайте убедимся в этом.
Для этого необходимо ввести interface Wire и нажать Tab :
Чтобы точно убедиться выведите информацию об интерфейса.
По названию и адресу понимаем, что это нужное соединение.
Блок помощи
Нужно добавить правило на IN, иначе запросы в локальную сеть будут дропаться. Не забудьте заменить Wireguard0 на другое значение, если у вас задействован другой интерфейс.
Теперь надо добавить статический маршрут до сети Wireguard.
Не забудьте заменить значения на свои. 10.66.67.0 на свою подсеть Wireguard, а Wireguard0 на свой интерфейс.
Настройка сервера WG
После этого отключим и включим WG соединение.
После этого у вас должен появится доступ к локальной сети роутера с телефона через Wireguard VPN. По аналогии можно настроить доступ к локальной сети для остальных устройств.