{"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 комментария
Написать комментарий...
Evil Pechenka

Мысли на эту тему:

1. Люди не могут перейти на платный VPN, просто купить, а мы им про купи и настрой сложное.
2. Если человек не программист и не администратор, то настраивать сервер ОЧЕНЬ мучительно. Я настраивал много раз, для меня это всегда боль. И я всегда косякну, что может привести к проблемам с безопасностью.
3. Готовые решения всегда сервиснее и дешевле — приложения для телефона, всех платформ, выбор локации. И всё это за $2–3. И настраивать не надо ничего.

Единственный минус — могут заблокировать централизованно. Ну пока этого нет.

Считаю, что бесплатный ProtonVPN — это мегапрорыв для большинства.

https://protonvpn.com/ru/pricing

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

Так себе прорыв, если честно, ProtonVPN еще недавно сотрудничал с Роскомнадзором. Бесплатный VPN можно использовать чисто чтобы запостить фоточку в Инстаграм, как то не более.

Ответить
Развернуть ветку
8 комментариев
Ware Wow

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

И то и то по своему хорошо.

Ответить
Развернуть ветку
Андрей Вечерний

Ну и как протон, братан?

Ответить
Развернуть ветку
1 комментарий
Накосика Сукасена

Может хватит уже, а?

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

Хватит чего, разве была статья про сращивание VPN + AdGuard Home ?

Ответить
Развернуть ветку
1 комментарий
Semyon Krylov

Ну вот дополню тебя, какую ОС ставил? Нигде не написано про это

Ответить
Развернуть ветку
Liberty Man

похоже на ubuntu

Ответить
Развернуть ветку
Tikaj Navai

тоже хотел этот вопрос задать

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

Пардон, я использовал Ubuntu Server 20

Ответить
Развернуть ветку
Liberty Man

Одна из лучших статей которые встречал за последнее время, обычно о безопасности никто не пишет
спасибо ! попробую по вашему пути пойти

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

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

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

Ответить
Развернуть ветку
Mike Kisil

На клиенте в конфиге VPN добавляем блок AllowedIPs и указываем там необходимые IP. Можно построчно. Например, так:
AllowedIPs = 103.4.96.0/22 #instagram/Facebook

С такой настройкой весь трафик будет идти через наш стандартный канал, а трафик на 103.4.96.* будет идти через VPN.

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

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

Ответить
Развернуть ветку
1 комментарий
Никита Жулябин

Пандемия COVID: десятки однообразных статей на vc типа «как легко и быстро перевести свой бизнес на удаленку»
Спец.операция в Украине: «мы расскажем вам, как организовать свой VPS с блэкджэком и ...😁👍

Ответить
Развернуть ветку
Alex K

Спасибо большое за статью. Но AdGuard Home почему то не работает. Добавил кучу фильтров с гитхаба, и ничего. Может как то ДНС настроить нужно? На клиенте где прописан DNS =1.1.1.1 написано ещё куча всего, и это удалять или оставить?
Спасибо!

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

На клиенте WireGuard, в поле DNS, надо прописать IP адрес своего сервера.
Например по дефолту:
DNS = 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001
надо
DNS = IP адрес вашего сервера

Точно так же это работает, если прописать этот IP в поле DNS на сетевой карте, wi-fi, роутере, смартфоне и т.д. Будет работать фильтрация трафика, но без шифрования. Чтобы было шифрование, почитайте раздел Инструкция по установке в AdGurd Home (к клиенту WireGuard это не относится).

Ответить
Развернуть ветку
1 комментарий
Wesker

Спасибки за стетейку, ребятки, ето здорово, но цены почему взвинтили?

Обратите внимание

https://vc.ru/opinions/397623-vdsina-podnyala-ceny-na-100

Ответить
Развернуть ветку
1 комментарий
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Betty Boop

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

В результате проще оказалось 3 часа потратить на инструкции с офсайтов и размышления. Кстати, при установке wireguard пришлось прописать свой DNS установленной AdGuard Home — установив ее первой. Только так заработало.

Ответить
Развернуть ветку
Semyon Krylov

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

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

Я по сути расписал все действия

Ответить
Развернуть ветку
3 комментария
Alex-V

Может кому интересно будет - есть купон - 17,88$ в год https://my.racknerd.com/aff.php?aff=5195&pid=649

2 GB KVM VPS Special (San Jose Location)
1x vCPU Core
25 GB PURE SSD RAID-10 Storage
2 GB RAM
3000GB Monthly Premium Bandwidth
1Gbps Public Network Port
1 Dedicated IPv4 Address

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

Ой как некрасиво, на чужом труду выезжать.

Ответить
Развернуть ветку
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.

Ответить
Развернуть ветку
RangerRU

торренты можно юзать?
64 ТБ вообще за глаза хватит
для обхода ограничения скорости ОпСоСов

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

Да, все работает, скорость почти не режется

Ответить
Развернуть ветку
1 комментарий
Alexey Arhipov

Автору респект. В закладки себе добавил, хотя пока не нуждаюсь в личном ВПНе, но кто знает что будет завтра. Вдвойне респект за труды и подробное описание.
Evil Pechenka автор не писал, что это для тех юзерей, которые, чтобы винду переустановить мастера себе приглашают. А по поводу публичных ВПН сервисов - не стоит столь обольщаться. Те регулярно "текут" например так: https://www.rbc.ru/society/04/11/2021/618322459a794776cb004550
А некоторые, что заявляют об отсутствии у них якобы логов - текут вместе с логами. Ну такое себе. А тут всё чистенько, подконтрольно тебе, и трафик твой в т.ч. А уж отсутствие в спам адресах ИП твоего ВПНа - тоже даёт тебе плюс времени на отсутствие необходимости вводить капчи лишние разы.

Ответить
Развернуть ветку
Wesker

Спасибки за стетейку, ребятки, ето здорово, но цены почему взвинтили?

Обратите внимание

https://vc.ru/opinions/397623-vdsina-podnyala-ceny-na-100

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

Сегодня проверил, все норм на младшем тарифе. Цена не изменилась - 11 рублей в сутки, что в целом приемлемо.

Ответить
Развернуть ветку
1 комментарий
Xtaletari

Все настроил, но при подключении в логах вижу такую информацию, ничего не грузит, будто инета нет:
handshake did not complete after 5 seconds

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

Скрин скиньте

Ответить
Развернуть ветку
Alex K

Та же ерунда... получилось починить?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
RangerRU

Ещё вопрос - а как можно задействовать списки с https://antifilter.download/ ?

Чтобы не всё заворачивать в VPN, а только заблокированные адреса как здесь например https://habr.com/ru/post/440030/

Ответить
Развернуть ветку
RangerRU
Ответить
Развернуть ветку
Николай Половнев

Будьте осторожны, используя бесплатные VPN сервисы.
Совсем недавно писали про то, как они воруют данные
https://zen.yandex.ru/media/i2crm/zachem-biznesu-korporativnyi-vpnservis-62b1beae37703f171653dbd8?&;;

Ответить
Развернуть ветку
RangerRU

и к чему это здесь?

Ответить
Развернуть ветку
RangerRU

на VDShina дешевле можно взять:
1 ГБ память / 1 core процессор / 30 ГБ диск / 32 ТБ трафик - за 200 рублей в месяц

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

Здесь и так ссылка на этот хост

Ответить
Развернуть ветку
1 комментарий
Mikhail

Не стартует сервис почему-то:
root@racknerd-3ed439:~# sudo wireguard-manager.sh
What do you want to do?
1) Show WireGuard
2) Start WireGuard
3) Stop WireGuard
4) Restart WireGuard
5) Add WireGuard Peer (client)
6) Remove WireGuard Peer (client)
7) Reinstall WireGuard
8) Uninstall WireGuard
9) Update this script
10) Backup WireGuard
11) Restore WireGuard
12) Update Interface IP
13) Update Interface Port
14) Purge WireGuard Peers
15) Generate QR Code
Select an Option [1-15]:2
[#] ip link add wg0 type wireguard
RTNETLINK answers: Operation not supported
Unable to access interface: Protocol not supported
[#] ip link delete dev wg0
Cannot find device "wg0"
root@racknerd-3ed439:~#

Ответить
Развернуть ветку
Mikhail

После рестарта ошибка интерфейса пропала, но появилась другая :)
root@racknerd-3ed439:~# sudo wireguard-manager.sh
What do you want to do?
1) Show WireGuard
2) Start WireGuard
3) Stop WireGuard
4) Restart WireGuard
5) Add WireGuard Peer (client)
6) Remove WireGuard Peer (client)
7) Reinstall WireGuard
8) Uninstall WireGuard
9) Update this script
10) Backup WireGuard
11) Restore WireGuard
12) Update Interface IP
13) Update Interface Port
14) Purge WireGuard Peers
15) Generate QR Code
Select an Option [1-15]:2
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/8 dev wg0
[#] ip -6 address add fd00:00:00::1/8 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] sysctl --write net.ipv4.ip_forward=1; sysctl --write net.ipv6.conf.all.forwarding=1; nft add table inet wireguard-wg0; nft add chain inet wireguard-wg0 PREROUTING {type nat hook prerouting priority 0\;}; nft add chain inet wireguard-wg0 POSTROUTING {type nat hook postrouting priority 100\;}; nft add rule inet wireguard-wg0 POSTROUTING ip saddr 10.0.0.0/8 oifname eth0 masquerade; nft add rule inet wireguard-wg0 POSTROUTING ip6 saddr fd00:00:00::0/8 oifname eth0 masquerade
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Error: Could not process rule: No such file or directory
add chain inet wireguard-wg0 PREROUTING {type nat hook prerouting priority 0;}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[#] ip link delete dev wg0

Ответить
Развернуть ветку
1 комментарий
Антон Пахомов

Автор не упомянул самое главное. Установить Wireguard не всюду получится. Centos 8 Stream, Centos 8 и выше, AlmaLinux 9 требуют модуль kmod-wireguard, который не везде есть, а если версии ниже - то ядро старое.
Пробуем Debian - у моего провайдера только 10, в backports ничего нет, пришлось обновляется полностью до Debian 11. И только тогда смог поставить. Ubuntu не пробовал, но не думаю, что меньше чем на 20 встанет без бубна.
Далее не забываем, чтобы была правильная виртуализация...

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

Автор указал, что статья написано под Ubuntu Server. И кстати, статья обновлена, я публикуюсь теперь только на своем блоге.

Ответить
Развернуть ветку
4 комментария
Vikarti Anatra

А что - VDSina разве дает виртуалки на всяких OpenVZ где ядро одно на всех и никак прям не пересобрать и не обновить? Мне казалось у них KVM.
Или пользователи Linux пошли такие что ядро пересобрать не могут?

Ответить
Развернуть ветку
1 комментарий

Комментарий удален модератором

Развернуть ветку
htuNLiit

По такому методу с openvpn будет работать?

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

Без понятия если честно

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