LINUX.ORG.RU

Конфигурация dnscrypt-proxy в debian 10

 ,


1

1

Всех с наступившим и наступающими. Сервер на debian 10 с минимальной конфигурацией. Никаких средств работы с dns кроме dnscrypt-proxy не установлено. При настройке ориентировался на archwiki и wiki dnscrypt-proxy.

Порядок действий

apt install dnscrypt-proxy
systemctl stop dnscrypt-proxy.socket
mv /etc/resolv.conf{,-default}
echo 'nameserver 127.0.0.1' | tee /etc/resolv.conf
chattr +i /etc/resolv.conf
systemctl start dnscrypt-proxy.socket

ДКП успешно стартует

Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] dnscrypt-proxy 2.0.19
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] Wiring systemd TCP socket #0, dnscrypt-proxy.socket, 127.0.2.1:53
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] Wiring systemd UDP socket #1, dnscrypt-proxy.socket, 127.0.2.1:53
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] [cloudflare] OK (DoH) - rtt: 4ms
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] Server with the lowest initial latency: cloudflare (rtt: 4ms)
Jan 01 11:40:15 deb-serv dnscrypt-proxy[708]: [2020-01-01 11:40:15] [NOTICE] dnscrypt-proxy is ready - live servers: 1

Как видно из журнала ДКП почему-то работает с 127.0.2.1:53. В toml файле конфигурация дефолтная

listen_addresses = []
server_names = ['cloudflare']

[query_log]
  file = '/var/log/dnscrypt-proxy/query.log'

[nx_log]
  file = '/var/log/dnscrypt-proxy/nx.log'

[sources]
  [sources.'public-resolvers']
  url = 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md'
  cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md'
  minisign_key = 'ключ'
  refresh_delay = 72
  prefix = ''

По информации о настройке из вики ДКП в дебиане нужно работать именно с сокетом, а не сервисом, и не указывать какие-либо адреса в listen_addresses, потому что systemd сам разрулит все.

Если в resolv.conf задать адрес, с которым работает ДКП - 127.0.2.1, то ДКП сразу начинает ругатся на отсутствие привилегий для работы, хотя запущен он от рута.

Почему же ДКП работает с неправильным адресом?


УМВР

Оставляешь всё по умолчанию, указываешь где надо 127.0.2.1.

 $ resolvectl status eth_intel 
Link 3 (eth_intel)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: allow-downgrade
    DNSSEC supported: yes
  Current DNS Server: 127.0.2.1
         DNS Servers: 127.0.2.1
          DNS Domain: ~.
anonymous ()

Почему же ДКП работает с неправильным адресом?

Это не неправильный, это адрес по умолчанию. Проблема у тебя явно не в этом.

Из того, что вижу навскидку - fallback_resolver не прописан, а если resolv.conf ссылается на IP, где висит dnscrypt-proxy - то первичное разрешение имен для получения обновленного списка dnscrypt-резолверов делать будет некому.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

если resolv.conf ссылается на IP, где висит dnscrypt-proxy - то первичное разрешение имен для получения обновленного списка dnscrypt-резолверов делать будет некому

 $ cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 127.0.2.1
 $ cat /etc/dnscrypt-proxy/dnscrypt-proxy.toml 
# Empty listen_addresses to use systemd socket activation
listen_addresses = []
server_names = ['cloudflare']

[query_log]
  file = '/var/log/dnscrypt-proxy/query.log'

[nx_log]
  file = '/var/log/dnscrypt-proxy/nx.log'

[sources]
  [sources.'public-resolvers']
  url = 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md'
  cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 72
  prefix = ''

Я чё-т в растерянности, как же оно работает.

anonymous ()
Ответ на: комментарий от anonymous

Работать то оно будет, но список резолверов при необходимости и отсутствии ответа от установленных в server_names не сможет обновить. Для этого и нужен запасной прямой dns.

exfx ()
Ответ на: комментарий от Pinkbyte

Я условно говорил «неправильный». Имел ввиду отличный от того, который указан в вики и который я установил. Поправил, перезапустил, но на работу это не повлияло.

exfx ()
Ответ на: комментарий от exfx

Поправил как? Вот например мой конфиг:

mini-router ~ # cat /etc/dnscrypt-proxy/dnscrypt-proxy.toml | grep listen_
listen_addresses = ['127.0.0.1:5353']

mini-router ~ # grep fallback /etc/dnscrypt-proxy/dnscrypt-proxy.toml
fallback_resolver = '8.8.8.8:53'

mini-router ~ # netstat -nulp | grep dnsc
udp        0      0 127.0.0.1:5353          0.0.0.0:*                           6486/dnscrypt-proxy

mini-router ~ # cat /etc/resolv.conf
domain local
nameserver 127.0.0.1

Как видишь всё работает согласно конфигурации. На порту 53 у меня висит dnsmasq, который пересылает все запросы на нелокальные домены на 127.0.0.1:5353.

Если б у меня не было парочки forward-ов на некоторые локальные зоны, можно было бы повесить сам dnscrypt-proxy на 53 порт хоть на 0.0.0.0 - никаких проблем.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte
listen_addresses = []
server_names = ['cloudflare']
ipv4_servers = true
ipv6_servers = false
dnscrypt_servers = true
doh_servers = true
require_nolog = true
require_nofilter = true
require_dnssec = true
timeout = 5000
keepalive = 30
cache = true
cache_size = 1024
cache_min_ttl = 2400
cache_max_ttl = 86400
cache_neg_min_ttl = 60
cache_neg_max_ttl = 600
fallback_resolver = '1.1.1.1:53'
...

С таким конфигом ДКП заработало.

exfx ()