Установка DNSCrypt на Debian из исходных кодов

Ниже будет описана установка DNSCrypt на Debian GNU/Linux 8.7 (jessie)
Исходные данные:
192.168.100.1 — адрес сервера (он же сервер DNS)
192.168.100.X/24 — IP клиента
Подготовка:
apt install libsodium-dev pkg-config libsystemd-dev build-essential
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libsodium13
НОВЫЕ пакеты, которые будут установлены:
  libsodium-dev libsodium13 libsystemd-dev pkg-config
обновлено 0, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 436 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 1 583 kB.
Хотите продолжить? [Д/н]
...

Скачать исходники dnscrypt-proxy
wget https://download.dnscrypt.org/dnscrypt-proxy/LATEST.tar.gz
tar -xvf LATEST.tar.gz
cd dnscrypt-proxy-*

Собрать
./configure --prefix=/ --with-systemd && make
Установить
make install

Юниты systemd
Копировать:
cp dnscrypt-proxy.s{ocket,ervice} /etc/systemd/system

Немножко редактировать:
sed -ir 's#:53#:5553#g' /etc/systemd/system/dnscrypt-proxy.socket

cat /etc/systemd/system/dnscrypt-proxy.service
[Unit]
Description=DNSCrypt client proxy
Documentation=man:dnscrypt-proxy(8)
Requires=dnscrypt-proxy.socket
After=network.target
Before=nss-lookup.target

[Install]
Also=dnscrypt-proxy.socket
WantedBy=multi-user.target

[Service]
Type=simple
NonBlocking=true

# Edit the configuration file appropriately, or the service will not start.
# See https://dnscrypt.org for more information.
ExecStart=//sbin/dnscrypt-proxy //etc/dnscrypt-proxy.conf

cat /etc/systemd/system/dnscrypt-proxy.socket
[Unit]
Description=dnscrypt-proxy listening socket

[Socket]
ListenStream=127.0.0.1:5553
ListenDatagram=127.0.0.1:5553

[Install]
WantedBy=sockets.target

Немножко поправить настройки
sed -i 's/# LocalAddress 127.0.0.1:53/LocalAddress 127.0.0.1:5553/' /etc/dnscrypt-proxy.conf

egrep -v '^#|^$' /etc/dnscrypt-proxy.conf
ResolverName random
Daemonize no
LocalAddress 127.0.0.1:5553
LocalCache on
EphemeralKeys off
BlockIPv6 no


Запустить
systemctl status dnscrypt-proxy.service
● dnscrypt-proxy.service - DNSCrypt client proxy
   Loaded: loaded (/etc/systemd/system/dnscrypt-proxy.service; disabled)
   Active: inactive (dead)
     Docs: man:dnscrypt-proxy(8)
systemctl enable dnscrypt-proxy.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/dnscrypt-proxy.service to /etc/systemd/system/dnscrypt-proxy.service.
Created symlink from /etc/systemd/system/sockets.target.wants/dnscrypt-proxy.socket to /etc/systemd/system/dnscrypt-proxy.socket.
systemctl start dnscrypt-proxy.service
systemctl status dnscrypt-proxy.service
● dnscrypt-proxy.service - DNSCrypt client proxy
   Loaded: loaded (/etc/systemd/system/dnscrypt-proxy.service; enabled)
   Active: active (running) since Ср 2017-05-03 16:59:52 MSK; 9s ago
     Docs: man:dnscrypt-proxy(8)
 Main PID: 25381 (dnscrypt-proxy)
   CGroup: /system.slice/dnscrypt-proxy.service
           └─25381 //sbin/dnscrypt-proxy //etc/dnscrypt-proxy.conf

май 03 16:59:52 debian dnscrypt-proxy[25381]: Wed May  3 16:59:52 2017 [NOTICE] Starting dnscrypt-proxy 1.9.4
май 03 16:59:52 debian dnscrypt-proxy[25381]: Wed May  3 16:59:52 2017 [INFO] Loading plugin [//lib/dnscrypt-proxy/libdcplugin_example_cache.so]
май 03 16:59:52 debian dnscrypt-proxy[25381]: Wed May  3 16:59:52 2017 [INFO] Loaded plugin: [A basic DNS cache]
май 03 16:59:52 debian dnscrypt-proxy[25381]: Wed May  3 16:59:52 2017 [INFO] Generating a new session key pair
май 03 16:59:52 debian dnscrypt-proxy[25381]: Wed May  3 16:59:52 2017 [INFO] Done
май 03 16:59:53 debian dnscrypt-proxy[25381]: Wed May  3 16:59:53 2017 [INFO] Server certificate with serial #1493812021 received
май 03 16:59:53 debian dnscrypt-proxy[25381]: Wed May  3 16:59:53 2017 [INFO] This certificate is valid
май 03 16:59:53 debian dnscrypt-proxy[25381]: Wed May  3 16:59:53 2017 [INFO] Chosen certificate #1493812021 is valid from [2017-05-03] to [2017-05-04]
май 03 16:59:53 debian dnscrypt-proxy[25381]: Wed May  3 16:59:53 2017 [INFO] Server key fingerprint is FE4A:3D80:5793:2111:F277:CCF2:0EC7:79D5:2D02:0D97:B120:8E0F:1E29:5A89:A23B:D27C
май 03 16:59:53 debian dnscrypt-proxy[25381]: Wed May  3 16:59:53 2017 [NOTICE] Proxying from 127.0.0.1:5553 to 210.16.120.139:443

Настройки BIND9
cat /etc/bind/named.conf.options
acl mydraftsnet {192.168.100.0/24; 127.0.0.1; };
options {
        directory "/var/cache/bind";

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        allow-query { mydraftsnet; };
        forwarders {
                127.0.0.1 port 5553;
        };
};

Перезапустить BIND:
systemctl restart bind9.service

Проверить:
netstat -nulp |grep 53
udp        0      0 127.0.0.1:5553          0.0.0.0:*                           1/init           
udp        0      0 10.0.0.51:53            0.0.0.0:*                           25393/named      
udp        0      0 127.0.0.1:53            0.0.0.0:*                           25393/named
Рубрики: *nix, BIND, DNS, Сервер | 2 | 5 740 | Распечатать эту статью