Dnscrypt — Проксирование dns-трафика.

Установка, настройка, эксплуатация.

Модератор: ROOT

Dnscrypt — Проксирование dns-трафика.

Сообщение ROOT » 10 июн 2019, 13:48

Оглавление


Темы
 Dnscrypt-proxy функциональность 
 В чем разница между DNSCrypt, DNSSEC, DNS over TLS/HTTPS? 
 Установка Dnscrypt 
 Исключение из проксирования запросов к локальному DNS-серверу 
Дополнительные материалы
TOR
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
OpenVPN: Открытая виртуальная частная сеть
BIND — DNS-сервер
ISCSI — Транспортный протокол для SCSI
QUAGGA — Протоколы динамической маршрутизации


 Dnscrypt-proxy функциональность 
  • шифрования dns-трафика,
  • проксирование dns-запросов,
  • Направление запросов для определенных доменов (по правилам) на определённый список DNS-серверов (forwarding),
  • Кэширование dns-запросов,
  • Блокировка на основе шаблонов (черные списки),
  • Белый список на основе шаблона (обход черных списков),
  • Ограничение доступа по времени,
  • Поддержка передачи своего трафика через прокси (SOCKS, HTTP/HTTPS proxy)
Лучше ужасный конец, чем ужас без конца!


Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 425
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 12:57



 В чем разница между DNSCrypt, DNSSEC, DNS over TLS/HTTPS? 
  • DNSCrypt может работать по UDP и TCP. Подключение на порт 443. Для шифрования используется собственный протокол, который отличается от HTTPS. Может быть легко выделен с помощью DPI. Это скорее черновик, который тестировали до внедрения DNS over TLS/HTTPS, так как он не имеет RFC, то есть не является официальным стандартом интернета. Вероятнее всего, в скором, времени он будет полностью вытеснен последними.
  • DNS over TLS (DoT) — TCP-подключение происходит на порт 853, внутри тоннеля передается обычный DNS-запрос. Провайдер видит, что это DNS запрос но не может в него вмешаться. При прочих равных, в DNS over TLS должно быть чуть меньше накладных расходов на каждый запрос, чем в over HTTPS.
  • DNS over HTTP (DoH) — TCP-подключение на порт 443, подобно обычному HTTPS. Внутри другой формат запроса, с HTTP-заголовками. Однако для провайдера такой запрос будет виден как обычное HTTPS-подключение. Полагаю, этот протокол был придуман на случай, когда DNS-запросы к чужим серверам будут заблокированы, чтобы маскировать под обычный веб трафик. А также, чтобы браузеры могли сами резолвить домены и не создавать при этом аномальный трафик.

    По сути, DNS over HTTPS и over TLS — одно и то же, с немного отличающемся форматом запросов. Оба эти протокола приняты в качестве стандартов и имеют RFC. Вероятнее всего, в ближайшее время мы увидим массовое распространение их обоих.
  • DNSSEC — протокол цифровой подписи DNS-записей. Не имеет отношения к шифрованию, так как все запросы передаются в открытом виде. Может работать как по старому классическому протоколу DNS, то есть UDP/TCP на порту 53, так и внутри DNS over TLS/HTTPS. Целью DNSSEC является подтверждение подлинности DNS-записи. Владелец домена может добавить публичный ключ на корневые сервера своей доменной зоны и подписывать все записи на мастер NS-серверах. По сути, к каждой DNS записи, например, A-записи или MX-записи, добавляется еще одна запись типа RRSIG, содержащая подпись. Процедура валидации DNSSEC на рекурсивном резолвере позволяет установить, действительно эта запись была создана владельцем домена.
Лучше ужасный конец, чем ужас без конца!


Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 425
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 12:58



 Установка Dnscrypt 
  1. Устанавливаем dnscrypt
    Код: выделить все
    dnf install dnscrypt-proxy
  2. Модифицируем сервис
    Файлы сервиса и сокета написаны немного не правильно изначально и при смене интерфейса с loopback на любой иной socket отказывается запускаться при запуске системы. Во избежание проблем с запуском нужно править файлы
    Код: выделить все
    cp /usr/lib/systemd/system/dnscrypt-proxy.service /etc/systemd/system/

    Чтобы при обновлении пакета не заменялся модифицированный нами файл нужно скопировать или создать dnscrypt-proxy.service в каталог /etc/systemd/system/.
    cat /etc/systemd/system/dnscrypt-proxy.service
    Код: выделить все
    [Unit]
    Description=DNSCrypt-proxy client
    Documentation=https://github.com/jedisct1/dnscrypt-proxy/wiki
    ## Commenting 1 line
    #Requires=dnscrypt-proxy.socket
    After=network-online.target
    Wants=network-online.target
    Before=nss-lookup.target
    Wants=nss-lookup.target

    [Service]
    NonBlocking=true
    ExecStart=/usr/bin/dnscrypt-proxy --config /etc/dnscrypt-proxy/dnscrypt-proxy.toml

    DynamicUser=yes
    ProtectControlGroups=yes
    ProtectKernelModules=yes
    ProtectKernelTunables=yes

    CacheDirectory=dnscrypt-proxy
    ConfigurationDirectory=dnscrypt-proxy
    LogsDirectory=dnscrypt-proxy
    RuntimeDirectory=dnscrypt-proxy

    ## Add 2 lines. Allow binding to IP_ADDRESS:53 as non-root user without the .socket unit
    CapabilityBoundingSet=CAP_NET_BIND_SERVICE
    AmbientCapabilities=CAP_NET_BIND_SERVICE

    [Install]
    ## Commenting 1 line
    #Also=dnscrypt-proxy.socket
    WantedBy=multi-user.target
  3. Перечитываем конфигурацию служб systemd после внесения изменений на предыдущем шаге
    Код: выделить все
    systemctl daemon-reload
  4. Меняем в файле /etc/dnscrypt-proxy/dnscrypt-proxy.toml директиву:
    Код: выделить все
    listen_addresses = []

    указывая там IP интерфейса и порт
    Код: выделить все
    listen_addresses = ['195.0.1.33:53']
  5. Стартуем dnscrypt-proxy и разрешаем автоматический запуск службы
    Код: выделить все
    systemctl enable --now dnscrypt-proxy.service
  6. Проверяем статус службы dnscrypt-proxy
    Код: выделить все
    systemctl status dnscrypt-proxy.service
Лучше ужасный конец, чем ужас без конца!


Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 425
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 12:58



 Исключение из проксирования запросов к локальному DNS-серверу 
Данная ситуация возможна при наличии собственного DNS-сервера, который обслуживает локальную сеть. В этом случае IP dnscrypt-proxy используется в качестве DNS-сервера, а все запросы к локальному домену перенаправляются на DNS-сервер обслуживающий локальную сеть. Для пересылки запросов нужно раскомментировать строку
Код: выделить все
forwarding_rules = '/etc/dnscrypt-proxy/forwarding-rules.txt'

и отредактировать файл forwarding-rules.txt под параметры локальных DNS-зон
Код: выделить все
## Перенаправляем запросы для free-adm.ru и *.free-adm.ru на DNS-сервер 127.0.0.1
free-adm.ru     127.0.0.1
## Перенаправляем запросы для обратной зоны 1.0.195.in-addr.arpa на DNS-сервер 127.0.0.1
1.0.195.in-addr.arpa 127.0.0.1
test.ru         127.0.0.1
10.in-addr.arpa 127.0.0.1

==============
Включаем передачу трафика на петлевой интерфейс
Код: выделить все
$EDITOR /etc/sysctl.d/network.conf
# включаем пересылку пакетов на LOCALHOST
net.ipv4.conf.enp5s0.route_localnet=1

Применение внесённых изменений
Код: выделить все
sysctl -p /etc/sysctl.d/network.conf

Настраиваем перенаправление 53 порта tcp/udp на адрес 127.0.0.1 и порт 5353
Код: выделить все
firewall-cmd --list-forward-ports
port=53:proto=tcp:toport=5353:toaddr=127.0.0.1
port=53:proto=udp:toport=5353:toaddr=127.0.0.1
Лучше ужасный конец, чем ужас без конца!


Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 425
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный


Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron