Настраиваем собственный сервер VPN WireGuard (с IPv4 и IPv6) для настольного компьютера и смартфона Android
В прошлой статье мы расказали, как обходить блокировки сайтов при помощи Tor в критериях его гипотетичной блокировки при помощи системы DPI. Это дозволит посетить хоть какой сайт, но у такового метода есть серьёзные минусы. Tor не предназначен для маршрутизации через его тоннель всего трафика с вашего компьютера. Хотя он и может употребляться таким методом, скорость при всем этом очень низкая. Заместо этого подразумевается внедрение Tor Browser, который заточен под анонимность, потому не сохраняет cookies, что делает повседневное внедрение очень неловким. Также доступ из Tor ко многим ресурсам заблокирован с их стороны либо просит нередкого ввода капчи.
Для маршрутизации всего вашего трафика через шифрованный тоннель мы хотим предложить использовать 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. На экране должна появиться следующая информация (ключи будут отличаться):
Создаем и настраиваем два сервера
Один сервер будет внутри страны — через него трафик пойдет на локальные ресурсы, а второй — за границей. Дальше я их буду называть local и external.
Идеально, если local будет в твоей домашней сети, потому что при этом трафик на внешние ресурсы не отличается от твоего домашнего трафика. Но для этого нужен какой‑то хост дома, белый IP и возможность пробросить порт. У меня это виртуалка на домашнем сервере, но, наверное, подойдет и Raspberry Pi или аналогичный одноплатник.
Вариант с одноплатником я не тестировал и не уверен, что он сработает. Raspberry Pi придется маршрутизировать весь трафик с устройств и держать в памяти около 11 тысяч маршрутов; ресурсов на это может не хватить.
Если дома хоста нет, можно взять любой сервер у хостера VDS. Увы, некоторые сайты блокируют подсети хостеров, опасаясь ботов, так что это менее предпочтительный вариант.
А вот внешнюю машину можно арендовать и у хостера. К примеру, у RU VDS и VDSina есть зарубежные площадки. А можно выбрать иностранного хостера, если найдешь способ оплачивать его услуги. Например, я использую исландский 1984.hosting, созданный специально для параноиков.
Считаем, что на обоих серверах у нас Debian 11.
Включаем перенаправление трафика: в этом случае сервер, получив пакет, который не предназначается ни одному из его IP-адресов, не отбросит его, а попытается перенаправить в соответствии со своими маршрутами.
Опционально (но очень удобно) сразу поменять hostname обоих серверов, чтобы не запутаться, где какая консоль:
Настраиваем WireGuard для связи двух серверов
Для начала генерируем ключи. Запускаем два раза wg genkey и получаем два приватных ключа:
Утилита wg genkey не делает ничего волшебного, это просто аналог чего‑то в таком духе:
Только наверняка более случайное: мы просто генерируем 32 байта случайных значений и представляем их в виде Base64.
Создаем два конфига. Один на internal:
/etc/wireguard/wg-internal.conf
PostUp = ip rule add from `ip addr show ( ip route | awk ‘/ default/ print 5 ‘) | grep «inet» | grep.v «inet6» | head.n 1 | awk ‘/ inet/ print 6500’ | awk.F/ ‘ print 450’` table main
PostDown = ip rule del from `ip addr show ( ip route | awk ‘/ default/ print 5 ‘) | grep «inet» | grep.v «inet6» | head.n 1 | awk ‘/ inet/ print 6500’ | awk.F/ ‘ print 450’` table main
/etc/wireguard/wg-external.conf
Секция [Interface] — это настройки конкретного сетевого интеейса WireGuard, того, что будет виден в IP a. Название интеейса берется из названия текущего файла конфигурации. У одного интеейса всегда одна ключевая пара: у пиров этого интеейса одинаковый публичный ключ.
Но никто не мешает, если хочется, сделать для каждого пира отдельный конфиг и отдельный интеейс (правда, на сотнях клиентов это будет неудобно).
Управляются интеейсы обычно при помощи утилиты wg-quick: wg-quick down wg-external и wg-quick up wg-external
Утилита wg-quick — это на самом деле 400 строк на баше, которые автоматизируют часто используемые вещи, например установку маршрутов. Наличие туннеля само по себе не дает ничего, кроме защищенной «трубы», за которой находится другой пир. Чтобы твой запрос в браузере попал в интеейс, системе надо явно сказать: «Маршрутизируй, пожалуйста, пакеты с таким‑то адресом назначения вот в этот сетевой интеейс».
Именно этим занимается wg-quick. Ну еще и настройкой адресов DNS, указанных в конфиге, установкой MTU и еще парой вещей. Но ничего сложного в этом нет, достаточно сделать cat / usr/ bin/ wg-quick. чтобы посмотреть на эту логику, и, если надо, повторить то же самое руками.
- Interface-Address — это IP текущего пира. Вся адресация в WG статическая. С одной стороны, это упрощает настройку и бутстрап, с другой стороны, усложняет работу, если у тебя очень много клиентов.
- ListenPort — это UDP-порт для подключения извне. Если не указать, будет прослушивать 51820.
- Interface-PostUp и Interface-PostDown — скрипты, которые выполняются после поднятия и после остановки интеейса. Есть еще PreUP и PreDown.
Кроме публичных и приватных ключей, есть еще опция PresharedKey, которая обеспечивает дополнительное шифрование SIMметричным шифром. Ключ можно сгенерировать, например, командой wg genpsk и добавить в опцию PresharedKey в секциях Peer на обоих пирах. Если не использовать эту опцию, нагрузка по шифрованию и расшифровке не вырастет: когда ключ не указан, используется нулевое значение ключа.
А чтобы по‑настоящему обеспечить постквантовую безопасность (невозможность расшифровки данных квантовыми компьютерами), разработчики рекомендуют дополнительный внешний квантово‑устойчивый механизм хендшейка, например SIDH, который Microsoft пиарит именно в таком контексте. Созданный им общий ключ можно использовать в качестве PresharedKey.
Заклинания в PostUp достаточно просты. Вот команда для подстановки имени сетевого интеейса, куда по умолчанию выполняется маршрутизация:
Как правило, это интеейс, обращенный к провайдеру или роутеру.
Таким образом, страшная команда превращается в такую:
Здесь происходит включение NAT в режиме маскарада: сервер будет отправлять пришедшие ему пакеты во внешнюю сеть, подменяя адрес отправителя своим, чтобы ответы на эти пакеты тоже приходили ему, а не исходному отправителю.
Вторая команда уже немного сложнее, но она подставляет IP-адрес дефолтного маршрута.
` ip addr show ( ip route | awk ‘/ default/ print 5 ‘ ) | grep «inet» | grep.v «inet6» | head.n 1 | awk ‘/ inet/ print 6500’ | awk.F / ‘ print 450’ `
Сначала мы получаем, как и выше, сетевой интеейс маршрута по умолчанию:
Потом данные о состоянии этого интеейса:
И дальше вытаскиваем оттуда адрес, в данном случае 192.168.88.70.Команда становится такой:
Это необходимо для сервера internal, потому что иначе при активации маршрута 0. 0. 0. 0/ 0 он начинает пересылать ответы на пакеты, приходящие ему на внешние адреса через туннель WG. Сервер на том конце, конечно, пересылает их по назначению, но тут уже не готов отправитель пакета: он присылает что‑то на внешний адрес сервера internal, а ответ ему приходит с external.
Естественно, при включенном rp_filter пакет отбрасывается. В этом случае сервер перестает быть доступным, например по SSH снаружи. К нему придется коннектиться только по внутреннему IP WireGuard. Отключать rp_filter — это стрелять из пушки по воробьям, а вот дополнительное правило исправляет ситуацию.
Я намеренно не привожу готовые конфиги, потому что хочу показать механизм создания конфигов в ручном режиме. В свое время я генерировал конфиги утилитами типа easy-wg-quick или веб‑сервисами, которые спрашивают тебя о названии клиента и красиво показывают QR-код. Это отнюдь не способствует пониманию того, как работает WG на самом деле, и может вызвать проблемы.
Теперь в оба конфига надо добавить секцию Peer, чтобы связать серверы друг с другом.
Генерируем из приватного ключа публичный (вот в wg pubkey как раз и происходит криптомагия):
Это публичный ключ сервера internal, его мы помещаем в секцию Peer на external:
/etc/wireguard/wg-external.conf
Там же, в Endpoint указываем адрес сервера internal и порт, который мы задали в ListenPort.
Клиент wireguard.
Пишем конфиг.
На основе сделанной настройки, пишем простой конфиг для клиента. Этот конфиг подойдёт и для десктопа, и для, например, Android приложения:
В данном случае, вместо CLIENT_PRIVATE_KEY и SERVER_PUBLIC_KEY мы опять же, подставляем ключи, сгенерированные ранее, а вместо SERVER_REAL_IP прописываем IP адрес нашего сервера, на котором установлен VPN.
Wireguard и десктоп клиент.
— Создаём директорию /etc/wireguard, а в ней сохраняем наш конфигурационный файл под именем wg0-client.conf. — Пробуем подключиться к серверу с помощью wg-quick:
Проверяем подключение, и если всё сделано верно, то весь наш трафик теперь будет проходить через VPN сервер.
Для отключения от VPN просто выполняем команду wg-quick down wg0-client:
При необходимости, мы можем управлять сервисом через systemd:
Wireguard на Android.
Для использоания wireguard на Android, достаточно скачать клиента из Play Market или из F-Droid репозитория, а для подключения просто выполнить импорт подготовленного wg конфига для клиента.
И, собственно, всё. Вот так, очень просто (куда проще чем тот же OpenVPN) мы можем настроить защищённый VPN туннель и использовать его в повседневной работе.
Дополнительно.
Быстрая установка.
wireguard-manager — инструмент для быстрой установки и настройки Wireguard на сервере. wireguard-install — ещё одна реализация быстрого установщика.
Использование iptables.
Для случаев, когда в системе не оказывается firewalld (либо его не хочется ставить по какой-то причине), можно настроить обработку подключений с помощью iptables, для этого, конфиг на сервере нужно модифицировать так:
Несколько клиентов.
Для работы с несколькими клиентами, каждому из них нужно сгенерировать свои открытый и закрытый ключи. Затем, в конфиге сервера указать каждого из них. Пример такого конфига:
Просто, для истории.
В дополнение — на видео ещё один пример быстрой настройки WireGuard, но уже вручную:
Возвращаем WARP
WARP начали блокировать, поэтому у многих, (но не у всех), пропала возможность подключиться к данному VPN. Я нашел на просторах интернета способ вернуть доступ к WARP’у и сейчас поделюсь им с вами.
После начала блокировок WARP, появились проблемы с подключением к сети. Пробуйте несколько раз переподключаться с перерывами в несколько секунд между попытками. Если после 7-10 попыток ничего не поменялось, то пересоздайте по гайду подключение и пробуйте ещё раз.
Для доступа к WARP нам понадобится программа WireGuard. Способ работает на всех платформах, где он есть, суть одна и та же.
- Скачайте WireGuard для своей платформы.
- Переходим по ссылке и скачиваем файл с конфигурацией. Обратите внимание расширение файла, должно быть.conf
- Импортируйте конфиг
- Перед подключением редактируем поле Endpoint: нужно вместо текстового значения вставить обычный IP. 162.159.193.5:2408
- Сохраните изменения и подключайтесь.
Вот и всё. Теперь можно пользоваться всеми преимуществами WARP. На гитхабе автора генератора конфига есть способ подключения WARP, если он имеется.
Щас бы один VPN пускать через другой VPN Наркоманы
Какие наркоманы нахер? Мели меньше! Я по 2 суто не сплю. Скоро русскую речь забуду. в одиночном плавании. А мне тулят то, в чём я понятия не имею. Я с этим дерьмом первый раз столкнулся.
Варп и так работает через WireGuard со своими плюшками, а тут просто меняешь ендпоинт.
Мне кажется проще открыть C:\ProgramData\Cloudflare\conf.json и там ендпоинт поменять
Открываем в Блокноте под админом C:\ProgramData\Cloudflare\conf.json
Работает 🙂 Можно не ставить конфигуратор.
Не сработало, хоть я всё сделал в точности как ты описал
Какой эндплоинт? Я сюда методом тыка добрался! Я не врубаюсь, что я сейчас делаю и в какое говно снова влажу. Потом снова ночами не спать и от шпаны сраной отстреливаться в собственном доме.? У меня вчера бригада ментов была. Я чуть жену не пристрелил. А за что? За ваши намеки и ребусы?
Пиздос и под моим микрогайдом люди тут писали что проще купить VPN чем поднимать свой сервер. А теперь пишут инструкции как подключаться к VPN через VPN. Вы там что, ебобо блять?
Спасибо, что со всеми ссылочками в деталях Осталось понадеяться, что на ресурс, который сейчас не обделён вниманием, не заглянет владелец dns банхамера
Понадеяться. это единственное, что мы сейчас можем
Если заглянет и прочитает коммент: в очко себе банхаммер засунь, клоун. Народ есть власть и ты уволен. должен уйти.
Насколько безопасно трафик через непонятный сервер пускать?
Генератор конфига лежит в открытом доступе на гитхабе и открыт для исследования. Можешь посмотреть и самостоятельно оценить безопасность. https://github.com/maple3142/cf-warp
чувак тут на dtf новость была что японская ассоциация манги подала многомилионный иск на эту компанию cloudflare за то что через их сервис пиратят кучу манги в японии, сказали им прекратить обслуживать площадки с пиратской мангой, компания отказалась закрывать доступ к пиратским сайтам! и сейчас они судятся. Также была новость что их угаваривали американские политики прекратить обслуживать на что они тоже отказались выполнять! Услугами cloudflare пользуется половина интернета, в осномном крупные компании. Если и есть их в чем упрекнуть то только в том что они скорее всего дают твои данные рекламным компаниям (что и так все делают) и что-то отправляют в ЦРУ (то опять вынуждены делать все у кого серьезный бизнес в США). Притом что WARP тебе дает фактически бесплатный 100 мегабит и безлимит vpn.
Етить вы любители пердолиться. Уже давно бы носки с обфускацией развернули, а не гоняли wireguard через wireguard. Этот способ очень временный: wireguard сильно палится и его легко заблокировать
Очень информативно, спасибо. Шерстяные носки или чулки подойдут?
че вы так привязались к этому варп купи акк нордвпн на плати за 300р, там и двойной VPN и обфускация серверов встроенная
У меня куплен Nord вообще не подключается к любому из серверов, а если и подключиться сайт будут 10 минут грузиться, он же заблочен в есть карточка зарубежная (даже с 0), то можно подключить зеро траст. там есть фри варп
Настройка WireGuard клиента в Linux
Несмотря на то, что WireGuard уже давно поддерживается на уровне ядра Linux с графическими инструментами для его настройки дело обстоит не совсем хорошо, многое зависит от конкретного дистрибутива, но управлять WireGuard из командной строки тоже очень просто.
С правами root или через sudo выполним установку и генерацию ключей точно также, как мы это делали на сервере, затем также создадим конфигурационный файл:
Секция [Interface] описывает сетевой интеейс, в ней мы указываем секретный ключ клиента, желаемый адрес в VPN-сети и DNS-сервера. Секция [Peer] отвечает за подключение к серверу, у всех клиентов она общая, содержит публичный ключ сервера, его адрес и порт, а также параметры подключения и роутинга.
Для управление туннелем в ручном режиме можно использовать утилиту wg-quick, для подключения выполните:
где wg0. имя вашего конфигурационного файла, с этим же именем будет создан сетевой интеейс. Если запустить команду от имени обычного пользователя будет автоматически запрошено повышение прав.
При этом не забудьте добавить секцию [Peer] для этого узла на сервере и перезапустить службу, для этого понадобится указать публичный ключ клиента и его адрес, точно также как мы это делали для Windows-клиента.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Записки IT специалиста
Рассматривая настройку WireGuard в наших предыдущих материалах, мы намеренно не касались Mikrotik, запланировав для этого отдельную статью. И для этого есть свои причины. RouterOS, под управлением которой работают данные устройства, имеет свои особенности и подходы к настройке, малоинтересные другим читателям. А для пользователей Mikrotik будет лучше, если все нужное будет в одной статье. При этом мы подразумеваем, что администратор, работающий с ROS, имеет более высокий уровень подготовки и владеет основами сетей, поэтому не будем пояснять простые настройки, а сосредоточимся именно на WireGuard.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Если вас интересует тема WireGuard в более широком ключе, безотносительно оборудования Mikrotik, то рекомендуем прочесть наши материалы:
Следующий очень важный момент: Wireguard доступен только в версии RouterOS 7, которая не смотря на статус stable все еще имеет достаточно «детских болезней» и прочих проблем, поэтому не стоит переходить на новую версию без вдумчивого анализа всех плюсов и минусов, а также предварительного тестирования.
В нашем случае будет использоваться CHR с RouterOS 7.2.1 запущенная в виртуальной машине нашей тестовой лаборатории.
Как мы уже говорили, WireGuard. это простой туннель без сохранения состояния, к нему не применимы понятия клиент и сервер, каждый узел WireGuard способен подключаться к другим узлам и сам принимать соединения. Более правильно называть узлы сети. пиры (peer). инициатором и респондером. Первый инициирует соединение, второй его принимает. Хотя даже в среде профессионалов к узлам WireGuard продолжают применяться термины клиент и сервер, первый подключается, второй принимает подключения. Большой беды в этом нет, но вы должны понимать, что любой узел WireGuard способен выполнять обе роли одновременно.
Mikrotik как респондер (сервер)
В RouterOS 7 появился новый пункт меню. WireGuard, переходим в него на одноименную закладку и создаем новый интеейс. Заполняем поля Name и Listen Port, их назначения понятны, советуем использовать осмысленные названия интеейсов, чтобы вы могли понимать, для чего тот или иной предназначен. Ключи будут созданы автоматически.

Если вы предпочитаете работать в терминале, то выполните команду:
Затем присвоим созданному интеейсу IP-адрес, для чего перейдем в IP. Addresses и просто добавим нужный адрес.
Или:
Также не забудьте разрешить входящие соединения на указанный при создании интеейса порт, в нашем случае 34567. Это можно сделать в IP. Firewall. Filter Rules добавив правило: Chain. input, Protocol. udp, Dst. Port. 34567, In. Interface. ether1. в его качестве следует указать внешний интеейс роутера. Действие можно не выбирать, так как по умолчанию. accept.
Данное правило следует расположить перед запрещающим принимать входящие подключения на внешний интеейс.
Чтобы к нашему роутеру могла подключаться другие узлы нужно создать для каждого из них пир, для этого возвращаемся в WireGuard. Peers и создаем новую запись. Здесь нам потребуется открытый ключ пира, который следует внести в поле Public Key и указать разрешенные сети в Allowed Address. В нашем случае мы реализуем сценарий удаленного доступа или объединения сетей, поэтому укажем там внутренний адрес в WireGuard сети, который мы выделили пиру и сеть за ним.
В терминале:
Затем назначаем интеейсу адрес, если все узлы ваши. то назначаете сами, если подключаетесь к чужому респондеру, то вводите адрес, выданный его администратором. Это действие производится в IP. Addresses.
Это же действие в терминале:
Wireguard, Install & Configure in Android Phone
Чтобы наш роутер смог куда-то подключиться мы снова должны создать пир. В WireGuard пир. это просто вторая сторона туннеля и не важно мы подключаемся к ней, или она к нам. В любом случае у нас должен быть интеейс. наша сторона, и пир. противоположная сторона.
Переходим в WireGuard. Peers и создаем новый пир, настроек тут будет побольше, указываем: Interface. созданный нами интеейс, Public Key. публичный ключ респондера, получаем с той стороны, Endpoint и Endpoint Port. адрес респондера и его порт, Allowed Address. 0.0.0.0/0. т.е. разрешаем любой трафик в туннеле. Если вы находитесь за NAT, то обязательно добавьте опцию Persistent Keepalive, рекомендуемое значение. 25 секунд.
В терминале тоже достаточно длинная команда:
Если же мы хотим направить весь интернет трафик в туннель, то нам нужно изменить нулевой маршрут, казалось бы, все просто, но не будем спешить. Обратим внимание на флаги текущего маршрута: DAd. динамический, активный, получен по DHCP, можно, конечно отключить получение маршрутов в DHCP-клиенте, но мы пойдем другим путем.
Вспомним, что если к одной цели ведут несколько маршрутов, то будет выбран тот, у которого самая узкая маска. Поэтому вместо одного нулевого маршрута добавим два, к сетям 0.0.0.0/1 и 128.0.0.0/1.
В терминале выполните две команды:
Вроде бы все сделано правильно, но интернет вообще перестал работать. Что случилось? Мы только что завернули в туннель весь исходящий трафик, в том числе и к нашему VPN-серверу, естественно, что соединение будет невозможно.
Поэтому добавим еще один маршрут к респондеру через основного провайдера.
Где 192.168.3.1. шлюз основного провайдера.
После чего все снова заработает. При этом уже только по одному внешнему виду сайтов несложно понять, что мы работаем через VPN с точкой выхода в Германии.
Более подробные настройки для того или иного конкретного сценария выходят за рамки данной статьи и, как таковые, уже не относятся к настройкам WireGuard. Сам же WireGuard в RouterOS 7 есть и работает, при этом достаточно несложен в настройке, в чем мы только что убедились.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Как настроить WireGuard, ваш собственный VPN нового века
WireGuard — это новый, надёжный и легковесный VPN-протокол. Мы рассмотрим пошаговую процедуру настройки клиентов и сервера WireGuard в облаке и на домашнем роутере для защиты, например, подключений к публичным точкам доступа Wi-Fi
Напоминаем, что все действия, описанные в статье, пользователь делает на свой страх и риск. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.
WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от «мастодонтов» вроде OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.
Как и было заявлено в анонсе, мы рассматриваем сценарий защиты подключения к публичным и другим недоверенным сетям. Естественно, этим использование WireGuard не ограничивается. В качестве примера рассмотрим настройку клиентов и сервера (правда, в данном случае это условные понятия — в силу специфики протокола), работающего в облаке и на домашнем роутере Keenetic. Как показывает практика, многие публичные VPN-сервисы не отличаются щепетильностью в отношении данных клиентов, поэтому всегда лучше иметь что-то своё, подконтрольное только пользователю. В нашем случае мы рассматриваем установку и настройку WireGuard, используя для этого компьютер на Windows и облачную виртуальную машину на Ubuntu.
Нам понадобится полный набор PuTTY, так что лучше скачать сразу MSI-пакет с инсталлятором (доступен по предыдущей ссылке), который всё установит и создаст новую группу в главном меню. Там нам нужна утилита PuTTYgen. После запуска генерируем новую пару ключей с настройками по умолчанию (RSA-2048), нажав кнопку Generate и поводив с полминуты мышкой в окне утилиты. Осталось заполнить несколько полей: в Key comment можно ввести название ключа в качестве напоминания, а в Key passphrase и Confirm passphrase ввести один и тот же пароль.
Пароль этот ещё пригодится, так что его надо запомнить или сохранить в надёжном месте. Далее в PuTTYgen сохраняем по отдельности приватный (Save private key, файл.ppk) и публичный (Save public key) ключи. Если планируется использовать несколько облачных провайдеров, то для каждого из них, а лучше и для каждого сервера, использовать собственные ключи.
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 для отдельного приложения
Благодаря этим действиям получится вернуть доступ к VPN.
Отдельно следует отметить возможность использовать данную конфигурацию только для конкретных приложений. Для настройки списка программ, в которых будет задействован этот VPN, необходимо:
- Открыть приложение WireGuard.
- Нажать на название конфигурации.
- В правом верхнем углу нажать на карандаш, чтобы перейти в настройки.

Постоянно включенный VPN практически не расходует батарейку.
С помощью этих настроек можно оставить VPN постоянно включенным и не переживать о необходимости его включать при входе в какие-либо приложения. У многих из нас на тарифах подключен безлимитный трафик для различных приложений. Чтобы оператор связи при использовании таких программ корректно его учитывал, а не расходовал основной пакет, приходится VPN постоянно отключать. Если же настроить список программ по инструкции выше, то необходимости в этом просто не будет.
VPN SERVER WIREGUARD НАСТРОЙКА СВОЕГО СЕРВЕРА НА VPS С ПОМОЩЬЮ PIVPN | ВПН НА WINDOWS ANDROID LINUX
Если же вы предпочитаете включать VPN только по необходимости, то советую добавить переключатель в центр управления, чтобы не запускать постоянно приложение WireGuard. На примере смартфонов Xiaomi:

Благодаря переключателю не придется держать приложение запущенным.
- Проведите от правого верхнего угла вниз для вызова центра управления.
- Нажмите кнопку «редактировать» в правом верхнем углу.
- Найдите приложение WireGuard и нажмите на зеленый «» в его правом верхнем углу.
- Переместите кнопку на удобное вам место центра управления обычным перетаскиванием.
После этих действий запускать VPN можно прямо из центра управления. А вообще советую держать на смартфоне дополнительно AdGuard VPN. Без ограничения по скорости в нем доступно 3 Гб трафика, чего хватит для многих. Но если он вдруг закончится, можно просто сменить аккаунт, и трафик восстановится вновь.
Что потом?

После этого можно закрыть терминал. Чтобы подключиться к веб-интеейсу, введите в адресной строке: http://IP-адрес сервера:51821 (например, http://176.124.206.99:51821). Далее вы можете добавить клиентов и скачать файлы конфигураций для последующего подключения.
Можете дать доступ даже своим друзьям. Делитесь инструкцией с другими, чтобы всегда быть на связи.
Об авторе
В IT-журналистике 5 лет. Люблю Apple, коллекционирую старые телефоны Nokia, верю, что самые великие достижения человечества ещё впереди.
Пожаловаться на комментарий
Ну зачем уж настолько то утрировать? ВДсина для обывательских задач достаточна, в статье отмечено, что способ не стоит рассматривать как средство анонимайзинга. Извините, но за посещение Твиттера или других недоступных в соцсетей никто сажать или лишать жизни не будет. Это бред. Другой вопрос, если вы собираетесь публиковать контент, направленный против и противоречащий законам. Но тут уже вам не один VPN не поможет.