Для начала хочу отметить что у нас довольно своеобразное государство и VPN разрешен в России только тот, к которому есть доступ у органов. Так что воспринимайте эту статью исключительно с технической стороны, о том как подружить AdGuard Home, с WireGuard.

Для начала — зачем это все и какую ценность мы получим?

1. Уберем ограничения в сети интернет

2. Сильно порежем рекламу, трекеры, метрики и шпионское ПО

3. Серьезно повысим безопасность и конфиденциальность наших данных

4. Сможем выборочно блокировать ресурсы, например заблокировать Tinder или сервера Xiaomi

5. Сможем контролировать и анализировать трафик

6. Создадим безопасный интернет для нашей семьи

Статья разбита на 3 части:

1. Покупаем VPS сервер и настраиваем его

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

3. Устанавливаем AdGuard Home

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

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

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

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

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

В качестве ОС я использую Ubuntu Server 20, именно под нее написана статья. Нам подойдет любая Ubuntu 18-22 версий, но учтите, что 22 версия кушает побольше RAM и HDD.

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

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

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

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

С самого начала мы обезопасим сервер от ботов и закроем возможные дыры в безопасности.

sudo apt install fail2ban -y && sudo apt install ufw -y && sudo apt install nano -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}*/

Нажимаем Enter

EOF

Нажимаем Enter.

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

sudo nano /etc/ssh/sshd_config

Откроется редактор, изменим значения и убираем #, как ниже:

PasswordAuthentication no
sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw allow 51820/udp && sudo ufw allow 853 && sudo ufw allow 784 && sudo ufw allow 53 && sudo ufw allow 22 && sudo ufw limit 22/tcp && sudo ufw allow 3000 && sudo reboot

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

Бонусное задание.

Зададим другое значение SHH порта, чтобы затруднить работу ботов, которые ищут уязвимости в серверах.

Вместо стандартного порта SSH 22, можно выбрать любой другой порт. В примере ниже, мы поменяем его на 9999.

sudo ufw allow 9999 && sudo ufw limit 9999/tcp && sudo ufw deny 22
sudo nano /etc/ssh/sshd_config

Убираем # и меняем значение #Port 22

Port 9999

Выходим CTRL + X, Y + Enter

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

Часть 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-код и даст ссылку на 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, на RackNerd у меня все работало без этого.

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 и проходим квест установщика.

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

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

sudo ./AdGuardHome -s install

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

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

sudo apt install snapd
sudo snap install core; sudo snap refresh core
cd AdGuardHome
./AdGuardHome -s stop
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

Если вы добавили домен и получили сертификат. То теперь можем его добавить в AdGuard, для этого переходим в панель управления по адресу http://IP_сервера:3000 или http://домен.ru, переходим в настройки, настройки шифрования и добавляем в поле оба ключа, которые находятся по адресам:

/etc/letsencrypt/live/вашдомен.ru/fullchain.pem

/etc/letsencrypt/live/вашдомен.ru/privkey.pem

Дальше мы можем выбрать фильтры AdGuard и сделать ваш интернет, намного более чище и безопасней!

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

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

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

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

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

Метки:

, ,