Wireguard VPN настройка Windows: на роутерах Keenetic, Mikrotik для обхода блокировок.

WireGuard VPN настройка в Windows

Настройка серверной стороны

1) Скачиваем актуальную версию под Windows: https://www.wireguard.com/install/ и устанавливаем
2) Запускаем C:\Program Files\WireGuard\wireguard.exe и добавляем пустой туннель (будем настраивать серверную часть):
Add tunnel→Add empty tunnel…

Прописываем настройки:
Name — имя сетевого подключения
Public key — публичный ключ сервера WireGuard (понадобится для настройки клиентской части)

[Interface] PrivateKey = #приватный ключ сервера WireGuard ListenPort = #порт, который будет слушать WireGuard Address = #желаемый IP адрес сервера WireGuardCODE

3) Добавляем еще один пустой туннель (будем настраивать клиентскую часть):
Add tunnel→Add empty tunnel…
Прописываем настройки:
Name — имя сетевого подключения
Public key — публичный ключ клиента WireGuard (понадобится для настройки серверной части)

[Interface] PrivateKey = #приватный ключ клиента WireGuard Address = #желаемый IP адрес клиента WireGuard [Peer] PublicKey = #публичный ключ сервера WireGuard (из шага 2) AllowedIPs = #IP адреса локальных пользователей Endpoint = #IP адрес сервера (реальный, а не WireGuard) и порт, который слушает сервер WireGuard (настраивался на шаге 2)CODE

4) Теперь нам нужно добавить нашего клиента к серверной части WireGuard, для этого вернемся к шагу 2 и дополним его конфиг:

… [Peer] PublicKey = #публичный ключ клиента WireGuard (из шага 3) AllowedIPs = #IP адрес пользователяCODE

5) Теперь достаточно экспортировать конфигурационные фаилы
Export all tunnels to zip→Указываем место для экспорта→Save

Дальше открываем сохраненный архив, там будут конфиги всех наших туннелей.
Отдаем клиенту его конфигурационный фаил.

6)На сервере выбираем серверный конфиг и запускаем

7) На клиенте добавляем конфигурационный фаил в WireGuard
Add Tunnel→Выбираем конфигурационный фаил клиента->Open

Выбираем клиентский конфиг и запускаем

На этом мы закончили настройку первого клиента, аналогично настраиваются остальные клиенты, добавлением их данных в серверный конфиг (шаг 4)

Автозапуск WireGuard после перезагрузки сервера.

1) Добавим фаил для запуска в автозапуск планировщика Windows:
Пуск→taskschd.msc

Нажимаем на «Создать простую задачу» → Вводим Имя для задачи (например wireguard) → Далее

Выбираем «При запуске компьютера»→ Далее

Выбираем «Запустить программу»→ Далее

В поле «Программа или сценарий» выбираем наш фаил для запуска WireGuard (по умолчанию «C:\Program Files\WireGuard\wireguard.exe»)
Добавить аргументы:

/installtunnelservice «C:\Program Files\WireGuard\wg_server.conf»CODE

где:
C:\Program Files\WireGuard\wg_server.conf — расположение конфигурационного файла *.conf

Ставим галочку напротив «Открыть окно «Свойства» для этой задачи после нажатия кнопки «Готово»»→ Готово

В открывшемся окне, ставим галочку напротив «Выполнить с наивысшими правами»→Ок

Готово. Делаем перезагрузку, проверяем

Настройка WireGuard VPN для доступа в интернет

 

wireguard-vpn-internet-access-000.png
Для многих обычных пользователей слово VPN сразу ассоциируется со средством доступа в сеть интернет. Действительно, это один из самых популярных сценариев использования данной технологии. Но если для большинства это всего лишь способ обхода ограничений, то специалисты чаще рассматривают VPN как защищенный канал в сетях с низким уровнем доверия: публичный Wi-Fi, сети баров, гостиниц, аэропортов. А если вы работаете с чувствительной информацией, то для таких целей лучше использовать собственный сервер, например, создав его на базе WireGuard.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

WireGuard в последнее время стремительно набирает популярность благодаря своей простоте и скорости работы. Конечно, есть и обратная сторона медали, но в данном сценарии раскрываются в основном только плюсы.

Напомним, WireGuard — это туннель без сохранения состояния, а следовательно применять к нему термины «клиент» и «сервер» некорректно, каждый узел WireGuard может как подключаться к другим узлам, так и принимать соединения. Но если мы говорим об организации выхода в интернет посредством VPN, то здесь данные термины уместны. В данном случае VPN-сервер — это узел предоставляющий возможность выхода в интернет, а VPN-клиенты — узлы, которые данную возможность используют, при этом технология реализации самого VPN-канала роли не играет.

Настройка VPN-сервера

Для обеспечения доступа в интернет VPN-сервер должен находиться на узле, обладающем достаточной пропускной способностью и точкой выхода в определенном географическом положении, которое зависит от того, к каким именно ресурсам вам нужно получать доступ. В большинстве случаев отлично подойдет VPS (виртуальный выделенный сервер) с минимальным тарифом в нужном расположении и ОС семейства Linux. Если говорить о семействе Debian / Ubuntu, то WireGuard поддерживается начиная с Debian 10 и Ubuntu 18.04 LTS. Все описанные ниже действия следует выполнять с правами суперпользователя root или через sudo.

Если вы используете Debian 10, то вам потребуется подключить backports-репозиторий:

echo deb http://deb.debian.org/debian buster-backports main > /etc/apt/sources.list.d/buster-backports.list

Обновим источники пакетов и установим WireGuard:

apt update
apt install wireguard

Следующим шагом выполним генерацию ключей, для этого перейдем в директорию /etc/wireguard:

cd /etc/wireguard

Временно изменим маску для обеспечения нужного набора прав на создаваемые файлы:

umask 077

Выполним генерацию ключевой пары:

wg genkey > privatekey
wg pubkey < privatekey > publickey

И вернем маску к стандартным значениям:

umask 022

Получим содержимое закрытого ключа, для этого воспользуемся командой:

cat /etc/wireguard/privatekey

Скопируем его содержимое, оно понадобится нам на следующем шаге, помним, что приватный ключ является секретным!

Создадим и откроем на редактирование конфигурационный файл WireGuard:

nano /etc/wireguard/wg0.conf

В данном случае мы используем nano, если вам больше по душе редактор mс, то просто замените nanо на mcedit.

Прежде всего настроим сетевой интерфейс WireGuard, для этого добавим в файл следующую секцию:

[Interface]
Address = 10.20.0.1/24
ListenPort = 34567
Privatekey = kNYGiCR3/ikepyURjFnEu5ueoCBsP2pjvGdcj2pggG8=

Настроек немного, указываем адрес интерфейса в VPN-сети, порт и секретный ключ. Зарезервированного порта для службы WireGuard нет, поэтому можем использовать любой.

Сохраним конфигурацию и добавим службу в автозагрузку, одновременно запустив ее:

systemctl enable —now wg-quick@wg0

В качестве имени службы используется wg-quick@<имя_конфигурационного_файла>.

Посмотреть статус WireGuard можно командой:

wg

Если все сделано правильно, то вы увидите информацию о созданном интерфейсе, в частности порт и публичный ключ.

wireguard-vpn-internet-access-001.png
Публичный ключ не является секретным, его также следует скопировать, он понадобиться нам для настройки клиентов.

Настройка NAT и брандмауэра

Для выхода клиентов в интернет нам потребуется рабочая служба NAT, а также требуется обеспечить достаточный уровень безопасности как самого сервера, так и работающих через него клиентов.

Прежде всего включим маршрутизацию, чтобы иметь возможность пересылать пакеты между интерфейсами, для этого откроем файл /etc/sysctl.conf, найдем и раскомментируем в нем следующую опцию:

net.ipv4.ip_forward = 1

Затем перечитаем настройки:

sysctl -p

Остальными настройками будет управлять iptables и этот вопрос может вызвать ряд затруднений. Настройки iptables не сохраняются при перезагрузке и существуют различные способы сделать это, наиболее простые и понятные — это скрипты, более современные — это специальные утилиты.

Более подробно о всех этих способах вы можете прочитать в нашей статье: Основы iptables для начинающих. Как сохранить правила и восстановить их при загрузке

Если вы не обладаете большим опытом работы с iptables, то, на наш взгляд, лучше начать со скрипта, а уже потом переходить к использованию утилит.

Создадим файл скрипта и разместим его в /etc:

nano /etc/nat-rules

И добавим в него следующее содержимое:

#!/bin/sh
# Сбрасываем настройки брандмауэра
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# Разрешаем уже установленные соединения. Первое правило в цепочке!!!
iptables -A INPUT -i ens33 -m state —state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем подключения по SSH
iptables -A INPUT -i ens33 -p tcp —dport 22 -j ACCEPT
# Разрешаем подключения к WireGuard
iptables -A INPUT -i ens33 -p udp —dport 34567 -j ACCEPT
#Запрещаем входящие извне. Последнее правило в цепочке!!!
iptables -A INPUT -i ens33 -j DROP
# Разрешаем уже установленные транзитные соединения
iptables -A FORWARD -i ens33 -o wg0 -m state —state ESTABLISHED,RELATED -j ACCEPT
# Запрещаем транзитный трафик извне
iptables -A FORWARD -i ens33 -o wg0 -j DROP
# Включаем маскарадинг для WireGuard клиентов
iptables -t nat -A POSTROUTING -o ens33 -s 10.20.0.0/24 -j MASQUERADE

Это минимальная конфигурация брандмауэра, разрешающего только SSH и WireGuard подключения к серверу, по мере необходимости следует добавить в нее собственные правила. Все они должны располагаться между правилами, разрешающими уже установленные соединения и запрещающего входящие соединения извне. В качестве внешнего интерфейса сервера используется ens33.

Сделаем данный файл исполняемым:

chmod + x /etc/nat-rules

Для его запуска можно добавить в секцию [Interface] конфигурационного файла WireGuard опцию:

PostUp = /etc/nat-rules

В большинстве случаев этого достаточно, но, если вдруг у нас не запустится WireGuard мы останемся без брандмауэра. Поэтому мы предлагаем пойти другим путем.

Прежде всего убедимся, что все правила работают как следует, для этого достаточно просто запустить скрипт.

/etc/nat-rules

Посмотреть состояние брандмауэра можно командой:

iptables -L -vn

Если все работает нормально, то установим утилиту iptables-persistent:

apt install iptables-persistent

Во время установки вам будет предложено сохранить текущие правила, с чем следует согласиться. После чего ваши правила будут автоматически сохранены в /etc/iptables/rules.v4, откуда будут восстанавливаться при загрузке. Скрипт нам больше не нужен, можем его убрать.

Можно ли обойтись без скрипта? Можно. Но не все обладают достаточными навыками работы с iptables, поэтому предложенный нами способ, хоть и является более длинным и избыточным, позволяет выполнить настройку брандмауэра наиболее просто для начинающих.

Настройка WireGuard клиента в Windows

Скачайте и установите WireGuard для Windows c официального сайта. В приложении выберите Добавить туннель — Добавить пустой туннель.

wireguard-vpn-internet-access-002.png
При этом автоматически будет создана ключевая пара и откроется окно редактирования конфигурационного файла, который уже будет содержать секцию [Interface] и закрытый ключ, все что нам останется, это добавить туда опцию с адресом интерфейса, его следует выбирать из того же диапазона, который вы указали на сервере.

Address = 10.20.0.101/24

Ниже добавим секцию [Peer] для подключения к серверу:

[Peer]
PublicKey = kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA=
AllowedIPs = 10.20.0.0/24, 0.0.0.0/0
Endpoint = 203.0.113.2:34567
PersistentKeepalive = 25

Которая содержит публичный ключ сервера, его адрес и порт, разрешенные сети. Так как нам требуется обеспечить выход в интернет через WireGuard подключение, то в список сетей мы добавили 0.0.0.0/0, что обеспечит направление в туннель всего исходящего трафика. Опция PersistentKeepalive предполагает обмен служебным трафиком с указанным пиром раз в 25 секунд, что требуется для поддержания нормальной работы клиента в том случае, если он находится за NAT.

wireguard-vpn-internet-access-003.png
После сохранения настроек туннельный интерфейс будет поднят и статус соединения будет Подключен, хотя мы еще не делали никаких настроек для данного клиента со стороны сервера. Кого-то может удивить или ввести в заблуждение такое положение дел и именно поэтому мы каждый раз акцентируем тот факт, что WireGuard — это туннель без сохранения состояния. Он ничего не знает о реальном состоянии канала и пира, к которому производится подключение, единственный способ это выяснить — послать пакет на другую сторону туннеля.

wireguard-vpn-internet-access-004.png
Так что же означает Подключен? Только то, что в конфигурации нет ошибок и туннельный интерфейс успешно поднят. Поэтому скопируем публичный ключ клиента и снова вернемся на сервер. Откроем конфигурационный файл и добавим в него следующую секцию:

[Peer]
PublicKey =i p9UjCFHiLnhQTcVgS/Y7j0s8caNj9hhn5RS2UqMXRo=
AllowedIPs = 10.20.0.101/32

Где мы укажем публичный ключ клиента и его внутренний IP-адрес, с которого следует принимать пакеты.

Перезапустим службу WireGuard на сервере:

systemctl restart wg-quick@wg0

Теперь можем проверить связь, для начала пропингуем внутренний адрес сервера 10.20.0.1 — если он отвечает, то туннель работает нормально.

Как мы уже говорили, при тех настройках, которые мы указали в туннель будет заворачиваться весь исходящий трафик клиента, в т.ч. и DNS-запросы. Поэтому если у вас в системе указаны локальные адреса DNS, скажем 192.168.1.1 роутера или адреса провайдера, недоступные из внешнего интернета, то разрешение имен работать не будет. Внешне это будет проявляться в том, что интернет работать не будет с указанием на ошибку DNS.

wireguard-vpn-internet-access-005.png
WireGuard прост, и обратная сторона этой простоты заключается в том, что мы не можем передавать нужные опции с сервера на клиента, как в OpenVPN, поэтому спасение утопающих — дело рук самих утопающих. К счастью, WireGuard позволяет задать опции для конфигурирования локального сетевого интерфейса, поэтому откройте приложение Wireguard, найдите свой туннель и выберите Редактировать, в открывшемся окне в секцию [Interface] добавьте опцию:

DNS = 8.8.8.8, 1.1.1.1

Теперь при поднятии туннельного интерфейса система будет использовать указанные адреса, в их качестве можно использовать любые публичные сервера доступные через ваш VPS.

Настройка WireGuard клиента в Linux

Несмотря на то, что WireGuard уже давно поддерживается на уровне ядра Linux с графическими инструментами для его настройки дело обстоит не совсем хорошо, многое зависит от конкретного дистрибутива, но управлять WireGuard из командной строки тоже очень просто.

С правами root или через sudo выполним установку и генерацию ключей точно также, как мы это делали на сервере, затем также создадим конфигурационный файл:

nano /etc/wireguard/wg0.conf

И внесем в него следующее содержимое:

[Interface]
Address = 10.20.0.102/24
Privatekey = 4Hfj7lZuaQZWkW2OGHPlkhr3Jxheg/lpcJkwiosvG0w=
DNS = 8.8.8.8, 1.1.1.1
[Peer]
PublicKey = kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA=
AllowedIPs = 10.20.0.0/24, 0.0.0.0/0
Endpoint = 203.0.113.2:34567
PersistentKeepalive = 25

Секция [Interface] описывает сетевой интерфейс, в ней мы указываем секретный ключ клиента, желаемый адрес в VPN-сети и DNS-сервера. Секция [Peer] отвечает за подключение к серверу, у всех клиентов она общая, содержит публичный ключ сервера, его адрес и порт, а также параметры подключения и роутинга.

Для управление туннелем в ручном режиме можно использовать утилиту wg-quick, для подключения выполните:

wg-quick up wg0

где wg0 — имя вашего конфигурационного файла, с этим же именем будет создан сетевой интерфейс. Если запустить команду от имени обычного пользователя будет автоматически запрошено повышение прав.

wireguard-vpn-internet-access-006.png
Для отключения используйте:

wg-quick down wg0

При этом не забудьте добавить секцию [Peer] для этого узла на сервере и перезапустить службу, для этого понадобится указать публичный ключ клиента и его адрес, точно также как мы это делали для Windows-клиента.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Результат: удаленный доступ ПК с ОС Windows по туннелю Wireguard к домашнему устройству

Просмотров: 5968

  • how to
  • windows
  • guide
  • wireguard
  • udp
  • настройка
  • клиент wireguard
  • протокол
  • сервер wireguard

С февраля 2022 года каждый пользователь в составе своего тарифа получает возможность использования сервера WireGuard и устанавливать одно подключение к нему из сети Интернет.

Соединение WireGuard является дополнительным к вашим существующим туннелям и использование WireGuard не считается туннелем в рамках тарифного плана.

В рамах базового тарифа пользователю предоставляются 2 туннеля с протоколами PPTP, L2TP/Ipsec, OpenVPN и дополнительно одно соединение по протоколу WireGuard. Таким образом, каждый пользователь сможет одновременно установить три соединения к VPNKI.

Соединение WireGuard отличается еще и тем, что пока в нем нет возможности маршрутизации сетей, расположенных «за маршрутизатором», но мы планируем добавить такую возможность несколько позже.

Так как протокол WireGuard использует другую архитектуру, то логика его настройки на сервере VPNKI отличается от традиционной.

0. Исходные данные

Мы хотим получить удаленный доступ к своей сети из Интернет с использованием протокола WireGuard. При этом наша сеть уже подключена к VPNKI по любому из протоколов — PPTP, L2TP/Ipsec, OpenVPN.

В качестве клиентского ПО мы будем использовать клиентское ПО WireGuard для Windows. Компьютер с клиентом WireGuard будет расположен в Интернет.

В момент подключения, в вашем клиентском ПО WireGuard будет создан туннельный интерфейс и использован адрес 172.16.0.3 сети VPNKI. Ну а хотим мы «достучаться» до сервера с адресом 192.168.1.10 в домашней сети.

1. Подготовка сервера

Основная особенность WireGuard состоит в том, что у него нет понятия клиент и сервер, а все соединения равнозначны.

Однако в нашей терминологии мы будем использовать слово «Сервер» применительно к тому WireGuard, который запущен на сервере VPNKI, а термин «Клиент» будем применять к Wireguard, который запущен на вашем компьютере с Windows.

Сначала нам будет необходимо сконфигурировать сервер WireGuard на VPNKI. Этот процесс состоит из двух шагов:

  • Выбор порта UDP на котором будет «слушать» ваш сервер WireGuard и ожидать подключения из сети Интернет
  • Предварительная конфигурация сервера WireGuard — назначение приватного и публичного ключей сервера

1.1. Начнем с выбора UDP порта. На главной странице туннелей выберите галочку «Использовать доступ через WireGuard»

vpnki wireguard server select udp port 1

Сервер выберет доступный UDP порт, на которому будет «слушать» ваш сервер WireGuard

vpnki wireguard server select udp port 2

В данном примере система выбрала порт 26005 ( у вас будет какой-то другой). После завершения выбора порта можно переходить к предварительной конфигурации сервера.

1.2. На этом шаге система подготовит публичный и приватный ключи вашего сервере WireGuard.

Приватный ключ сервера VPNKI сохранит у себя, а вот публичный ключ покажет вам. Он будет необходим для корректной конфигурации вашего клиента WireGuard на ПК с ОС Windows.

vpnki wireguard server prepare configuration

Нажмите «Создать сервер WireGuard»

vpnki wireguard public server keys

После генерации ключей система подготовила вам Публичный ключ сервера: Clu9YfM1KD8C+zl11fob2QDUiZcV1wqJzUOwihmavHA=. (у вас он будет какой-то другой)

На этом этап подготовки завершен и можно переходить к конфигурации клиента.

2. Установка клиента WireGuard

2.1. Установите ПО WireGuard на ваш ПК с ОС Windows, скачав пакет с официального сайта.

После установки вам будет необходимо создать новое соединение. Делается это в меню»Добавить туннель» и дальше нужно выбрать «Добавить пустой туннель»

wireguard vpnki add empty peer 0

После добавления пустого туннеля вам будет сгенерирован приватный и публичный ключи клиента. Эти ключи будут показаны на следующем экране. Нас будет интересовать только Публичный ключ (поле 1)

wireguard vpnki add empty peer public key

2.2. Назовите как-нибудь соединение (например VPNKI) и нажмите «Сохранить».

wireguard vpnki add empty peer prepare and save

Теперь у вас есть предварительно сконфигурированное подключение, но это еще не полная его конфигурация.

Мы вернемся к нему чуть позже, а пока пришло время сообщить серверу публичный ключ клиента, а клиенту сообщить публичный ключ сервера. Вроде бы просто, но путаница возникает часто.

Выделите и скопируйте в буфер обмена Публичный ключ (поле 1). Сейчас мы перейдем к серверу VPNKI и укажем его там в настройках подключения.

3. Конфигурация подключения на сервере VPNKI

3.1. Вернитесь к экрану настройки сервера Wireguard и в разделе «Данные клиента» нажмите «Создать подключение»

wireguard vpnki add peer

3.2. На следующем экране вам предложат ввести «Публичный ключ клиента»

vpnki wireguard add peer public key 1

3.3. Вставьте Публичный ключ клиента из буфера обмена (который вы скопировали туда на шаге 2.2) и нажмите «Сохранить»

vpnki add wireguard peer public key 2

3.4. После сохранения публичного ключа клиента на сервере запустится процесс WireGuard и он будет готов принимать подключение.

vpnki wireguard server full config

Теперь осталась одна деталь… надо окончательно сконфигурировать клиента и попробовать подключиться.

4. Завершение конфигурации клиента WireGuard на ПК с ОС Windows

4.1. Завершим конфигурацию клиента. Для этого войдем в режим редактирования ранее созданного подключения при помощи кнопки «Редактировать».

vpnki wireguard edit peer

4.2. Теперь вам нужно дозаполнить данные, которые будут описывать сервер и его данные. Это описание должно будет располагаться в месте красной рамки.

wireguard add text to peer 1

Взять эти данные для заполнения нам предстоит на сервере VPNKI. Для этого нажмите на кнопку «Конфигурация клиента»

vpnki wireguard add peer

Откроется окно с данными, которые вам будет необходимо перенести в конфигурацию вашего клиентского подключения.На скриншоте ниже показаны два окна — окно сервера VPNKI и окно редактирования клиентского подключения. Рамкой отомечен тот текст, который вам нужно будет скопировать и вставить.  wireguard vpnki add config lines to peer
Вот так:  wireguard vpnki add config lines to peer 2
Нажмите «Сохранить». Теперь ваше клиентское подключение полностью сконфигурировано и готово к подключению. После сохранения вы увидите полную конфигурацию вашего клиента.  Однако перед нажатием кнопки подключиться давайте все еще раз проверим и поясним детали.

  • В вашей настройке соединения на клиентском ПО верхняя часть описывает ваш собственный интерфейс. Хоть мы его и назвали VPNKI, но это ваш интерфейс. Он пока отключен. Его публичный ключ — OYUNru3L5zljznYR1NEHMCVFCgeIwQWal91O4Q8qwA0= IP адреса:172.16.0.3/32 это адрес, который будет использован на вашем интерфейсе после успешного подключения.
  • Нижняя часть (Пир) описывает сервер. Публичный ключ сервера — Clu9YfM1KD8C+zl11fob2QDUiZcV1wqJzUOwihmavHA= Адреса, при обращении к которым, трафик вашего клиента пойдет в туннель WireGuard — 172.6.0.0/16. Это адреса вашей сети VPNKI. То есть при успешном подключении из Интернет пинг с вашего ПК, отправленный по адресу 172.16.0.1 пойдет в интерфейс WireGuard, а не куда-либо еще. По сути, это правило для таблицы маршрутизации вашего ПК. Ну и в завершении — IP адрес сервера и порт — 84.201.157.25:26005. Это то, куда ваш клиент будет подключаться из Интернет используя протокол UDP. Наверное все.

wireguard vpnki full config on peer
Теперь можно попробовать подключиться. Но ….

 5. Подключаемся снаружи

Обратите внимание, что эта инструкция подразумевает, что ваш клиентский ПК расположен в сети Интернет. Но если сейчас ваш ПК подключен к домашней сети, которая, в свою очередь, уже подключена к VPNKI то имеет смысл выключить этот ПК из домашней сети и подключить его, например, к сотовому оператору связи.

Если ваш ПК уже в Интернет, то нажимайте Подключить и смотрите за результатом.

wireguard vpnki connect successful

На скриншоте показано успешное подключение. Давайте попробуем выполнить пинг сервера VPNKI по туннелю WireGuard — ping 172.16.0.1

wireguard vpnki ping over tunnel

Пинг успешен. Это хорошо. Но как быть если нужно выполнить пинг, например, адреса 192.168.1.1, который расположен где-то в вашей сети VPNKI.

С текущими настройками это будет невозможно. Потому что ваш клиент просто не отправляет пакеты к адресу 192.168.1.1 в интерфейс Wireguard. Вот пинг и не успешен…

wireguard vpnki ping over tunnel 2

Давайте добавим маршрут к вашей сети 192.168.1.0/24 через интерфейс WireGuard. Для этого остановим соединение и внесем изменение в настройки подключения на вашем клиенте. А именно …

wireguard vpnki add route on peer

Добавим через запятую нужные адреса сетей, которые должны быть доступны через туннель WireGuard, сохраним настройки, переподключитмся и выполним пинг 192.168.1.1

wireguard vpnki ping over tunnel 3

Вот теперь все успешно. И в завершение можно выполнить пинг адреса сервера в домашней сети — 192.168.1.10.

wg last step 9

Теперь все.

PS: В процессе написания инструкции мы обратили внимание на некоторые странности в работе ПО WireGuard под Windows. При попытке подключения в статусе содинения может быть написано «Подключен», но при этом не появляется статистика числа переданных и полученных байт. Ну и фактически трафик по туннелю не передается. Поэтому больше доверяйте статистике, чем самому статусу подключения. Если статистика есть — значит туннель работает.

Распространенные проблемы

1. Соединение не устанавливается, «0 B received»

wg show wg0 interface: wg0 public key: private key: (hidden) listening port: 42658 peer: endpoint: 80.249.145.4:51821 allowed ips: 10.0.0.0/24 transfer: 0 B received, 1.16 KiB sent persistent keepalive: every 20 second

Возможные причины и решения:

  • Сетевое соединение блокируется межсетевым экраном — проверьте настройки iptables на сервере и Linux клиентах, брандмауэра Windows, межсетевого экрана маршрутизатора;
  • UDP трафик блокируется интернет провайдером — WireGuard не поддерживает TCP, в этом случае стоит рассмотреть альтернативные решения, например openVPN в режиме TCP (либо туннелировать UDP, что не всегда целесообразно);
  • Ошибка в IP-адресе или PORT сервера — проверьте значение параметра «Endpoint» в конфигурационном файле;
  • Ошибка в ключах — проверьте ключи, в конфигурации сервера — открытые части ключей клиентов и приватная часть ключа сервера, в конфигурации клиентов — открытая часть ключа сервера, приватная часть ключа клиента.

2. При указании параметра DNS возникает ошибка «resolvconf: command not found»

[email protected]:/etc/wireguard# wg-quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/32 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a wg0 -m 0 -x /usr/bin/wg-quick: line 32: resolvconf: command not found [#] ip link delete dev wg0

Установите пакет openresolv:

apt install openresolv

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

Для чего используют VPN

VPN используют для объединения в единую сеть нескольких компьютеров (серверов) через интернет. При этом доступ в эту сеть могут получить только устройства этой сети. То есть задача VPN не только передать информацию между вашими компьютерами, но и защитить ее (информацию) от посторонних глаз.

Таким способом вы можете объединить системы находящиеся в разных городах и даже странах.

Обход блокировок Рунета

Одним из частных случаев использования VPN является обход блокировок доступа к тем или иным сайтам.

Не всегда заблокированные сайты «плохие». Вот реальный пример блокировки доступа к сайту М.Видео. Вот уже несколько дней вся подсеть моего провайдера заблокирована и посетить этот интернет магазин невозможно.

А во время «ковровых бомбардировок» РКН (Роскомнадзор) проблем бывает еще больше, достаточно вспомнить попытки заблокировать мессенджер Телегам в России. Тогда пострадало много невинных ресурсов, один из них — сайт архиватора 7-zip.org, доступ к которому можно было получить только через зарубежные VPN.

Установка необходимых компонентов на роутер Keenetic

Перейдите в веб-интерфейс Keenetic > «общие настройки» > установите компонент Wireguard.

Обход блокировок на роутерах Keenetic

После чего перезагрузите роутер, далее снова в веб-интерфейс и зайти в меню «другие подключения» и добавить подключение Wireguard.

Обход блокировок на роутерах Keenetic

Настройка обхода блокировок сайтов на роутерах Keenetic

Вам нужно перейти во вкладку «Маршрутизация». Здесь вам необходимо будет добавить один или множество IP адресов закрепленных за определенным сайтом или сервисом. Как это сделать рассказываем далее.

Обход блокировок на роутерах Keenetic

Если у сайта один IP

Если вам нужно зайти на сайт, у которого всего IP адрес, то тогда вам нужно сделать вот что:

  • Нажимаем «добавить маршрут»
  • Выбрать «маршрут до узла»
  • В «Адрес узла назначения» указать IP адрес сайта (IP можно узнать с помощью специального сервиса)
  • В выпадающем списке «Интерфейс» выбрать ваш VPN
  • Чуть ниже поставить галочку «Добавлять автоматически» и сохранить изменения.

обход блокировок keenetic

Теперь сайт начнет работать!

Если у сайта множество IP адресов

Для больших проектов, таких как VK, Facebook и прочее, как правило, используются большое количество IP адресов, пару сотен или даже больше. Добавить их первым способом можно, но очень сложно. Поэтому понадобиться другой подход.

  • Нажимаем «добавить маршрут»
  • Выбрать «маршрут до сети»
  • Переходим на сайт который покажет весь список IP и масок подсети необходимого сервиса. В поиске вбиваем домен, а дальше смотрим вкладку IP info. Там будет указано множество начальных IP адресов и слэш-формат маски подсетей.

Обход блокировок на роутерах Keenetic

  • Далее в Адрес узла назначения указываем один из многих начальный IP адрес
  • Чуть ниже в маска подсети, указать «расшифрованный» слэш-фортмат, он же десятичный формат. Чуть ниже представлена таблица, для вашего удобства.
слэш-формат Десятичный формат
/32 255.255.255.255
/31 255.255.255.254
/30 255.255.255.252
/29 255.255.255.248
/28 255.255.255.240
/27 255.255.255.224
/26 255.255.255.192
/25 255.255.255.128
/24 255.255.255.0
/23 255.255.254.0
/22 255.255.252.0
/21 255.255.248.0
/20 255.255.240.0
/19 255.255.224.0
/18 255.255.192.0
/17 255.255.128.0
/16 255.255.0.0
/15 255.254.0.0
/14 255.252.0.0
/13 255.248.0.0
/12 255.240.0.0
/11 255.224.0.0
/10 255.192.0.0
/9 255.128.0.0
/8 255.0.0.0
/7 254.0.0.0
/6 252.0.0.0
/5 248.0.0.0
/4 240.0.0.0
/3 224.0.0.0
/2 192.0.0.0
/1 128.0.0.0
/0 0.0.0.0
  • В выпадающем списке «Интерфейс» выбрать ваше VPN подключение
  • Чуть ниже поставить галочку «Добавлять автоматически» и сохранить.

обход блокировок keenetic

  • Вот такой вот выполняется обход блокировок на роутерах Keenetic. Теперь повторите действия для следующих IP адесов заблокированного ресурса. После чего заблокированный сайт снова заработает!

Вот и все теперь вы знаете как выполнить Обход блокировок на роутерах Keenetic! Больше полезных статей и инструкций читайте в разделе  Статьи и Хаки Android . Оставайтесь вместе с сайтом  Android +1 , дальше будет еще интересней!

  • ТЕГИ
  • proxy
  • vpn
  • интернет

TwitterTelegramViberFacebookWhatsAppVKAfttor

Настройка WireGuard VPN на роутерах Mikrotik

 

mikrotik-wireguard-000.png
Рассматривая настройку WireGuard в наших предыдущих материалах, мы намеренно не касались Mikrotik, запланировав для этого отдельную статью. И для этого есть свои причины. RouterOS, под управлением которой работают данные устройства, имеет свои особенности и подходы к настройке, малоинтересные другим читателям. А для пользователей Mikrotik будет лучше, если все нужное будет в одной статье. При этом мы подразумеваем, что администратор, работающий с ROS, имеет более высокий уровень подготовки и владеет основами сетей, поэтому не будем пояснять простые настройки, а сосредоточимся именно на WireGuard.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Если вас интересует тема WireGuard в более широком ключе, безотносительно оборудования Mikrotik, то рекомендуем прочесть наши материалы:

• Организация каналов между офисами через WireGuard VPN на платформе Linux
• Настройка WireGuard VPN для доступа в интернет

Следующий очень важный момент: Wireguard доступен только в версии RouterOS 7, которая не смотря на статус stable все еще имеет достаточно «детских болезней» и прочих проблем, поэтому не стоит переходить на новую версию без вдумчивого анализа всех плюсов и минусов, а также предварительного тестирования.

В нашем случае будет использоваться CHR с RouterOS 7.2.1 запущенная в виртуальной машине нашей тестовой лаборатории.

Как мы уже говорили, WireGuard — это простой туннель без сохранения состояния, к нему не применимы понятия клиент и сервер, каждый узел WireGuard способен подключаться к другим узлам и сам принимать соединения. Более правильно называть узлы сети — пиры (peer) — инициатором и респондером. Первый инициирует соединение, второй его принимает. Хотя даже в среде профессионалов к узлам WireGuard продолжают применяться термины клиент и сервер, первый подключается, второй принимает подключения. Большой беды в этом нет, но вы должны понимать, что любой узел WireGuard способен выполнять обе роли одновременно.

Mikrotik как респондер (сервер)

В RouterOS 7 появился новый пункт меню — WireGuard, переходим в него на одноименную закладку и создаем новый интерфейс. Заполняем поля Name и Listen Port, их назначения понятны, советуем использовать осмысленные названия интерфейсов, чтобы вы могли понимать, для чего тот или иной предназначен. Ключи будут созданы автоматически.

mikrotik-wireguard-001.png
Если вы предпочитаете работать в терминале, то выполните команду:

/interface wireguard
add listen-port=34567 mtu=1420 name=wireguard-sts

Затем присвоим созданному интерфейсу IP-адрес, для чего перейдем в IP — Addresses и просто добавим нужный адрес.

mikrotik-wireguard-002.png
Или:

/ip address
add address=10.10.0.1/24 interface=wireguard-sts network=10.10.0.0

Также не забудьте разрешить входящие соединения на указанный при создании интерфейса порт, в нашем случае 34567. Это можно сделать в IP — Firewall — Filter Rules добавив правило: Chain — input, Protocol — udp, Dst. Port — 34567, In. Interface — ether1 — в его качестве следует указать внешний интерфейс роутера. Действие можно не выбирать, так как по умолчанию — accept.

mikrotik-wireguard-005.png
Это же можно сделать командой:

/ip firewall filter
add action=accept chain=input dst-port=34567 in-interface=ether1 protocol=udp

Данное правило следует расположить перед запрещающим принимать входящие подключения на внешний интерфейс.

Чтобы к нашему роутеру могла подключаться другие узлы нужно создать для каждого из них пир, для этого возвращаемся в WireGuard — Peers и создаем новую запись. Здесь нам потребуется открытый ключ пира, который следует внести в поле Public Key и указать разрешенные сети в Allowed Address. В нашем случае мы реализуем сценарий удаленного доступа или объединения сетей, поэтому укажем там внутренний адрес в WireGuard сети, который мы выделили пиру и сеть за ним.

mikrotik-wireguard-003.png
В терминале:

/interface wireguard peers
add allowed-address=10.10.0.2/32,192.168.233.0/24 interface=wireguard-sts public-key=»9pVP67ehKtQEr6BV46X9SuQrdvys+1QeVT0oeUg71wo=»

Еще раз напомним, что вся адресация внутри WireGuard сети назначается администратором вручную и явно прописывается для каждого пира с обоих сторон. Это один из недостатков WireGuard, который следует из его простоты.

С другой стороны, у нас, допустим, будет Windows. Быстро настраиваем там новый туннель, в разделе Interface добавляем выделенный узлу адрес, а в разделе Peer указываем публичный ключ Mikrotik, его адрес и порт, а в разделе разрешенных адресов добавим адрес WireGuard интерфейса и сети за роутером.

mikrotik-wireguard-004.png
Если вы нигде не ошиблись, то подключение будет установлено, и вы сможете получить доступ к сети за роутером. В случае нахождения пира за NAT не забывайте добавить опцию PersistentKeepalive.

mikrotik-wireguard-006.png
Как видим, ничего сложного нет, но при большом количестве пиров прибавляется ручной работы: вы должны сами распределить адреса и прописать настройки с обоих сторон. Никаких средств автоматизации для этого не предусмотрено.

Mikrotik как инициатор (клиент)

В данном разделе мы рассмотрим иной сценарий — использование WireGuard для доступа в интернет, но принципиальной разницы нет, если вы соединяете сети, то можно точно также настроить роутер и все будет работать. Просто мы дополнительно рассмотрим некоторые вопросы касающиеся маршрутизации.

Снова переходим в раздел WireGuard и создаем новый интерфейс. В данном случае достаточно только указать имя, порт нас не интересует, так как мы не собираемся принимать соединения, но его все-таки требуется указать, выбираем любой.

mikrotik-wireguard-007.png

Или вводим команду:

/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard-inet

Затем назначаем интерфейсу адрес, если все узлы ваши — то назначаете сами, если подключаетесь к чужому респондеру, то вводите адрес, выданный его администратором. Это действие производится в IP — Addresses.

mikrotik-wireguard-008.png
Это же действие в терминале:

/ip address
add address=10.20.0.105/24 interface=wireguard-inet network=10.20.0.0

Чтобы наш роутер смог куда-то подключиться мы снова должны создать пир. В WireGuard пир — это просто вторая сторона туннеля и не важно мы подключаемся к ней, или она к нам. В любом случае у нас должен быть интерфейс — наша сторона, и пир — противоположная сторона.

Переходим в WireGuard — Peers и создаем новый пир, настроек тут будет побольше, указываем: Interface — созданный нами интерфейс, Public Key — публичный ключ респондера, получаем с той стороны, Endpoint и Endpoint Port — адрес респондера и его порт, Allowed Address — 0.0.0.0/0 — т.е. разрешаем любой трафик в туннеле. Если вы находитесь за NAT, то обязательно добавьте опцию Persistent Keepalive, рекомендуемое значение — 25 секунд.

mikrotik-wireguard-009.png
В терминале тоже достаточно длинная команда:

/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=x.x.x.x endpoint-port=34567 interface=wireguard-inet persistent-keepalive=25s public-key=»kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA=»

Также не забудьте включить маскарадинг для созданного интерфейса, переходим в IP — Firewall — NAT и создаем новое правило, на закладке General: Chain — srcnat, Src. Address диапазон локальной сети, например, 192.168.72.0/24, Out. Interface — интерфейс WireGuard, в нашем случае wireguard-inet, на закладке Action выбираем действие masquerade.

Либо в терминале:

/ip firewall nat
add action=masquerade chain=srcnat out-interface=wireguard-inet src-address=192.168.72.0/24

Затем, с другой стороны, также потребуется создать пир для нашего роутера, вам понадобится публичный ключ и назначенный адрес.

mikrotik-wireguard-010.png
Перезапускаем службу и соединение будет установлено. Но трафик как шел через основного провайдера — так и идет. Почему так? Заглянем в таблицу маршрутизации, которая находится в IP — Routes, как видим нулевой маршрут как был через основного провайдера — так и остался. В отличие от официальных пакетов WireGuard, которые управляют маршрутами на хосте, в Mikrotik все отдано в руки администратора.

mikrotik-wireguard-011.png
А дальше все зависит от того, что именно мы хотим получить. Если нам нужен доступ через туннель к отдельным узлам, то просто достаточно создать для них отдельные маршруты. Создаем новое правило, в котором указываем нужный адрес и шлюз, в качестве которого будет выступать противоположный конец WireGuard туннеля.

mikrotik-wireguard-012.png
Теперь снова проверяем (мы добавили маршрут к сервису проверки IP) — все хорошо, мы обращаемся к данному узлу через VPN-сервер.

mikrotik-wireguard-013.png
Добавить маршрут из командной строки можно следующим образом:

/ip route
add disabled=yes distance=1 dst-address=172.67.74.128/32 gateway=10.20.0.1 pref-src=0.0.0.0 routing-table=main scope=30 suppress-hw-offload=no target-scope=10

Если же мы хотим направить весь интернет трафик в туннель, то нам нужно изменить нулевой маршрут, казалось бы, все просто, но не будем спешить. Обратим внимание на флаги текущего маршрута: DAd — динамический, активный, получен по DHCP, можно, конечно отключить получение маршрутов в DHCP-клиенте, но мы пойдем другим путем.

Вспомним, что если к одной цели ведут несколько маршрутов, то будет выбран тот, у которого самая узкая маска. Поэтому вместо одного нулевого маршрута добавим два, к сетям 0.0.0.0/1 и 128.0.0.0/1.

mikrotik-wireguard-014.png
В терминале выполните две команды:

/ip route
add disabled=no distance=1 dst-address=0.0.0.0/1 gateway=10.20.0.1 pref-src=»» routing-table=main scope=30 suppress-hw-offload=no target-scope=10
add disabled=no distance=1 dst-address=128.0.0.0/1 gateway=10.20.0.1 pref-src=»» routing-table=main scope=30 suppress-hw-offload=no target-scope=10

Вроде бы все сделано правильно, но интернет вообще перестал работать. Что случилось? Мы только что завернули в туннель весь исходящий трафик, в том числе и к нашему VPN-серверу, естественно, что соединение будет невозможно.

Поэтому добавим еще один маршрут к респондеру через основного провайдера.

mikrotik-wireguard-015.png

Или:

/ip route
add disabled=no dst-address=x.x.x.x/32 gateway=192.168.3.1 routing-table=main suppress-hw-offload=no

Где 192.168.3.1 — шлюз основного провайдера.

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

mikrotik-wireguard-016.png

Более подробные настройки для того или иного конкретного сценария выходят за рамки данной статьи и, как таковые, уже не относятся к настройкам WireGuard. Сам же WireGuard в RouterOS 7 есть и работает, при этом достаточно несложен в настройке, в чем мы только что убедились.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Небольшое отступление. Вдохновение для этой статьи я почерпнул из двух гайдов на Хабре: этом и этом. Рассказывать я также буду о перспективном туннеле в сети Интернет, современной замене GRE/IPIP с шифрованием. Сразу оговорюсь, что я не являюсь ни IT-специалистом, ни линуксоидом, поэтому описывать путь создания VPN буду максимально просто и подробно с инструкцией по шагам, для пользователей Windows-based ПК и телефона на Android.

Чем мне не понравился «точечный обход блокировок»? В настоящее время Роскомнадзором внесено в реестр уже более 2.1 млн ip-адресов. И с каждым днем эта цифра только растет. При формировании списков подсетей на сайте antifilter.download, в одной из подсетей может оказаться и ваш облачный провайдер (особенно активно блокируются адреса Amazon, Cloudflare и Hetzner DE). Обходить блокировки отдельных ip также нереалистично, т.к. это съест все ресурсы маршрутизатора. Поэтому я выбрал другой подход.

Что же такое Wireguard?

WireGuard — VPN-туннель нового поколения, созданный Джейсоном Доненфельдом (Jason A. Donenfeld), главой компании Edge Security. Проект разрабатывался как упрощенная и шустрая альтернатива OpenVPN и IPsec. Первая версия продукта содержала всего 4 тыс. строк кода. Для сравнения, в OpenVPN порядка 120 тыс. строк, а в IPSec — 420 тыс.

По словам разработчиков, WireGuard несложно настроить, а безопасность протокола достигается за счет проверенных криптографических алгоритмов: поточного шифра ChaCha20, криптографической имитовставки Poly1305 и собственных криптографических хеш-функций. Если вы используете OpenVPN, при смене сети: Wi-Fi, LTE или Ethernet нужно каждый раз переподключаться к VPN-серверу. Серверы WireGuard же не разрывают соединение, даже если пользователь получил новый IP-адреc. Стоит отметить также высокую скорость туннеля и низкие задержки, что является очень привлекательным для любителей он-лайн игр:

В чем преимущество собственного сервера?

Никогда до этого я не арендовал виртуальный частный сервер, но опыт использования услуг VPN-провайдеров имелся. И как правило VPN-туннели организованы по технологии OpenVPN (для стационарных ПК) и IPSec (для мобильных устройств): чаще всего порты и каналы, по которым вы подключаетесь к серверу, перегружены — вы делите их со множеством таких же клиентов. Но самое главное: нельзя быть до конца уверенным, не анализирует ли поставщик VPN-услуг ваш трафик? Арендованный виртуальный сервер дает вам полный контроль над вашим трафиком, шифрованный туннель защищает от атаки «человек-посередине» (т.н. MiTM), в качестве MITM может выступать и ваш провайдер, а собственный DNS-резолвер позволяет не только скрывать все DNS-запросы от вашего провайдера или оператора бесплатных сетей Wi-Fi (тем более это необходимо, если вы пользуетесь общественным Wi-Fi от ДИТ Москвы: на улицах или в парках), но и обеспечит нужную фильтрацию ненужного контента (например, позволит блокировать трекеры, телеметрию и прочую Wi-Fi-аналитику, и сделает это не только для сайтов в браузере, но и для мобильных приложений и операционной системы вообще). Более того, с этим решением вы сами получите мощный инструмент для анализа Интернет-активности приложений, установленных на собственном телефоне или компьютере.

Также вам не надо беспокоиться о количестве  клиентов (ведь VPN-провайдеры ограничивают количество подключенных устройств), т.к. у вас их могут быть сотни (на сколько хватит мощности сервера). Вы сможете легко настроить VPN-клиент для родных и близких: нужно только скачать приложение и переслать им файл конфигурации.

Собственный сервер мы будем разворачивать в одной из стран Евросоюза, но это вовсе не означает, что все цены в Интернет-магазинах для нас будут в евро. И в конце статьи я расскажу, как по-умному маршрутизировать трафик, оставляя необходимый в РФ.

С чего начать?

Для управления сервером вам нужно скачать и установить на свой компьютер два инструмента: Putty и WinSCP. Первый — это ssh-клиент для подключения удаленной консоли, второй — файловый менеджер. Также для организации домашней сети я рекомендую использовать маршрутизатор с операционной системой OpenWRT. Проверить, поддерживает ли ваш маршрутизатор данную операционную систему, можно на этой странице.

Перед созданием VPS я немного исследовал данный рынок и остановился на одном оптимальном решении — это немецкий хостер Hetzner. Он предлагает довольно производительное решение по доступной цене:

а также помесячную пост оплату через PayPal, упрощенную регистрацию (без идентификации по номеру мобильного телефона), удобную админку, и самое главное — в отличие от других провайдеров дешевых VPS — неограниченную полосу канала (например, можно столкнуться с ситуацией, когда провайдер декларирует подключение по порту в 1Гбит/сек (на сервер-ноду), скорость на VPS до 100 Мбит/сек, по факту же за 3 евро вы получите ограничение в 20 Мбит/сек). Пусть вас не пугает цифра в 20 ТБ трафика — во-первых, это очень много, во-вторых, учитывается только исходящий трафик (входящий трафик не учитывается от слова совсем). Локаций на выбор немного, большой разницы нет, я выбрал Финляндию.

И так, регистрируете аккаунт, и тут есть подводные камни.

Используйте максимально-аутентичные данные. Если город Москва, то и телефонный номер указывайте московский вместе с индексом. У Hetzner есть интеллектуальная система защиты, и, если вы выдадите совсем неправдоподобные данные (как у меня на картинке), вам предложат подтвердить свою личность, выслав скан паспорта (и проверка может занять довольно длительное время). Чтобы так не рисковать, указывайте настоящие данные (телефон, который они просят указать при регистрации — не мобильный).

Итак, пройдя успешно регистрацию, вы попадаете в облачную консоль: где создаете новый проект. После этого заходите в созданный проект и добавляете  сервер. Операционную систему выбирайте Debian 10 (объяснять установку буду для нее):

В пункте 8 можете сразу прописать человеческое имя для сервера. Сервер создается в течение нескольких секунд, а на почту вам приходит письмо с учетными данными для подключения по ssh:

Далее вы запускаете Putty и в первом окне вводите присвоенный серверу ip-адрес (желательно сразу сохранить данные в профиль):

Порт оставляете стандартным (22), потом мы его изменим. Логиньтесь под root, и при первом входе вам предложат изменить пароль (вставлять текст в консоль легко правой кнопкой мыши):

Как настроить сервер?

Т.к. в блоге нет специального инструмента, чтобы выделять код, который необходимо вставлять в окно консоли, я буду каждую команду начинать с символов ~# (их вводить не надо).

Добавляем репозиторий Wireguard (в настоящее время Wireguard находится в процессе активной разработки, еще не выпущена стабильная версия, полностью прошедшая аудит — учитывайте это в работе):

~# echo «deb http://deb.debian.org/debian/ unstable main» > /etc/apt/sources.list.d/unstable-wireguard.list

~# printf ‘Package: *\nPin: release a=unstable\nPin-Priority: 150\n’ > /etc/apt/preferences.d/limit-unstable

~# apt update

Обновляем все установленные пакеты:

~# apt full-upgrade

(когда спросят, со всем соглашаетесь).

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

~# apt install tzdata

~# dpkg-reconfigure tzdata

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

~# apt install linux-хедерs-$(uname -r)

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

~# apt install wireguard-dkms wireguard-tools

Устанавливаете сервер Unbound:

~# apt install unbound unbound-host

Далее подключаетесь к серверу через WinSCP:

Идете в /etc/wireguard/ и здесь вам надо создать файл wg0.conf — это будет конфигурация вашего сервера wireguard. Структура файла следующая:

[Interface]

Address = 10.0.0.1/8

Address = fd42:42:42::1/48

SaveConfig = false

PrivateKey =PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

ListenPort = 51820

[Peer]

PublicKey =AllowedIPs = 10.0.0.0/16, fd42:42:42::/60

[Peer]

PublicKey =AllowedIPs = 10.50.0.1/32, fd42:42:42:ffff::1/128

Немного о структуре файла, она пригодится и в дальнейшем, т.к. структура настроек Wireguard одинакова на любой машине: раздел [Interface] — это то, что относится к Wireguard на данном текущем устройстве (сервере, в нашем случае). Address — это текущий адрес интерфейса, в нашем примере контролирует подсети /8 и /48. SaveConfig — опция, позволяющая записывать текущее состояние настроек в файл при отключении интерфейса. Допустим, мы добавили нового клиента на сервер командой:

~# wg set wg0 peer allowed-ips /32

Чтобы сервер запомнил на будущее этого клиента и смог его подключить после перезагрузки, SaveConfig должна быть true. PrivateKey — приватный ключ интерфейса, он хранится всегда в файле конфигурации самого интерфейса, а обмен идет публичными ключами. PostUp и PostDown — это настройка Firewall, которые будут автоматически применяться и убираться при подключении и отключении интерфейса. ListenPort — порт, на котором сервер ждет новые подключения от клиентов. Можно назначить любой, 51820 — стандартный для Wireguard.

Раздел [Peer] — то, что относится к клиентам. Сюда можно вписывать новых клиентов, просто редактируя файл (но в этом случае параметр SaveConfig должен быть false). PublicKey — публичный ключ клиента, AllowedIPs — это адреса или подсети, с которых сервер будет ждать подключения конкретных клиентов. То есть, можно задать диапазон адресов, и если ip-адрес клиента с данным публичным ключом входит в этот диапазон, соединение устанавливается.

Будем полностью сидеть за NAT6, ничего страшного в этом нет. Пиров (клиентов сервера) здесь можно прописать сколько угодно, необходимо только каждому выдавать уникальный ip-адрес. В этом примере клиенту выдаются подсети /16 и /60, потому что это будет наш домашний маршрутизатор. Для мобильных клиентов можно выделять отдельные адреса.

Важная оговорка: данная инструкция разработана под Hetzner. Если вы по каким-либо причинам выбираете другого провайдера виртуальных серверов, вам необходимо внести правки в настройки Firewall, так как названия сетевых интерфейсов у разных провайдеров разные:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Здесь eth0 — это внешний сетевой интерфейс. У вас он может быть другим, например, ens4. Узнать название своего внешнего интерфейса можно командой:

~# ifconfig

Необходимо сгенерировать два ключа для сервера: приватный и публичный. Делаем это в консоли при помощи следующей команды:

~# wg genkey | tee server_private_key | wg pubkey > server_public_key

Два файла с ключами будут лежать в папке /root/ Вам надо будет скопировать их себе на компьютер. Также создаете пару ключей для клиента (маршрутизатора):

~# wg genkey | tee router_client_private_key | wg pubkey > router_client_public_key

Их также копируете на свой компьютер. Затем открываете файл с приватным ключом сервера в Notepad++, копируете содержимое и вставляете на место приватного ключа в файл wg0.conf. Публичный ключ клиента (маршрутизатора или мобильного телефона) вставляете в соответствующий раздел Peer. Проверяйте, чтобы файл был в Unix-кодировке:

и сохраняете его в /etc/wireguard/wg0.conf.

Теперь настроим DNS

Основной файл с настройками Unbound лежит по адресу /etc/unbound/unbound.conf. Если его открыть, можно увидеть следующую запись:

include: «/etc/unbound/unbound.conf.d/*.conf»

Это значит, что файл конфигурации сборный, собирается из всех файлов, лежащих в папке unbound.conf.d и имеющих расширение .conf. Поэтому мы этот файл закрываем и заходим в папку /etc/unbound/unbound.conf.d/, удаляем содержащиеся здесь файлы и скачиваем вместо них следующий файл main.conf. После того, как скачали, его необходимо открыть и вписать в 29 и 30 строки (outgoing-interface) ipv4 и ipv6 адреса вашего сервера, которые ему выдал Hetzner. Адреса можно узнать, если ввести в консоль следующую команду:

~# ifconfig eth0

Смотрите строку inet и первую строку inet6.

Сохраняете файл, проверив кодировку. В консоли выполняете следующую команду

~# curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache

Т.к. Unbound умеет обращаться к корневым серверам DNS, ему нужны их адреса, которые мы только что скачали. Чтобы этот файл оставался всегда свежим, его необходимо периодически обновлять. Делать это можно, если скачать данный файл root_hints, положить его в папку /etc/cron.daily/ и в свойствах сделать его исполняемым, отметив все X. Также его можно выполнить вручную:

~# /etc/cron.daily/root_hints

В папке cron.daily лежат скрипты, которые выполняются ежедневно по расписанию. Например, туда также можно положить следующий файл hosts_update_custom, проделав с ним те же манипуляции (это позволит реализовать полезные блокировки). Файл необходим для блокировки трекеров, malware-доменов, в котором можно использовать собственные черные и белые списки. Для этого необходимо предварительно создать в папке /etc/unbound два файла: myblacklist и mywhitelist и просто вписать в них нужные домены, начиная каждый с новой строки.

Unbound не создает автоматически файла логов, это надо сделать вручную:

~# touch /var/log/unbound.log

~# chown unbound:unbound /var/log/unbound.log

А в папку /etc/logrotate.d/ поместить файл unbound для ежедневной архивации логов.

UPD. Тут выяснил, что для работы DNSSEC надо отдельно проделать следующее:

~# unbound-anchor -a /etc/unbound/root.key

~# chown unbound.unbound /etc/unbound/root.key

В итоге мы получим кэширующий DNS-резолвер, который будет отвечать на запросы всех наших клиентов в виртуальной сети, будет делать проверку правильности ответов через подпись DNSSEC с реализацией QNAME minimization, а также блокировать трекеры.

После копирования всех файлов поднимаем Wireguard-сервер:

~# wg-quick up wg0

Делаем его автозапуск после перезагрузки сервера:

~# systemctl enable wg-quick@wg0.service

Не забываем сделать из нашего сервера маршрутизатор. Для этого открываем файл /etc/sysctl.conf и прописываем там следующие строки (можно их просто раскомментировать):

net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding=1

net.ipv6.conf.all.disable_ipv6=0

net.ipv6.conf.default.forwarding=1

После чего вводим в терминале:

~# sysctl -p

и рестартуем Unbound:

~# /etc/init.d/unbound restart

В ответ должны получить:

[ ok ] Restarting unbound (via systemctl): unbound.service.

Если не ок, делаем:

~# unbound-checkconf

И смотрим, на какие строки ругается.

Когда уже все настроете, для проверки DNSSEC можете зайти на сайт и нажать кнопочку, если палец вверх, значит все ок.

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

~# wg

Перезагрузить интерфейс можно путем выключения и включения:

~# wg-quick down wg0

~# wg-quick up wg0

Что еще нужно настроить на сервере?

Правильно, Firewall. Но сперва сменим порт для ssh подключения, т.к. боты сразу начинают пытаться подобрать пароль по словарям. По умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Открываем файл настроек /etc/ssh/sshd_config и изменяем следующую строку:

Port 23331

Сохраняем и рестартуем службу:

~# service sshd restart

Проверяем изменения:

~# netstat -tulnp | grep ssh

tcp 0 0 0.0.0.0:23331 0.0.0.0:* LISTEN 925/sshd
tcp6 0 0 :::23331 :::* LISTEN 925/sshd

Следующее подключение будем производить по порту 23331.

iptables я трогать не буду, т.к. им очень легко лишить себя доступа к серверу. Установим UFW:

~# apt install ufw

Откроем файл настроек /etc/default/ufw и убедимся, что параметр

IPV6=yes

выставлен в yes.

Прописываем настройки по умолчанию:

~# ufw default deny incoming

~# ufw default allow outgoing

Открываем порты:

~# ufw allow 23331/tcp # порт для ssh

~# ufw allow 53 # порт для DNS

~# ufw allow 51820/udp # порт для Wireguard

Наконец включаем UFW:

~# ufw enable

И проверяем его работу:

~# ufw status

1. Подготовка к настройке WireGuard. Обновление прошивки Mikrotik RouterOS 6 до RouterOS 7

WireGuard VPN доступен в Mikrotik начиная с 7-ой версии RouterOS. Если вы используете RouterOS v6 вам необходимо обновиться до её крайней стабильной версии, затем совершить обновление до RouterOS v7. Как осуществить обновление описано ниже. Если у вас уже установлен RouterOS v7, то данный пункт для вас неактуален, приступайте к следующему пункту.

Зайдите в панель управления роутером Mikrotik из WinBox или браузера. IP роутера по умолчанию 192.168.88.1

Нажмите кнопку System, затем нажмите кнопку Packages.

Нажмите кнопку Check For Updates для проверки наличия обновлений

Выберите Channel: stable и нажмите кнопку Download&Install

Дождитесь окончания установки прошивки и перезагрузки роутера. Теперь вам доступно обновление прошивки RouterOS до версии 7.

Выберите ранее недоступный Channel: upgrade и нажмите кнопку Download&Install

Дождитесь окончания установки прошивки и перезагрузки роутера.

Нажмите кнопку System-RouterBOARD

Нажмите кнопку Upgrade

Перезагрузите ваш Mikrotik

Вы обновили систему Mikrotik RouterOS до версии 7 и можете приступать к настройке WireGuard.

2. Настройка WireGuard VPN клиента на Mikrotik RouterOS

Данная инструкция предполагает настройку WireGuard клиента как с полным туннелированием трафика (пункт 2.4.А.) так и выборочным туннелированием для обхода блокировок (пункт 2.4.Б.) посредством маркировки пакетов маршрутизации VPN с помощью Firewall-Mangle, Firewall-Address Lists и создания маркированного маршрута IP-Routes.

В моём примере в качестве сервера используется VPS с установленным Wirehole докером , но для других конфигураций сервера инструкция также должна подойти, как минимум большая часть пунктов.

2.1. Отключение Fasttrack

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

Нажмите кнопку IP-Firewall и во вкладке Filter Rules отключите правило Fasttrack

2.2. Добавление интерфейса WireGuard и клиентской конфигурации Peer

Теперь вам необходимо настроить WireGuard клиент и использованием вашей конфигурации Peer для подключения к серверу с установленным WireGuard VPN.

Добавим и настроим новый интерфейс WireGuard

Нажмите кнопку WireGuard в левой панели

Нажмите кнопку +, затем заполните поля MTU (по умолчанию 1420), Listen Port и Private Key и нажмите OK. Значения Listen Port и Private Key содержатся в вашей конфигурации созданной на сервере Wireguard.

Интерфейс WireGuard добавлен

Нажмите вкладку Peers (содержит конфигурации для подключения WireGuard, как клиентские, так и серверные если Mikrotik используется в качестве сервера), затем добавьте новую клиентскую конфигурацию нажав кнопку +

Выберите ранее созданный Interface, заполните поля Public Key (публичный ключ клиента), Endpoint (IP сервера), Endpoint Port (Порт сервера), Preshared Key (общий ключ) своими данными созданными при конфигурации клиента на сервере. Также обязательно укажите allowed-address=0.0.0.0/0 для разрешения доступа клиента Wireguard ко всем подсетям роутера (позже можете настроить более детально)

Также необходимо добавить внутренний IP адрес вашего клиента в сети Wireguard. Войдите в IP-Addresses, нажмите +, заполните поля Address (внутренний IP клиента, берем из конфигурации клиента), Network (тоже самое что Address только последняя цифра 0), Interface (ранее созданный интерфейс Wireguard)

2.3. Создание таблицы маршрутизации для маркированных пакетов VPN трафика Wireguard

По умолчанию RouterOS определяет таблицу маршрутизации «main», для добавления маршрутов в FIB (Forwarding Information Base, дословно информационная база пересылки, которая используется для принятия решений о пересылке пакетов и содержит копию необходимой маршрутной информации)

Нам потребуется пользовательская таблица маршрутизации, ее следует определить в меню Routing-Tables для добавления маршрутов Wireguard в FIB

Перейдите в меню Routing-Tables, нажмите +, затем заполните поле Name значением wg_mark и обязательно поставьте галочку FIB

2.4. Создание списков адресов и правил разметки пакетов маршрута Wireguard VPN

Для маркированного маршрута интерфейса Wireguard необходимо создать списки адресов (Address Lists) которые будут использовать Wireguard VPN и правило разметки пакетов маршрута (Mangle), они будут отличаться в зависимости от того каким образом вы хотите туннелировать VPN трафик:

  • Если вам нужно полное туннелирование VPN трафика — выполняйте пункт 2.4.А. (все сайты будут открываться через VPN)
  • Если вам нужно выборочное туннелирование, к примеру для обхода ограничений доступа к некоторым сайтам — выполняйте пункт 2.4.Б.

2.4.А. Полное туннелирование трафика VPN Wireguard на Mikrotik

Теперь мы подготовим список адресов использующих Wireguard. В случае с полным туннелированием необходимо указать IP локальной сети роутера, чтобы все устройства подключенные к ней использовали Wireguard VPN для доступа к сайтам.

Перейдите в Firewall-Address Lists и нажмите +, затем заполните поля Name и Address. В поле Name укажите full_wg, поле Address заполните IP адресом локальной сети роутера (по умолчанию 192.168.88.0/24). Нажмите OK.

Добавьте правило разметки пакетов маршрута, для этого перейдите в IP-Firewall-Mangle, нажмите +, затем заполните поля Chain, Src Address List, Action, New Routing Mark и нажмите OK.

Chain = prerouting (перевод: Сеть = предварительная маршрутизация)

Src Address List = full_wg (перевод: Список исходных адресов = ранее созданный список адресов для полного туннелирования, п. 2.4.А.)

Action = mark routing (перевод: Действие = пометить маршрутизацию)

New Routing Mark = wg_mark (перевод: Новая метка маршрутизации = ранее созданная таблица маршрутизации п. 2.3)

2.4.Б. Выборочное туннелирование трафика VPN Wireguard на Mikrotik

Для выборочного туннелирования вам потребуется создать новые списки адресов в Firewall-Address Lists по аналогии с пунктом 2.4.А. Только указывать в данных списках нужно имена сайтов или сразу их IP адреса на которые вы будете заходить через VPN. Mikrotik сам распознает адреса указанных сайтов и добавляет (обновляет по истечению TTL) их IP в Address Lists.

Применять BGP я не стал по причине большой нагрузки на процессор и ненадобности больших списков (вы не будете пользоваться даже половиной ресурсов из списков того же антизапрета, потому лучше добавьте сайты вручную)

Перейдите в Firewall-Address Lists и нажмите +, затем заполните поля Name и Address. В поле Name укажите rkn_wg, поле Address заполните именем интересующего сайта или его IP адресом. Нажмите ОК.

Для других сайтов в новых списках вы должны будете указать тот же Name что и для первого, но заполнить Address другим именем сайта или IP.

Добавьте правило разметки пакетов маршрута, для этого перейдите в IP-Firewall-Mangle, нажмите +, затем заполните поля Chain, Dst Address List, Action, New Routing Mark и нажмите OK.

Chain = prerouting (перевод: Сеть = предварительная маршрутизация)

Dst Address List = full_wg (перевод: Список адресов назначения)

Action = mark routing (перевод: Действие = пометить маршрутизацию)

New Routing Mark = wg_mark (перевод: Новая метка маршрутизации = ранее созданная таблица маршрутизации п. 2.3)

После выполнения инструкции до конца проверьте свой VPN именно на https://2ip.ru/ и он покажет IP адрес вашего сервера, так как данный ресурс мы прописали в вышеупомянутый список. Если же вы откроете https://whoer.net/ru то whoer покажет ваш реальный IP.

Если заблокированный сайт все равно не открывается, добавьте два адрес листа для одного и того же сайта, одно с указанием www.домен.com второе без www, просто домен.com

Также есть шанс того что Mikrotik неправильно заполнит IP для имен указанных в адрес лист сайтов, в этом случае поменяйте DNS для роутера в IP-DNS (не путать с DNS для клиентов роутера в IP-DHCP Server-Network), для Wirehole укажите DNS своего сервера, для голого Wireguard нужно искать хорошие DNS сервера (DNS Google больше не спасает)

2.5. Создание правила маршрутизации для Wireguard VPN

Создайте новое правило маршрутизации для интерфейса Wireguard с указанием ранее созданной таблицы маршрутизации (п. 2.3).

Для этого перейдите в IP-Routes, нажмите +, затем заполните поля Gateway, Distance, Routing Table

Gateway = wireguard1 (название вашего Wireguard интерфейса из п. 2.2)

Distance = 1 (приоритетность соединения, чем ниже значение — тем приоритетнее)

Routing Table = wg_mark (ранее созданная таблица маршрутизации п. 2.3)

Также вам необходимо понизить приоритет стандартного DHCP клиента.

Для этого перейдите в IP-DHCP Client, выберите существующую запись DHCP клиента, измените значение поля Add Default Route на Special Classless и укажите значение поля Default Route Distance = 2 во вкладке Advanced

2.6. Разрешение соединения Wireguard VPN в Firewall-Nat

По умолчанию Firewall не предполагает наличия вашего соединения Wireguard интерфейса и вам необходимо вручную прописать для него правило masquerade.

Для этого войдите в Firewall-Nat, нажмите +, затем заполните поля Chain, Out. Interface, Action, нажмите OK.

Chain = crsnat

Out. Interface = wireguard1 (название вашего интерфейса Wireguard)

Action = masquerade

Настройка WireGuard на RouterOS завершена. Проверьте своё VPN соединение https://whoer.net/ru или https://2ip.ru/ (если настроили выборочное туннелирование)

3. Смена DNS провайдера

Для того чтобы сменить DNS провайдера перейдите в IP-DHCP Server-Networks, выберите существующую запись DHCP сервера, войдите в неё и измените значение поля DNS Servers.

Если вы используете голый WireGuard без Unbound и DNSProxy укажите в поле DNS Servers следующие IP: 8.8.8.8, 8.8.4.4

Если вы используете Unbound или WireHole из этой инструкции , то в поле DNS Servers укажите 10.2.0.100 (иногда нужно вводить 10.6.0.1). В случае использования DNS Proxy укажите IP своего DNS сервера.

4. MTU fix для Mikrotik Wireguard (mss clamp to pmtu)

Если ваш Mikrotik с установленным WireGuard медленно открывает сайты или вообще не открывает некоторые сайты, то вам нужно установить корректный MTU ( Как определить оптимальный размер MTU? ), или вы можете воспользоваться fix MTU.

Используйте данный пункт только в случае серьезных проблем с загрузкой сайтов!

Откройте консоль Mikrotik нажав кнопку New Terminal

Выполните следующую команду:

Перезапустите Mikrotik нажатием кнопки Reboot затем нажмите кнопку Yes. Или воспользуйтесь командой /system reboot в теминале.

В итоге выполненных действий будет добавлено следующее правило IP-Firewall-Mangle, которое исправляет проблему медленной и нестабильной работы WireGuard на Mikrotik:

5. VPN туннель в локальную сеть

В данном пункте инструкции мы настроим VPN-туннель в локальную сеть Mikrotik с помощью «WireGuard» и обеспечим доступ из интернета к узлам LAN с различных устройств. Протестировано совместно с предыдущими пунктами инструкции и с WireHole .

Вы сможете свободно подключаться к устройствам из локальной сети Микротика при включенном VPN Wireguard на устройстве вне локальной сети.

5.1. Для голого Wireguard

Если вы используете голый WireGuard (не WireHole), то для того чтобы сервер WireGuard и его клиенты видели локальную сеть роутера, вам нужно внести корректировки в файл wg0.conf на вашем VPS сервере.

Найдите правила PostUp и PostDown в файле wg0.conf и удалите из них свой локальный интерфейс сервера (в моем случае eth0) чтобы правило masquerade работало для всех доступных интерфейсов.

Найдите строки содержащие Peer вашего Mikrotik в wg0.conf и добавьте IP адрес вашей локальной сети роутера в AllowedIPS (в моем случае 192.168.88.0/24)

Сохраните изменения в файле wg0.conf и перезапустите Wireguard на вашем VPS сервере.

5.2. Для WireHole

Если вы используете Wirehole, то вам НЕ нужно редактировать файл wg0.conf, так как он все равно перезапишется докером. Вам необходимо отредактировать шаблон по созданию файла сервера Wireguard — server.conf (находится в папке wirehole/wireguard/templates).

Только в шаблоне server.conf вы можете прописать статичную конфигурацию Peer, отличающуюся от других клиентов Peer создаваемых докером (нельзя прописывать адрес локальной сети всем пирам в AllowedIPs). Также необходимо удалить название статичного Peer микротика из docker-compose.yml чтобы докер не задвоил вам конфигурацию для вашего роутера.

Измените правила PostUp и PostDown по аналогии с голым WireGuard.

Добавьте строки конфигурации Peer вашего роутера в конец файла server.conf, их можно скопировать из файла сгенерированного докером (папка wirehole/wireguard/peer_mikrotik), потом вы можете удалить папку wirehole/wireguard/peer_mikrotik так как она больше не будет генерироваться докером по причине удаления конфига микротика из docker-compose.yml.

Удалите название Peer микротика из docker-compose.yml и перезапустите докер.

Генерирование новых конфигов в WireHole происходит согласно содержимому файлов docker-compose.yml и server.conf, peer.conf (wirehole/wireguard/templates) при любом изменении в docker-compose.yml и перезапуска докера (cd wirehole && docker-compose up).

Также советую прописывать конфигурации Peer в docker-compose.yml не числом пиров, а названиями пиров через запятую (PEERS=DELL,OP8T,XXXXXXX,mikrotik)

5.3. Общие рекомендации

Если вы используете в Mikrotik конфигурацию по умолчанию то вам необходимо перейти в Interfaces-Interface Lists и добавить ранее созданный интерфейс wireguard1 в LAN

Данное действие необходимо для корректной работы стандартного правила Firewall defconf: drop all not coming from LAN, в противном случае данное правило заблокирует доступ к локальной сети для интерфейса wireguard1

Ответ из форума по созданию домашней сети на базе MikroTik

3km August 13, 2021, 9:56am #39

Добрый день!
когда делаю настройку с полным сбросом конфигурации по инструкции Создание домашней сети на базе MikroTik | GREGORY GOST

и последующей настройкой Обход блокировки на mikrotik — #36 by khammatov

антизапрет работает, но сильно режет скорость, даже с отключенным антизапретом (350-400 от 600мб/с траифа)

Если делаю сброс, базовую настройку через wizard — со скоростью все отлично, но антизапрет работает криво
в DNS Leak Test вижу 8 адресов 6 из Росиии (Cloudfare ip4 и ip6 по 3 )
и два немецких ip4, причем немецкие появляются не всегда, наверно в 2х из 5 тестов.

сверял обе конфигурации — не могу понять откуда подтягиваются dns сервера от провайдера

khammatov August 13, 2021, 5:35pm #40
khammatov:

Проведем осмотр всех своих интерфейсов в том числе и DHCP-Client на наличие включенного пункта Use Peer DNS

Покажите что у вас есть по команде такой /ip dns print

dns1034×296 18.5 KBdns

Да и скриншот с результатом DNS Leak Test — BrowserLeaks

3km August 13, 2021, 5:50pm #41

/ip dns print
servers:
dynamic-servers: 192.168.104.1
use-doh-server:
verify-doh-cert: no
allow-remote-requests: yes
max-udp-packet-size: 4096
query-server-timeout: 2s
query-total-timeout: 10s
max-concurrent-queries: 100
max-concurrent-tcp-sessions: 20
cache-size: 2048KiB
cache-max-ttl: 1w
cache-used: 99KiB

Либо, если vpn погашен:
servers: 77.88.8.8,9.9.9.9
dynamic-servers:
use-doh-server:
verify-doh-cert: no
allow-remote-requests: yes
max-udp-packet-size: 4096
query-server-timeout: 2s
query-total-timeout: 10s
max-concurrent-queries: 100
max-concurrent-tcp-sessions: 20
cache-size: 2048KiB
cache-max-ttl: 1w
cache-used: 44KiB

пробую разные dns, и списки российских серверов в dnsleak появляются при выборе 1.1.1.1

IP Address :ISP :Location :

RU
172.68.14.33
Cloudflare, Inc. Russia, Moscow
RU
172.68.14.189
Cloudflare, Inc. Russia, Moscow
RU
172.68.14.195
Cloudflare, Inc. Russia, Moscow
RU
2400:cb00:87:1024::ac44:e21
Cloudflare, Inc. Russia, Moscow
RU
2400:cb00:87:1024::ac44:ebd
Cloudflare, Inc. Russia, Moscow
RU
2400:cb00:87:1024::ac44:ec3
Cloudflare, Inc. Russia, Moscow

khammatov August 13, 2021, 6:04pm #42

Скриншот из теста, когда АнтиЗапрет работает показывайте.

3km August 13, 2021, 9:13pm #43

проблема нашлась, но не там.
яндекс браузер похоже что то мутит с днс,

попробовал с FF и оперу — работает норм, как и с мобильных устросйтв.
во всех случаях по одному адресу в списке днс,

khammatov August 13, 2021, 9:30pm #44

Вот и отлично.

<хедер class=»source»> 
yandex.ru

Protect: защита DNS-запросов. Справка

Написать в службу поддержки

3km August 14, 2021, 7:19pm #45

Еще один нюанс всплыл.
Если использовать в микротике Wizard для базовой настройки — у Яндекс браузера остается возможность подменять/дополнять списки dns серверов.

у меня не хватает компетенций найти в чем разница конфигураций…

vit October 4, 2021, 12:43pm #46dns1034×296 18.5 KBdns
для чего у тебя установлена опция » verify-doh-cert: yes»
ведь тыже не используешь его?Fomichok October 28, 2021, 6:11am #47

Почему-то не работает… :frowning:
ВПН антизапрета подключился без проблем, но заблокированные сайты не открываются. Ниже данные настроек. Помогите пожалуста :slight_smile:

/ip dns print
servers:
dynamic-servers: 192.168.104.1
use-doh-server: https://dns.google/dns-query
verify-doh-cert: no
allow-remote-requests: yes
max-udp-packet-size: 4096
query-server-timeout: 2s
query-total-timeout: 10s
max-concurrent-queries: 100
max-concurrent-tcp-sessions: 20
cache-size: 2048KiB
cache-max-ttl: 1w
cache-used: 134KiB

Тест на сайте DNS Leak Test — BrowserLeaks выдаёт следующие адреса:

74.125.46.2Google LLCFinland, Lappeenranta

74.125.46.130 Google LLC Finland, Lappeenranta
74.125.46.131 Google LLC Finland, Lappeenranta
74.125.46.134 Google LLC Finland, Lappeenranta
74.125.46.135 Google LLC Finland, Lappeenranta
74.125.46.140 Google LLC Finland, Lappeenranta
74.125.46.141 Google LLC Finland, Lappeenranta
74.125.74.3 Google LLC Finland, Lappeenranta
74.125.74.7 Google LLC Finland, Lappeenranta
74.125.74.8 Google LLC Finland, Lappeenranta
74.125.74.9 Google LLC Finland, Lappeenranta
74.125.74.13 Google LLC Finland, Lappeenranta
74.125.74.131 Google LLC Finland, Lappeenranta
74.125.74.134 Google LLC Finland, Lappeenranta
74.125.74.136 Google LLC Finland, Lappeenranta
74.125.74.141 Google LLC Finland, Lappeenranta
74.125.74.142 Google LLC Finland, Lappeenranta
74.125.74.145 Google LLC Finland, Lappeenranta
74.125.74.146 Google LLC Finland, Lappeenranta
74.125.112.4 Google LLC Finland, Lappeenranta
74.125.112.9 Google LLC Finland, Lappeenranta
74.125.112.11 Google LLC Finland, Lappeenranta
74.125.112.15 Google LLC Finland, Lappeenranta
74.125.114.129 Google LLC Finland, Lappeenranta
74.125.114.131 Google LLC Finland, Lappeenranta
74.125.114.136 Google LLC Finland, Lappeenranta
74.125.114.141 Google LLC Finland, Lappeenranta
172.68.9.105 Cloudflare, Inc. Russia, Moscow
172.68.14.201 Cloudflare, Inc. Russia, Moscow
172.68.14.207 Cloudflare, Inc. Russia, Moscow
172.217.37.134 Google LLC Finland, Lappeenranta
172.217.37.137 Google LLC Finland, Lappeenranta
172.217.37.138 Google LLC Finland, Lappeenranta
173.194.98.1 Google LLC Finland, Lappeenranta
173.194.98.6 Google LLC Finland, Lappeenranta
173.194.98.7 Google LLC Finland, Lappeenranta
173.194.98.8 Google LLC Finland, Lappeenranta
173.194.98.14 Google LLC Finland, Lappeenranta
173.194.98.15 Google LLC Finland, Lappeenranta
2400:cb00:87:1024::ac44:969 Cloudflare, Inc. Russia, Moscow
2400:cb00:87:1024::ac44:ec9 Cloudflare, Inc. Russia, Moscow
2400:cb00:87:1024::ac44:ecf Cloudflare, Inc. Russia, Moscow
2a00:1450:4010:c02::101 Google LLC Finland, Lappeenranta
2a00:1450:4010:c02::102 Google LLC Finland, Lappeenranta
2a00:1450:4010:c02::107 Google LLC Finland, Lappeenranta
2a00:1450:4010:c06::10a Google LLC Finland, Lappeenranta
2a00:1450:4010:c06::10b Google LLC Finland, Lappeenranta
2a00:1450:4010:c08::10c Google LLC Finland, Lappeenranta
2a00:1450:4010:c0a::10a Google LLC Finland, Lappeenranta
2a00:1450:4010:c0a::10c Google LLC Finland, Lappeenranta
2a00:1450:4010:c1c::10c Google LLC Finland, Lappeenranta
2a00:1450:4010:c1e::104 Google LLC Finland, Lappeenranta
2a00:1450:4010:c1e::105 Google LLC Finland, Lappeenranta
2a00:1450:4010:c1e::10d Google LLC Finland, Lappeenranta

khammatov October 28, 2021, 7:02am #48

Отключите Google DOH.
Найдите причину появления адресов Cloudflare.
Читайте инструкцию заново.

Fomichok October 28, 2021, 7:57am #49

Инструкция вся зачитана и перечитана. Правила редиректа и маскарада в NAT-е микротика созданы и располагаются в самом верху, трафик в правила попадает. Может адреса как-то подставлять мой провайдер? У меня подключение к провайдеру по VPN (PPTP) и в настройках интерфейса нет пункта Use Peer DNS.
Без DOH адреса CloudFlare всё равно присутствуют.

khammatov October 28, 2021, 8:14am #50

Попробуйте тест через смартфон например, исключите браузер.
Или сразу браузер проверьте, там тоже DOH может быть включен.
Firefox, Chrome точно имеют такую функцию, выше про Яндекс есть, он так же вроде делает.

Насчет ВПН не могу ничего добавить, не сталкивался с такими уловками.

← previous page next page →

Обязательно, ВАЖНО, не ставить галочку Add Default Route

Интерфейс подключен, радуемся буковке R рядом с его названием.

Теперь надо объяснить микротику, для чего этот интерфейс будет использоваться.

Начнем с того, что нам надо промаркировать все пакеты, которые направляются из нашей сети в мир, и при этом идут на адреса, которые по психическому отклонению заблокировал РосКомНадзор.

IP — Firewall — Mangle — Add

Mangle

Легко видеть, что Src.Address это наша сеть, dst Address list пишете любой, я рекомендую писать нечто короткое, например rkn, в закладке Action — Mark Routing, New routing Mark — имя метки. Я использовал testmark

Теперь все пакеты, которые ходят по адресам из списка rkn помечаются меткой testmark

Но что же микротику делать с этой меткой? Надо ему объяснить.

Для этого нам потребуется во-первых этому интерфейсу дать метрику.

IP — Routes — ADD

Ip-Routes

Заполняйте как на картинке, Gateway — ваше подключение pptp. При этом в Routing Mark должна быть вставлена та метка, которую мы делали раньше

Теперь очень важно, чтобы по этому интерфейсу вообще было разрешено ходить, то есть нам нужен маскарадинг.

IP-Firewall-NAT-Add

в Out Interface должен быть наш PPTP

На этом настройка микротика первичная закончена и мы вернемся к нему уже в самом конца.

Шаг 3. Получаем данные от РКН

РосКомНадзор не отдает простым смертным списки своих заблокированных адресов. При этом можно смотреть заблокирован или нет какой-либо сайт или ip прямо на их сайте. В целом существует по крайней мере два сайта, которые собирают эти данных и отдают в качестве одного файла, ими мы и воспользуемся. Я рекомендую вот этот api. По факту все что нам нужно — это скачивать актуальный список заблокированных IP по этой ссылке. Если вы скачали данный файл, то заметите, что он в ужасающем виде, который использовать в реальной жизни без подготовки примерно невозможно вообще.

Но у нас есть сервер, на котором уже крутится Ubuntu 14 и мы им и воспользуемся.

За все скрипты спасибо моему товарищу Morphenix-у. Скрипты были найдены на просторах интернета и творчески им переработаны.

Но прежде чем пользоваться скриптами нам надо поставить ftp на наш vps. Это нужно для того, чтобы без проблем передавать этот файл в наш микротик по расписанию в будущем. Установка ftp — это просто.

sudo apt-get install proftpd

Затем выбрать Standalone при установке.

Теперь правим конфиг

nano /etc/proftpd/proftpd.conf

В конфиге нам надо изменить имя сервера и посмотреть какой используется пользователь. В моем случае пользователя звали ftp, в стандартном конфиге пользователя зовут proftpd. Для этого пользователя вам потребуется пароль. Для этого вводим:

sudo passwd proftpd

Еще очень важно раскомментировать (убрать # с этой строки)

DefaultRoot ~

Итак наш фтп работает, что можно проверить, например, через Total Commander или Far. Будьте внимательны, все данные фтп лежат на сервере в srv/username, в ней мы и будем дальше работать

Далее буду страшные скрипты. Их надо переместить в папку srv/username. Я для этого использую Winscp.

script.awk

@include “/srv/USERNAME/lib_netaddr.awk”

function sanitize(ip) {
split(ip, slice, “.”)
return slice[1]/1 “.” slice[2]/1 “.” slice[3]/1 “.” slice[4]/1
}

function snbounds(to,i) {
sn_min=grp[1]
sn_max=grp[to]

for(sn_mask=32; sn_mask && sn_min != sn_max; sn_mask — ) {
sn_min = rshift(sn_min,1)
sn_max = rshift(sn_max,1)
}

for(i=32; i>sn_mask; i — ) {
sn_min = lshift(sn_min,1)
sn_max = lshift(sn_max,1) + 1
}
}

function grpstd(val, tot, cnt, mean, sqtot) {
cnt = length(grp)
snbounds(cnt)
tot = sn_min + sn_max
cnt += 2
for(val in grp) tot=tot + grp[val]
mean = tot / cnt
sqtot = (sn_min — mean) * (sn_min — mean) + \
(sn_max — mean) * (sn_max — mean)
for(val in grp) {
sqtot = sqtot + (grp[val] — mean) * (grp[val] — mean)
}
return sqrt(sqtot / cnt)
}

BEGIN { limit=1000 }

{ k[NR]=ip2dec(sanitize($1)) }

END {
n=asort(k)
print “/ip firewall address-list”

for(idx=1; idx <= n ; idx++) {
grp[++have]=k[idx]
# print dec2ip(grp[have]) “ std: “ grpstd()
if(grpstd() > limit) {
snbounds(length(grp)-1)
#print “\nSubnet from “ dec2ip(grp[1]) “ to “ dec2ip(grp[have-1]) “ “ have — 1 “ IP(s)”
print “add address=” dec2ip(sn_min) “/” sn_mask “ list=rkn”
have=split(grp[have], grp)
}
}
if (have) {
snbounds(length(grp))
#print “\nSubnet from “ dec2ip(grp[1]) “ to “ dec2ip(grp[have]) “ “ have “ IP(s)”
print “add address=” dec2ip(sn_min) “/” sn_mask “ list=rkn”
}
}

lib_netaddr.awk

#
# Library with various ip manipulation functions
#

# convert ip ranges to CIDR notation
# str range2cidr(ip2dec(“192.168.0.15”), ip2dec(“192.168.5.115”))
#
# Credit to Chubler_XL for this brilliant function. (see his post below for non GNU awk)
#
function range2cidr(ipStart, ipEnd, bits, mask, newip) {
bits = 1
mask = 1
result = “-A cidr “
while (bits < 32) {
newip = or(ipStart, mask)
if ((newip>ipEnd) || ((lshift(rshift(ipStart,bits),bits)) != ipStart)) {
bits —
mask = rshift(mask,1)
break
}
bits++
mask = lshift(mask,1)+1
}
newip = or(ipStart, mask)
bits = 32 — bits
result = result dec2ip(ipStart) “/” bits
if (newip < ipEnd) result = result “\n” range2cidr(newip + 1, ipEnd)
return result
}

# convert dotted quads to long decimal ip
# int ip2dec(“192.168.0.15”)
#
function ip2dec(ip, slice) {
split(ip, slice, “.”)
return (slice[1] * 2²⁴) + (slice[2] * 2¹⁶) + (slice[3] * 2⁸) + slice[4]
}

# convert decimal long ip to dotted quads
# str dec2ip(1171259392)
#
function dec2ip(dec, ip, quad) {
for (i=3; i>=1; i — ) {
quad = 256^i
ip = ip int(dec/quad) “.”
dec = dec%quad
}
return ip dec
}

# convert decimal ip to binary
# str dec2binary(1171259392)
#
function dec2binary(dec, bin) {
while (dec>0) {
bin = dec%2 bin
dec = int(dec/2)
}
return bin
}

# Convert binary ip to decimal
# int binary2dec(“1000101110100000000010011001000”)
#
function binary2dec(bin, slice, l, dec) {
split(bin, slice, “”)
l = length(bin)
for (i=l; i>0; i — ) {
dec += slice[i] * 2^(l-i)
}
return dec
}

# convert dotted quad ip to binary
# str ip2binary(“192.168.0.15”)
#
function ip2binary(ip) {
return dec2binary(ip2dec(ip))
}

# count the number of ip’s in a dotted quad ip range
# int countIp (“192.168.0.0” ,”192.168.1.255″) + 1
#
function countQuadIp(ipStart, ipEnd) {
return (ip2dec(ipEnd) — ip2dec(ipStart))
}

# count the number of ip’s in a CIDR block
# int countCidrIp (“192.168.0.0/12”)
#
function countCidrIp (cidr) {
sub(/.+\//, “”, cidr)
return 2^(32-cidr)
}

Скрипты объединяют IP в подсети и собирают из них приличный внешний вид для дальнейшей обработки. Все скрипты направлены на парсинг изначальной выгрузки, с которой мы работаем.

Также потребуется создать файл vpn.sh, мы же это умеем уже делать, да?

nano start.sh

И внутрь добавить

#!/bin/bash

cat $1 | grep -E -o “(25[0–5]|2[0–4][0–9]|[01]?[0–9][0–9]?)\.(25[0–5]|2[0–4][0–9]|[01]?[0–9][0–9]?)\.(25[0–5]|2[0–4][0–9]|[01]?[0–9][0–9]?)\.(25[0–5]|2[0–4][0–9]|[01]?[0–9][0–9]?)” | sort -t. -n -k1,1 -k2,2 -k3,3 -k4,4 | uniq | awk -f /srv/USERNAME/script.awk > /srv/USERNAME/subnets.rsc

Будьте внимательны, слово USERNAME надо поменять на ваше имя пользователя, которым вы заходите на FTP и в папке которого находятся скрипты

Ну что же, все что нам нужно у нас есть, вы можете запустить

/srv/USERNAME/start.sh all.php

И посмотреть результат работы. В результате создается файл subnets.rsc, который мы и будем загружать в наш Микротик, ради чего мы все тут и собрались.

Но нам нужны актуальные данные, потому данная процедура будет выполняться каждую ночь, чтобы с утра никаких блокировок мы не ощущали.

Для этого мы воспользуемся CRON

crontab -e

Нам потребуется выполнить две задачи:

  1. Нам надо скачивать каждую ночь наш файл
  2. Парсить данный файл, чтобы он был готов к загрузке в mikrotik

Итого выглядеть это будет так:

30 3 * * * wget -O /srv/USERNAME/all.php http://api.antizapret.info/all.php
50 3 * * * /srv/USERNAME/start.sh /srv/USERNAME/all.php

Не забываем менять USERNAME на имя нашего пользователя.

В 3–30 утра по времени сервера будет делаться закачка новой версии файла, в 3–50 утра будет парсится и делаться файл subnets.rsc

На этом настройка закончена и нам остается только подключить к этому всему Микротик.

Шаг 4. All Hail Mikrotik

Идем в винбокс и создаем первый скрипт. System — Scripts — ADD

{
:global ftpserver
:global usrnme
:global passwd
:global pckgname

:set pckgname (“subnets.rsc”)
:set ftpserver “IP_ADDRESS”
:set usrnme “USERNAME”
:set passwd “PASSWORD”

/tool fetch address=”$ftpserver” src-path=”$pckgname” user=”$usrnme” password=”$passwd” mode=ftp
}

Не забываем в скрипте подставить свой IP, Username и пароль. Выглядеть будет это так:

Downloadallphp

Данный скрипт просто качает файл с сервера

Второй скрипт несколько сложнее — он уточняет скачал ли первый скрипт файл, удаляет все что было в адрес листе (нам же не нужны старые данные) и заполняет новые данные, после чего удаляет файл с микротика

:if ([:len [/file find name=subnets.rsc]] > 0) do={
/ip firewal address-list remove [find]
import file=subnets.rsc
/file remove subnets.rsc
}

Теперь мы можем по очереди нажать Run Script на первом файле, потом на втором и у нас УЖЕ будет работать обход блокировок и гугл будет нормально открываться.

Но нам этого мало. Нам надо, чтобы оно обновлялось автоматически, не зря же мы так старались со скриптами выше.

Потому мы идем в System — Scheduler и там создаем два простых правила, просто запускающие наши скрипты. Обратите внимание, что неплохо иметь хотя-бы 10 минут между их запуском по времени. Интервал 24 часа говорит нам о том, что запускаться они будут каждый день.

На этом настройка полностью закончена.

Шаг 5. Вместо заключения

Я бы очень хотел, чтобы государственные службы вместо того, чтобы рушить обычные сайты ни в чем не повинных людей — занимались делом и исполняли закон. Если сделать это не могут — нанять квалифицированных людей, которые могут.

Данный текст направлен исключительно на то, чтобы ходить на легальные сайты, которые по очевидным ошибкам РосКомНадзора стали заблокированы.

Источники

https://kb.introserv.eu/ru/windows-server/wireguard-windows-setuphttps://interface31.ru/tech_it/2022/04/nastroyka-wireguard-vpn-dlya-dostupa-v-internet.htmlhttps://vpnki.ru/settings/before-you-begin/guide5-wireguard-server-windowshttps://vc.ru/dev/155768-stroim-vpn-tunnel-v-lokalnuyu-set-s-pomoshchyu-wireguardhttps://moonback.ru/page/wireguard-debian-keenetichttps://interface31.ru/tech_it/2022/04/nastroyka-wireguard-vpn-na-routerah-mikrotik.htmlhttps://overclockers.ru/blog/Indigo81/show/30877/wireguard-openwrt-unbound-divnyj-novyj-mir-vpnhttps://dzen.ru/a/YlSlHeNcqySLSmCLhttps://ntc.party/t/mikrotik/666/36https://medium.com/@Croozy/mikrotik-%D0%B8-%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BC%D0%BD%D0%B0%D0%B4%D0%B7%D0%BE%D1%80-%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9-%D0%B8-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BE%D0%B1%D1%85%D0%BE%D0%B4-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D1%85-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BE%D0%BA-b58647f7d314

 

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: