howto-db/data/pages/pi-hole/dns-over-https.txt
2024-02-10 12:53:55 +00:00

153 lines
6.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== DNS-Over-HTTPS на Pi-hole ======
DNS-Over-HTTPS - это протокол, позволяющий выпонять DNS-запросы по протоколу HTTPS, т.е., используя DNS-Over-HTTPS, вы защищаете свои DNS-запросы от просмотра и подмены.
Pi-hole можно относительно легко настроить для работы с DNS-Over-HTTPS proxy от [[wpru>Cloudflare|Cloudflare]]. После настройки мы получим блокировщик рекламы, который отправляет все разрешенные DNS-запросы через HTTPS. Таким образом, вы сможете скрыть свои запросы даже от своего интернет-провайдера.
Для работы с DNS-Over-HTTPS proxy от Cloudflare используется разработанная Cloudflare утилита cloudflared, её необходимо будет установить в систему, на которой работает pi-hole.
**Примечание:** cloudflared можно настроить для работы и с другими DoH-провайдерами, например, с Google's DNS-Over-HTTPS service (https://8.8.8.8/dns-query).
===== Установка cloudflared =====
Выбираем подходящий нам установщик со страницы: https://developers.cloudflare.com/argo-tunnel/downloads и скачиваем его:\\
(можно использовать репозиторий: https://pkg.cloudflare.com/)
<code>wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.deb</code>
Устанавливаем:
<code>sudo dpkg -i cloudflared-stable-linux-arm.deb</code>
Либо так:
**cloudflared для arm64 (64-bit Raspberry Pi)**
<code>wget -O cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64
sudo mv cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v</code>
**cloudflared для armhf (32-bit Raspberry Pi)**
<code>wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz
tar -xvzf cloudflared-stable-linux-arm.tgz
sudo cp ./cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v</code>
===== Настройка автозапуска cloudflared =====
==== Ручная настройка ====
Создаем пользователя для запуска демона cloudflared
<code>sudo useradd -s /usr/sbin/nologin -r -M cloudflared</code>
Создаем конфигурационный файл:
<code>sudo nano /etc/default/cloudflared</code>
Копируем в конфигурационный файл следующие строки:
<code># Commandline args for cloudflared, using Cloudflare DNS
CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query</code>
Задаем права для конфигурационного файла:
<code>sudo chown cloudflared:cloudflared /etc/default/cloudflared
sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared</code>
Создаем юнит systemd:
<code>sudo nano /etc/systemd/system/cloudflared.service</code>
Копируем в юнит текст:
<code>[Unit]
Description=cloudflared DNS over HTTPS proxy
After=syslog.target network-online.target
[Service]
Type=simple
User=cloudflared
EnvironmentFile=/etc/default/cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target</code>
Запускаем демон и включаем автозагрузку:
<code>sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared</code>
==== Автоматическая настройка ====
**Внимание:** в этом случае устанвка будет произведена c правами root.
Создаем конфигурационный файл для установщика:
<code>sudo mkdir /etc/cloudflared/
sudo nano /etc/cloudflared/config.yml</code>
Копируем в него текст:
<code>proxy-dns: true
proxy-dns-port: 5053
proxy-dns-upstream:
- https://1.1.1.1/dns-query
- https://1.0.0.1/dns-query
#Uncomment following if you want to also want to use IPv6 for external DOH lookups
#- https://[2606:4700:4700::1111]/dns-query
#- https://[2606:4700:4700::1001]/dns-query</code>
Запускаем установку командой:
<code>sudo cloudflared service install --legacy</code>
Запускаем сервис и проверяем его статус:
<code>sudo systemctl start cloudflared
sudo systemctl status cloudflared</code>
Проверить, что все работает можно такой командой:
<code>pi@raspberrypi:~ $ dig @127.0.0.1 -p 5053 google.com
; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> @127.0.0.1 -p 5053 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12157
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 22179adb227cd67b (echoed)
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 191 IN A 172.217.22.14
;; Query time: 0 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; WHEN: Wed Dec 04 09:29:50 EET 2019
;; MSG SIZE rcvd: 77</code>
===== Настройка Pi-hole =====
Необходимо указать наш сервис cloudflared в качестве вышестоящего DNS-сервера (Settings - DNS):
{{pi-hole:dohconfig.png|Настройки вышестоящего DNS-сервера}}\\
На этом настройка завершена. Дополнительную информацию можно получить на странице руководства: https://docs.pi-hole.net/guides/dns/cloudflared/
====== Ссылки ======
cloudflared (DoH) (EN): https://docs.pi-hole.net/guides/dns/cloudflared/\\