{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

Очередная статья про VPN

Добрый день. Статья сложнее чем установка VPN в 2 клика, но позволяет создать свой, более-менее, защищенный VPN сервер на связке WireGuard + Adguard Home. Связка, вам скажу - бомбическая. Мы не только шифруем трафик, а еще и чистим его от тонны всякого овна.

И это позволяет создать, во всех смыслах, безопасный интернет для вас и вашей семьи.

Статья разбиты на 3 раздела:

Часть 1: VPS сервер

Для начала нужно арендовать VPS сервер. Так как в РФ VPN не особо жалуют власти, то арендуем сервер не в РФ. Кстати, так получается намного дешевле. Подобрать дешевый VPS можно на сайте Lowendbox. Я например, в прошлом году арендовал сервер от RackNerd за 11 USD. И за 1 год, ни разу не получил каких-либо проблем. Для наших нужд нам хватит самый дешевый вариант, с 1 CPU и 1 Gb RAM.

Update: с некоторых пор оплатить хостинг за $ стало крайне сложно, поэтому рекомендую уже хостинг VPS на VDSina (реферальная ссылка, если хотите отблагодарить автора). Сервера дешевые (11 рублей в сутки), находятся в Голландии, IP мне выдал чистый по проверки в спам-базах.

Обязательно проверяем IP сервера, по наличию в спам-базах. Делается это просто, через сервис 2IP.

Купили сервер, начинаем его настройку.

Update 2: в качестве ОС я использую Ubuntu Server, статья написана именно под эту систему.

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

Если мы используем хостинг от VDSina, публичный ключ вставляем в разделе Мои серверы -> SSH ключи.

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

Начинаем настройку сервера:

sudo apt install fail2ban -y sudo apt install ufw -y sudo apt update && sudo apt upgrade -y sudo touch /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local ---> откроется редактор, вставим в него код: [sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/auth.log findtime = 600 maxretry = 3 bantime = 43200 нажимаем ctlr + x, далее Y и enter чтобы сохранить

Внимание! Ниже кусок раздела применимый для других серверов, для VDSina мы уже добавили наш ключ, как указано выше.

Добавляем наш ключ на сервер:

Содержание скрыто
Показать
sudo mkdir ~/.ssh cat >> .ssh/authorized_keys << EOF /*нажимаем Enter*/ /* затем вставляем сгенерированный публичный ключ и {Enter}*/ EOF /*и еще раз Enter*/

Меняем порт на котором работает SSH и отключаем авторизацию по паролю:

sudo nano /etc/ssh/sshd_config ---> откроется редактор, изменим значения и убираем #, как ниже: Port 22 (меняем стандартный порт, например на 19827) PasswordAuthentication no

Открываем только те порты, которые нам понадобятся и закрываем порт 22:

sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow (ваш порт SSH, по умолчанию 22) !важно! sudo ufw allow 51820/udp sudo ufw allow 3000 /*если прилинковали домен к IP, после настройки удаляем*/ sudo ufw allow 853 sudo ufw allow 784 sudo ufw allow 53 sudo ufw delete allow 22 sudo ufw limit 22/tcp (вместо 22 укажите ваш номер порта) sudo ufw reload

После ребута не забываем поменять номер порта, который поменяли, в настройках SHH-клиента.

Часть 2. Устанавливаем WireGuard

sudo apt install curl curl https://raw.githubusercontent.com/complexorganizations/wireguard-manager/main/wireguard-manager.sh --create-dirs -o /usr/local/bin/wireguard-manager.sh chmod +x /usr/local/bin/wireguard-manager.sh bash /usr/local/bin/wireguard-manager.sh

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

Which DNS provider would you like to use?

1) Unbound (Recommended)

2) Custom (Advanced)

Выбираем вариант 2.

Далее, соглашаемся с DNS сервером по дефолту.

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

Чтобы посмотреть всех клиентов WireGuard, устанавливаем Midnight Commander и смотрим конфиги по адресу etc/wireguard/cliens.

sudo apt install mc -y sudo mc

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

sudo bash /usr/local/bin/wireguard-manager.sh

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

sudo nano /etc/default/ufw /* Изменить параметр на ACCEPT */ DEFAULT_FORWARD_POLICY="ACCEPT"

Сохраняем — CTRL + X, Y и Enter.

sudo nano /etc/ufw/sysctl.conf /* убрать '#' */ net.ipv4.ip_forward=1 net/ipv6/conf/default/forwarding=1 net/ipv6/conf/all/forwarding=1

Сохраняем — CTRL + X, Y и Enter.

sudo nano /etc/ufw/before.rules

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

# NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Forward traffic through eth0 - Change to match you out-interface -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE # don't delete the 'COMMIT' line or these nat table rules won't # be processed COMMIT

Перезапускаем фаервол:

sudo ufw reload

Часть 3. Установка AdGuard Home

Выполняем команды в консоли:

wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz tar -xzf AdGuardHome_linux_amd64.tar.gz cd AdGuardHome sudo ./AdGuardHome

Далее, переходим в браузер http://IP_сервера:3000 или на домен, если уже прилинковали его к IP и проходим квест установщика.

Кстати, домен можно бесплатно парковать у хостинга Beget, они крутые ребята.

Внимание! В полях ‘Веб-интерфейс администрирования‘ и ‘DNS-сервер’, выбираем сетевой интерфейс с IP адресом нашего сервера, это важно.

После прохода установщика, жмем CTRL + C и далее, вводим команды.

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

sudo ./AdGuardHome -s install ./AdGuardHome -s stop sudo apt install snapd sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo certbot certonly --standalone -d адрес_вашего_сервера.ru -d www.адрес_вашего_сервера.ru ./AdGuardHome -s start sudo apt update && sudo apt upgrade -y && sudo apt autoclean -y && sudo apt clean -y && sudo apt autoremove -y && sudo reboot

Все, заходим на адрес вашего сервера http://IP_сервера:3000 или http://домен.ru, выбираем и при желание доустанавливаем фильтры (настройка Adguard Home — тема для отдельной статьи) и наслаждаемся более быстрым и безопасным интернетом.

В конфиге клиента VPN, в поле DNS = 1.1.1.1 (например), мы можем указать IP адрес нашего сервера с VPN ,и трафик будет фильтроваться от рекламы и шифроваться. Такое 2 в 1.

Так же можно использовать отдельно DNS сервер, чтобы фильтровать трафик без VPN. На ПК с Windows мы указываем адрес DNS в программе Yoga DNS и пускаемся трафик по DNS over HTTPS.

Для смартфона на Android или iOS есть нативная поддержка DNS over HTTPS и сервер можно поменять в настройках. Но это верно не для всех версий Android и не для всякого трафика, поэтому для Android рекомендую использовать приложение Intra для фильтрации трафика или WireGuard с нашими настройками DNS.

DNS сервер и VPN можно установить в роутере, например я приобрел Keenetic, теперь весь трафик шифруется и чистится, перед тем как зайти в мой дом.

Если будут вопросы, предложения и конструктивная критика — пишите в комментариях. Спасибо!

0
73 комментария
Написать комментарий...
Ivan Susanin

Большое спасибо за статью!
Почему-то у меня так и не получается выжать из VPN'а скорость, близкую к скорости провайдера... Есть идеи, что я могу делать не так?

Сейчас экспериментирую в Ереване с айфона через Speedtest:
1. Без VPN: 94.1/54.1 Mbps, ping 4ms
2. Через Wireguard и нидерландский сервер VDSina: 43.3/23.9 Mbps, ping 67ms
3. Через MyVPN (L2TP), установленный на нидерландский сервер Cryptoservers: 44.0/31.9 Mbps, ping 73 ms

Везде арендую самые дешевые сервера. Но, так понимаю, лишнее ядро и оперативка не помогут раскачать скорость?

И еще, правильно ли я понял, что без стороннего софта (собственно, проги Wireguard) подключиться к VPN на Wireguard с Macos и iOs нельзя?

Ответить
Развернуть ветку
Dima
Автор

На роутерах, на Keenetic например, можно весь трафик пустить через Wireguard или L2TP, на Windows 11 есть нативная поддержка L2TP, но не Wireguard.
Больше памяти и CPU не поможет в этом случае, можно задать вопрос провайдеру, они охотно отвечают на вопросы.
Немного странно что L2TP оказался быстрее, хотя если провайдеры разные, то дело в этом скорее всего. L2TP по идее, менее безопасный и быстрый чем Wireguard.

Ответить
Развернуть ветку
70 комментариев
Раскрывать всегда