В этой статье мы подружим Wireguard VPN и AdGuard Home — создадим безопасный шифрованный канал для выхода в интернет и порежем 90%+ рекламы, метрик и прочих следящих штук, которые просто не дойдут до вашего компьютера, смартфона, телевизора и заблокируются еще на уровне запроса DNS.
Зачем это все и какую ценность мы получим?
WireGuard предоставляет быструю, безопасную и простую в использовании VPN-технологию, который очень слабо влияет на скорость соединения. А мы получаем защищенный интернет-канал для всех наших устройств.
Adguard Home — режет рекламу на уровне DNS т.е. он ее просто не загружает на устройство, в отличии например, от блокировщика рекламы в браузере. На данный момент, это наиболее эффективный инструмент против рекламы, который поддерживает все плюшки DNS — DNS Over HTTPS и т.д.
Вопрос тут стоит — не зачем это нужно, а почему вы все это еще не используете?
Разделы статьи
Выбор хостинга для VPN
Предлагаю вам на выбор 4 хостинга, которые можно использовать для VPN, исходя из своей субъективной оценки. Три ссылки реферальные, так вы сможете и отблагодарить меня, без всяких усилий, если статья вам оказалось полезной.
Обратите внимание, что у многих хостеров есть веб-консоль, которую можно использовать для подключения к серверу SSH. Но будет намного удобнее, если вы будете использовать программы Termius или MobaXTerm.
Устанавливаем WireGuard
wget -O wireguard.sh https://get.vpnsetup.net/wg && bash wireguard.sh
Скрипт в процессе установки нам предложит:
- Выбрать порт — выбирайте любой из диапазона от 5 знаков до значения в 65535. Например, 54562, но не стандартный. Внимание! Запишем номер порта, далее, мы откроем ему доступ через фаервол
- Дать название первому юзеру (любое)
- Выбрать DNS-сервер. Пишем только IP адрес нашего сервера,
- Enter secondary DNS server (Enter to skip) — Enter
В итоге скрипт сгенерирует QR-код и даст ссылку на conf файл, которые используются как ключи для приложений (подробнее по ссылке)
Чтобы посмотреть всех клиентов WireGuard, устанавливаем Midnight Commander и смотрим конфиги по адресу etc/wireguard/cliens.
Для того чтобы совершить какие-то настройки над WireGuard, например, добавить новых клиентов, используем команду:
bash wireguard.sh
Скачать все ключи можно через SFTP, либо открыть файл редактором, как указано ниже, скопировать код и вставить его в приложение WireGuard:
nano /root/user.conf
Возможные проблемы из политика сервера
Если у нас не работают обновления сервера после установки Wireguard, это проверить просто — apt update, то действуем согласно схеме ниже:
nano /etc/default/ufw
Изменить параметр на ACCEPT
DEFAULT_FORWARD_POLICY="ACCEPT"
Сохраняем нажимая — CTRL + X, Y и Enter
nano /etc/ufw/sysctl.conf
Убрать ‘#’ перед этими значениями:
net.ipv4.ip_forward=1
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1
Перезапускаем фаервол.
ufw reload
Установка AdGuard Home
Выполняем команды в консоли:
apt install dnsutils
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
Далее, переходим в браузер http://IP_сервера:3000 или на домен, если уже прилинковали его к IP и проходим квест установщика.
Внимание! В полях 'Веб-интерфейс администрирования' надо выбрать сетевой интерфейс (примеры ens1, eth0) с IP адресом нашего сервера, аналогично выбираем в 'DNS-сервер'.
После прохода установщика, жмем CTRL + C. Adguard Home у нас установлен.
И обратите внимание, что если прилинковываем домен и хотим шифровать запросы DNS, то к IP нужно прилинковать домен и выпустить для него сертификат через certbot.
Установка сертификата выглядит так:
cd /opt/AdGuardHome
./AdGuardHome -s stop
apt install snapd
snap install core; snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --standalone
Пишем название нашего домена — dns.domain.com (пример) и нам будет выпущен сертификат
Автоматический перевыпуск сертификата:
sudo certbot renew --dry-run
./AdGuardHome -s start
Добавляем сертификаты в Adguard Home, они находятся по адресу:
/etc/letsencrypt/live/dns.domain.ru/fullchain.pem
/etc/letsencrypt/live/dns.domain.ru/privkey.pem
Если вы добавили домен и получили сертификат. То теперь можем его добавить в AdGuard, для этого переходим в панель управления по адресу http://IP_сервера:3000 или http://домен.ru, переходим в настройки, настройки шифрования и добавляем в поле оба ключа, которые находятся по адресам:
/etc/letsencrypt/live/вашдомен.ru/fullchain.pem
/etc/letsencrypt/live/вашдомен.ru/privkey.pem
Дальше мы можем выбрать фильтры AdGuard и сделать ваш интернет, намного более чище и безопасней!
Теперь трафик проходящий через WireGuard не только шифруется и передается по защищённому протоколу, но и чистится от рекламы, трекеров и т.п.
Так же можно использовать отдельно DNS сервер, чтобы фильтровать трафик без VPN. На ПК с Windows мы указываем адрес DNS в программе Yoga DNS и пускаемся трафик по DNS over HTTPS.
Для смартфона на Android или iOS есть нативная поддержка DNS over HTTPS и сервер можно поменять в настройках. Но это верно не для всех версий Android и не для всякого трафика, поэтому для Android рекомендую использовать приложение Intra для фильтрации трафика или WireGuard с нашими настройками DNS.
DNS сервер и VPN можно установить в роутере, например я приобрел Keenetic, теперь весь трафик шифруется и чистится, перед тем как зайти в мой дом.
Бонусная часть — настройка безопастности сервера
С самого начала мы обезопасим сервер от брутфорса и закроем порты, которые не будем использовать:
apt install fail2ban -y && apt install ufw -y && apt install nano -y && apt update && apt upgrade -y
touch /etc/fail2ban/jail.local && 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, чтобы сохранить.
Отключим двухсторонний пинг, чтобы затруднить обнаружение туннеля
nano /etc/ufw/before.rules
Меняем концовку следующего выражения с ACCEPT на DROP:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
Прописываем правила в фаервол и включаем его
1. Обратите внимание, что мы оставляем открытым порт SSH, который по-умолчание на 22 порту. Если у вас другой порт назначен, поменяйте его. 2. ufw allow 45456/udp порт Wireguard, уже не стандартный. В сетапе обязательно укажите его или любой в диапазоне 40000 - 65535
ufw allow 3000/tcp && ufw allow 80/tcp && ufw allow 53/udp && ufw allow 45456/udp && ufw allow 22/tcp
В конце нас спросят, включать ли фаервол нажимаем Y и enter
Сделал все по описанию, но смущает надпись в журнале везде «Нешифрованный DNS» — это нормально?
Нет, завтра пробегусь еще раз по инструкции, скорее всего буду обновлять статью
Добрый день! Жду с нетерпением!
Добрый день, а можно связать решение от wg-easy с adguard home? В том решении есть удобный WebUI для управления профилями wireguard
Здравствуйте! У vdsina.ru есть возможность сразу установить сервер с WireGuard VPN на
Ubuntu 22. Накатил сверху AdGuard Home, но трафик не идёт через него, уже часа 4 мучаюсь. Интересно было бы увидеть статью, по настройке.
Как можно проверить что трафик действительно шифруется?
Если проверять шифрование трафика VPN — вводим в поиске мой IP и если он равен IP VPN, то трафик проходит через VPN сервер. Так-же можно проверить на сервисе 2IP, тест «Проверка анонимности».
Если мы хотим проверить на утечку DNS, используем один из тестов DNS Leak (гуглится). Если адрес IP равен адресу нашего сервера или выбранному провайдеру (но не IP сервера вашего интернет-провайдера) — утечки нет и шифрование DNS работает. И не забываем про тест на утечку реального IP через WebRTC, гуглим тест и смотрим, чтобы наш реальный IP в режиме VPN, не отдавался браузеру. Иначе смысла в VPN, ровно наполовину.
Статья обновлена