{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

Очередная статья про 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 комментария
Написать комментарий...
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

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