Unbound control error connect connection refused

Solved dnscrypt-proxy2 and local-unbound error on startup

Yampress

I installed the dnscrypt-proxy2 package then configured according to the the creators of the port recipe:

# pkg install dnscrypt-proxy2

then add into /etc/rc.conf:

And after restarting my computer, the following errors appear during startup:

Despite the pop-up error, the programs can connect to the internet, so the connection probably works.

How to get rid of the above errors during startup?
Possibly what I configured wrongly ?

SirDice

Administrator

This is never going to work. Firstly you have a set skip on lo0 so the rule is ignored. Secondly you cannot redirect packets this way, you cannot «bounce» packets out the same interface they came in on.

Yampress

After installing the dnscrypt-proxy2 package, instructions appeared in the console:

root@freebsd # cat /usr/ports/dns/dnscrypt-proxy2/files/pkg-message.in

/var/unbound/unbound.conf:
server:
interface: 127.0.0.1
do-not-query-localhost: no

/var/unbound/forward.conf:
forward-zone:
name: «.»
forward-addr: 127.0.0.1@5353

If you are using local_unbound, DNSSEC is enabled by default. You should
comment the «auto-trust-anchor-file» line or change dnscrypt-proxy to use
servers with DNSSEC support only.
EOM
>
]

Источник

Unbound DNSSEC через DNSCrypt

Установка Unbound в качестве DNSSEC-клиента в ОС Debian-based с переадресацией ДНС-запросов через DNSCrypt для защиты от подмены ДНС адреса сводится к выполнению всего нескольких простых шагов: собственно сама установка и последующая правка resolv.conf.

Сей пост посвященный криптографической защите DNS-трафика по сути является продолжением темы «паранойи много не бывает». Кругом враги и глобальные заговоры злых соседей, государства и транснациональных корпораций. Кто-то скажет пора лечится и я полностью соглашусь, но некогда имхо врагов который год всё не убывает, а значит нужно усиливать меры безопасности, ведь они идут, они заполоняют.

Итак. DNSSEC (ака Domain Name System Security Extensions) — это набор расширений безопасности системы доменных имён (протокола DNS), которые позволяют обеспечить целостность DNS-запросов между клиентом и сервером с использованием криптографии с открытым ключом.

Зачем нужен DNSSEC?

Служба доменных имен (DNS) нужна для того, чтобы облегчить пользователям запоминание адресов веб-ресурсов, ведь проще запомнить имя сайта чем его цифровой ИП-адрес. Далеко не каждому пользователю Интернетоф известно, что одному доменному имени может быть присвоено несколько ИП-адресов, что обеспечивает отказоустойчивость веб-ресурсам, для которых 100% аптайм является критически важным критерием, примером может быть ПС yandex.ru :

Выше приведён список валидных ИП-адресов для ПС yandex.ru. Теперь предположим, что на нашем канале связи висит туева хуча спец. служб, которая хочет закинуть нашей машине различного «пакращення», и мы значит вбиваем в строку своего браузера доменное имя yandex.ru, а злые люди подменяют приведённый выше список ИП на ИП своего бацыльного сервера на котором висит фейковая поисковая система с элементами социальной инженерии, клюнув на которую мы широко развесив ухи «сдаем» все свои явки и пароли дополнительно получая при этом кучу всяких доселе ещё никому неизвестных вирусов и троянов, — поздравляю вам пи.дец 🙂

Вот именно для защиты от подмены этих самых ИП-адресов, подмена которых чревата упомянутыми выше лулзами, и призван DNSSEC.

Установка Unbound в Debian-based ОС

Мы не доверяем нашему ISP и потому просто выполняем:

Проверяем состояние сервиса unbound:

Проверяем DNSSEC по наличию флага «ad» и записи «RRSIG» в результате выполнения dig com. SOA +dnssec :

Конфигурационные файлы unbound:

Владельцем ключа » /var/lib/unbound/root.key » является пользователь » unbound «, от имени которого также работает и сам сервис unbound .

Ключ » /var/lib/unbound/root.key » должен регулярно обновляться, что с успехом автоматически выполняет скрипт управления демоном » /etc/init.d/unbound » в момент старта/запуска/перезапуска и никаких дополнительных манипуляций не требует.

Настройка Unbound в Debian-based ОС

Кого устраивает конфигурация по умолчанию, умолчания смотрите в файле /usr/share/doc/unbound/examples/unbound.conf , то можно пропустить сей конфиг. Нам лично умолчания не подходят и потому конфиг /etc/unbound/unbound.conf мы допиливаем до такой кондиции:

Защитим файл конфигурации от изменений: chattr +i /etc/unbound/unbound.conf

Проходим тест здесь или здесь или установим плагин DNSSEC Validator для браузера Firefox. DNSSEC Validator для браузера Firefox использует DANE протокол.

Вот и всё, теперь мы как минимум на 90-98% защищены от подмены ДНС адреса, но только при условии если на ДНС сервере, на котором размещён домен имеется расширение DNSSEC и домен подписан.

Например, если мы запросим данные о домене dnssectest.sidnlabs.nl , на котором мы проверяли наш ДНС-ресолвер, то увидим запись с подписью (ака RRSIG):

Но запросив данные о google.com этой подписи мы не обнаружим, а следовательно надеяться на целостность ДНС-запроса мы не можем:

Из приведённого выше слудет, что DNSSEC является хорошим способом обеспечения безопасности и шифрования ДНС-запросов. Для запуска DNSSEC в глобальном масштабе, необходимо подписать корневые зоны (.com .org etc), что было сделано уже в 2010 году, SU была подписана в октябре 2011 года, зоны РФ и RU в конце 2012 года. Дальнейшее же продвижение DNSSEC зависит от компаний, обслуживающих авторитарные DNS сервера в своих зонах — регистраторов и хостеров. Однако, в силу того, что до сих пор ещё не на всех ДНС серверах используется DNSSEC, надеяться на шифрование всех ДНС-запросов без исключения не приходится ибо ДНС-провайдеры плевать хотели на DNSSEC. Поддержку DNSSEC на своих кеширующих DNS серверах также должны реализовать и Интернет-провайдеры.

Читайте также:  Sony klv 26s550a прошивка

Параноикам же экстра класса пока необойтись без полной криптографической защиты DNS-трафика с поддержкой DNSSEC включительно, которую можно заполучить с помощью DNSCrypt.

Установка DNSCrypt в Debian-based ОС

На странице «DNSCrypt — Official Project Home Page» сказано, что для большинства модерновых/современных Linux/BSD систем существуют готовые установочные пакеты, а для иных систем предлагается компиляция dnscrypt-proxy source code и единственной зависимостью для компиляции требуется библиотека libsodium.

В Debian Jessie пакет dnscrypt-proxy отсутствует, однако есть dnscrypt-proxy в SID. Библиотека libsodium есть для Debian Jessie, поэтому из репозитория установим только libsodium , а dnscrypt-proxy скомпилируем самостоятельно:

Бинарные файлы будут установлены сюда

Есть важное замечание! Если Unbound работает с проверкой DNSSEC в комбинации с сервером не поддерживающими DNSSEC, тогда все запросы будут неудачными. В таком случае нужно DNSCrypt resolvers которые поддерживают DNSSEC или же отключить DNSSEC в Unbound поставив символ комментария перед auto-trust-anchor-file .

Файл со списком публичных dnscrypt-резолверов поддерживающих DNSSEC можно найти в каталоге с исходным кодом less dnscrypt-resolvers.csv или же по ссылке list of public DNS resolvers, или просто выберите один из этого списка:

  • cloudns-can — CloudNS Canberra, CloudNS is an Australian based security focused DNS provider.
  • cloudns-syd — CloudNS Sydney, CloudNS is an Australian based security focused DNS provider.
  • dnscrypt.eu-dk — DNSCrypt.eu Denmark, «Free, non-logged, uncensored. Hosted by Netgroup.»
  • dnscrypt.eu-dk-ipv6 — DNSCrypt.eu Denmark over IPv6, «Free, non-logged, uncensored. Hosted by Netgroup.»
  • dnscrypt.eu-dk-port5353 — DNSCrypt.eu Denmark (port 5353), «Free, non-logged, uncensored. Hosted by Netgroup.»
  • dnscrypt.eu-nl — DNSCrypt.eu Holland, «Free, non-logged, uncensored. Hosted by RamNode.», Netherlands
  • dnscrypt.eu-nl-ipv6 — DNSCrypt.eu Holland over IPv6, «Free, non-logged, uncensored. Hosted by RamNode.», Netherlands
  • dnscrypt.eu-nl-port5353 — DNSCrypt.eu Holland (port 5353), «Free, non-logged, uncensored. Hosted by RamNode.», Netherlands
  • dnscrypt.org-fr — «DNSCrypt server in France», «DNSSEC/Namecoin/Non-logged/Uncensored — ARM server donated by Scaleway.com»
  • soltysiak — Soltysiak, Public DNSCrypt server in Poland,Poland

Теперь осталось подпилить конфигурацию Unbound и запустить dnscrypt-proxy , добавить в /etc/rc.local для автозапуска и перезапустить Unbound:

Запуск DNSCrypt от non-root пользователя

ДНС-ресолвер Unbound, многие часто по ошибке называют его ДНС-сервером, после установки по умолчанию запускается от имени пользователя unbound .

Любые попытки запустить DNSCrypt от имени пользователя nobody закончатся ошибкой » [ERROR] Unable to chroot to [/nonexistent] «, поэтому для запуска DNSCrypt от имени ограниченного пользователя (ака non-root) нам потребуется сначала создать его и у него должна быть реальная домашняя директория.

Делаем пользователя dnscrypt (на любые вопросы жмём Enter): adduser —disabled-login —shell /bin/false dnscrypt

Запускаем DNSCrypt от имени non-root пользователя: /opt/dnscrypt/sbin/dnscrypt-proxy —ephemeral-keys —resolver-name= —local-address=127.0.0.1:53 —user=dnscrypt —daemonize

Проблемы?

unbound-control[. ] error: connect: Connection refused

Если не изменялась конфигурация по умолчанию, то всё должно быть в порядке, а если же в директории /etc/unbound/unbound.conf.d/ были созданы дополнительные конфигурационные файлы, то при использовании unbound-control возможны такие вот проблемы:

В любом случае после первого выполнения unbound-control reload ДНС-ресолвер перестаёт отвечать и требуется перезапуск systemctl restart unbound .

Где проблема, в самом unbound (но нет же, запускается/перезапускается успешно) или в unbound-control, можно только гадать? Короче, чтобы избежать этих проблем (версия unbound 1.4.22), конфигурационный файл должен быть один с одной секцией server: .

Unbound не пишет в unbound.log

По умолчанию Unbound пишет в syslog , однако есть возможность писать события в отдельный файл журнала — в unbound.log . Для этого директива » use-syslog: » должна быть установлена в «no» и при этом файл указанный в » logfile: » должен физически присутствовать на диске, владельцем которого должен быть unbound :

Проблемы с forwarding-ом DNS-запросов

Если Unbound продолжает перенаправлять запросы на сторонние сервера, а не на те что мы указали в «forward-zone:», тогда открываем /etc/default/unbound , доводим его до следующей ниже кондиции и перезапускаем Unbound:

DNSSEC Validator браузера Firefox пишет о неправильном IP

DNSSEC/TLSA Validator браузера Firefox иногда может выдавать ложную тревогу о том, что IP-адрес полученный браузером не совпадает с тем, который был получен расширением, как на скриншоте ниже:

На скриншоте говорится о том, что IP-адрес 150.203.164.38 полученный браузером не совпадает с IP 5.153.231.4/130.89.148.14 , что даёт основания подозревать попытку атаки «DNS spoofing». Проверим:

Видим, что nslookup debian.org (запрос через наш локальный ДНС-ресолвер) и nslookup debian.org 8.8.8.8 (запрос через ДНС-ресолвер гугла) выдаёт одинаковый список IP-адресов, а это значит, что DNSSEC/TLSA Validator браузера Firefox выдал ложную тревогу.

По умолчанию DNSSEC/TLSA Validator браузера Firefox настроен (Инструменты — Дополнения — Расширения — DNSSEC/TLSA Validator — Настройки) как «Without resolver» и использует «DANE протокол» для проверки DNSSEC для домена. Потому как при наличии нескольких А записей для домена они выдаются динамически, то вполне вероятно что ложная тревога обусловлена несогласованностью между результатами запроса локального ресолвера и самого расширения.

Решить эту проблему можно установив в настройках расширения » Resolver settings » вариант » Custom: » и IP ресолвера » 127.0.0.1 «, далее нажать «Test current settings» на что должны получить » Success — current settings allow DNSSEC validation. «.

Итого

Установка Unbound DNSSEC с переадресацией запросов в DNSCrypt оправдана тем, что:

  1. DNSSEC на данный момент поддерживают очень мало ДНС-провайдеров, а своему ISP мы не доверяем;
  2. DNSCrypt не кэширует запросы, а Unbound как раз наоборот.
Читайте также:  Tp link wa701nd прошивка

Вместо Unbound для кэширования ДНС-запросов можно установить «nscd — GNU C Library: Name Service Cache Daemon», однако он глючный и в Debian не установлен по умолчанию.

Напомним, что использование шифрования ДНС-трафика с помощью DNSCrypt не скрывает сам ИП-адрес и доменное имя сайта к которому обращается приложение, а только даёт некую уверенность в том, что результат ДНС запроса не будет подменён местной «прослушкой». При использовании не зашифрованного HTTP соединения доменное имя (заголовок Host), как собственно и строку запроса (Request-Line) можно выдрать из » Request Headers «. Однако при использовании HTTPS, «прослушке» будут доступны только IP-адреса имхо перед началом передачи » Request Headers » происходит установка защищённого TCP соединения (via SSL/TLS protocol) и уже после клиент/браузер отправляет HTTP request (методом GET или POST) по зашифрованному TCP соединению.

Unbound DNSSEC совместно с DNSCrypt не является решением вопроса полной 100% анонимности, которой не может быть в принципе, а только лишь меняет доверенного поставщика с местного, как правило «подкаблучного» ISP (Internet Service Provider), на как нам кажется более надёжного и анонимного европейского поставщика ДНС-услуг от которого большей частью теперь и будет зависеть безопасность всех наших ДНС-запросов.

Источник

Set Up Unbound DNS Resolver on Ubuntu 22.04/20.04 Server

This tutorial will be showing you how to set up a local DNS resolver on Ubuntu 22.04/20.04 with Unbound. A DNS resolver is known by many names, some of which are listed below. They all refer to the same thing.

  • full resolver (in contrast to stub resolver)
  • recursive DNS server
  • recursive name server
  • recursive resolver
  • DNS recursor

Examples of DNS resolver are 8.8.8.8 (Google public DNS server) and 1.1.1.1 (Cloudflare public DNS server). The OS on your computer also has a resolver, although it’s called stub resolver due to its limited capability. A stub resolver is a small DNS client on the end user’s computer that receives DNS requests from applications such as Firefox and forward requests to a recursive resolver. Almost every resolver can cache DNS response to improve performance, so they are also called caching DNS server.

Why Run Your Own DNS Resolver

Usually, your computer, router or server uses your ISP’s DNS resolver to query DNS names, so why run a local DNS resolver?

  • It can speed up DNS lookups, because the local DNS resolver only listens to your DNS requests and does not answer other people’s DNS requests, so you have a much higher chance of getting DNS answers directly from the cache on the resolver. The network latency between your computer and DNS resolver is eliminated (almost zero), so DNS queries can be sent to root DNS servers more quickly.
  • If you run a mail server and use DNS blacklists (DNSBL) to block spam, then you should run your own DNS resolver, because some DNS blacklists such as URIBL refuse requests from public DNS resolvers.
  • If you run your own VPN server on a VPS (Virtual Private Server), it’s also a good practice to install a DNS resolver on the same VPS.
  • You may also want to run your own DNS resolver if you don’t like your Internet browsing history being stored on a third-party server.

Hint: Local doesn’t mean your home computer. Rather, it means the DNS resolver runs on the same box or the same network as the DNS client. You can install Unbound DNS resolver on your home computer. It’s local to your home computer. You can also install Unbound DNS resolver on a cloud server, and it’s local to the cloud server.

Unbound DNS Resolver

Unbound is an open-source DNS validating resolver, meaning it can do DNSSEC validation to ensure the DNS response is authentic. Unbound features:

  • Lightweight and extremely fast, as it doesn’t provide full-blown authoritative DNS server functionality. On one of my servers, Unbound uses a quarter of the memory required by BIND9.
  • DNS response cache
  • Prefetch: fetch data that is about to expire so that client does not get spike in latency when lookup needs to be redone when TTL expires on data.
  • DNS over TLS
  • DNS over HTTPS
  • Query Name Minimization: Send minimum amount of information to upstream servers to enhance privacy.
  • Aggressive Use of DNSSEC-Validated Cache
  • Authority zones, for a local copy of the root zone
  • DNS64
  • DNSCrypt
  • DNSSEC validation: It’s enabled by default on Ubuntu 🙂
  • EDNS Client Subnet
  • Can run as a DNS forwarder.
  • Supports local-data and response policy zone to give a custom answer back for certain domain names.

Step 1: Install Unbound DNS Resolver on Ubuntu 22.04/20.04

Run the following command to install Unbound on Ubuntu 22.04/20.04 from the default repository.

By default, Unbound automatically starts after installation. You check its status with:

If it’s not running, then start it with:

And enable auto-start at boot time:

Note: If there’s another service listening on UDP port 53, then unbound might not be able to start. You need to stop that service before starting unbound. To find out what service is already using UDP port 53, run the following command.

If you installed BIND9 resolver before, then you need to run the following command to stop and disable it, so Unbound can listen to the UDP port 53. By default, Unbound listens on 127.0.0.1:53 and [::1]:53

Читайте также:  The error code returned on failure is 720

Step 2: Configure Unbound

The main configuration file for Unbound is /etc/unbound/unbound.conf . Out of the box, the Unbound server on Ubuntu provides recursive service for localhost only. Outside queries will be denied.

Edit the config file.

By default, there’s only one config line in this file.

This is to include the config files under /etc/unbound/unbound.conf.d/ directory, which contains two config files.

  • qname-minimisation.conf : enables QNAME minimization.
  • root-auto-trust-anchor-file.conf : Enables DNSSEC validation.

You don’t have to touch these two files. Just know that they will do good to your DNS resolution. Now we need to add our custom configurations. You can take a look at the example config file /usr/share/doc/unbound/examples/unbound.conf to learn how to configure Unbound. For your convenience, I compiled a minimal config for you. Add the following lines in the /etc/unbound/unbound.conf file.

The above configurations are self-explanatory. There are two things you might need to consider.

(1) By default, Ubuntu runs the systemd-resolved stub resolver which listens on 127.0.0.53:53 . You need to stop it, so unbound can bind to 0.0.0.0:53 .

(2) If your local network range is not 10.0.0.0/8 , you need to change that, for example,

so unbound will accept DNS queries from the 192.168.0.0/24 network.

Save and close the file. Then restart Unbound.

Check the status. Make sure it’s running.

If you have UFW firewall running on the Unbound server, then you need to open port 53 to allow LAN clients to send DNS queries.

This will open TCP and UDP port 53 to the private network 10.0.0.0/8.

Step 3: Setting the Default DNS Resolver on Ubuntu 22.04/20.04 Server

We need to make Ubuntu 22.04/20.04 server use 127.0.0.1 as DNS resolver, so unbound will answer DNS queries. The unbound package on Ubuntu ships with a systemd service unbound-resolvconf.service that is supposed to help us accomplish this. However, I found it won’t work.

Instead, you can create a custom unbound-resolvconf.service file.

Add the following lines in this file.

Save and close this file. Then reload systemd.

Make sure your system has the resolvconf binary.

Next, restart this service.

Now check the content of /etc/resolv.conf .

As you can see, 127.0.0.1 (Unbound) is default DNS resolver.

Troubleshooting

If you see a different value in the /etc/resolv.conf file, that means Unbound is still not your default DNS resolver. Note that some hosting providers like Linode may use a network helper to auto-generate the /etc/resolv.conf file. To change the default DNS resolver, you need to disable that network helper in the hosting control panel.

If this method still doesn’t work, perhaps it’s due to the fact the /etc/resolv.conf file on your Ubuntu server is not a symbolic link to /run/resolvconf/resolv.conf . You need to delete the /etc/resolv.conf file and create a symbolic link.

If you have WireGuard VPN client running on the Ubuntu server, then you need to use the following DNS setting in the WireGuard client configuration file.

Then restart the WireGuard VPN client.

Step 4: Setting Default DNS Resolver on Client Computers

On Ubuntu desktop, you can follow the above instructions to set the default DNS resolver, but remember to replace 127.0.0.1 with the IP address of Unbound server. The steps of setting default DNS resolver on MacOS and Windows can be found on the Internet.

How to Disable IPv6 in Unbound

If your server doesn’t have IPv6 connectivity, it’s a good idea to turn off IPv6 in Unbound to reduce unnecessary DNS lookups over IPv6. To disable IPv6 in Unbound on Ubuntu, simply add the following line in the server: clause in the /etc/unbound/unbound.conf file.

Save and close the file. Then restart Unbound.

Unbound DNSSEC

DNSSEC is a way to validate that the DNS response doesn’t get tamper with. It’s enabled by default if your install Unbound from the default Ubuntu repository. Let’s do a quick DNS query on the Ubuntu 22.04/20.04 server.

You can see the ad flag in the DNS response. AD means authentic data.

Note that the domain name must enable DNSSEC for the validation to work. If you don’t see the ad flag, it could mean that the domain name hasn’t enabled DNSSEC.

Local-data

You can use the local-data feature in Unbound to serve local internal hostnames or override public DNS records.

For example, if I install unbound on my blog web server, I can add the following four lines in the server: clause in the Unbound configuration files, so that the domain always resolves to localhost.

If you want to add multiple IP addresses for a hostname (round-robin DNS load balancing), you can do it like so:

No servers could be reached

If you see the following error when using the dig command on client computers

It could be that your firewall rule is wrong or the Unbound resolver isn’t running.

Conclusion

I hope this tutorial helped you set up a local DNS resolver on Ubuntu 22.04/20.04 with Unbound. Because it will be used on a localhost/local network, no encryption (DNS over TLS or DNS over HTTPS) is needed. For setting up a DoT resolver or DoH resolver, please read the following tutorials.

As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care 🙂

Источник

Smartadm.ru
Adblock
detector