Некоторые по ошибке называют Unbound DNS Resolver ДНС сервером. Разница между DNS Resolver и DNS Server в том, что Resolver является посредником между приложением, которое запрашивает ДНС записи и ДНС сервером, второй же (держатель/сервер зоны, он же и резолвер в одной проге) служит для полноценного обслуживания доменных имен/зон с поддержкой всех типов ДНС записей (A, TXT, SOA, PTR etc).
ДНС сервера провайдера или других поставщиков могут быть ненадёжны, а поэтому лучше использовать так называемые корневые ДНС сервера ака "Root Servers" от первоисточника IANA (Администрация адресного пространства Интернет - Internet Assigned Numbers Authority) с которого по идее должны обновляться и ДНС сервера нашего провайдера. Более того, все ДНС запросы регистрируются у нашего Интернет провайдера, а лучше будет если они будут регистрироваться где-то в другом месте/стране.
Unbound это кэширующий DNS ресолвер (не ДНС сервер!) который служит для обслуживания рекурсивных запросов. Во процессе своей работы свой кэш он целиком хранит в оперативной памяти, лимит которой ограничивается директивой "key-cache-size: 4m". Unbound поддерживает расширение DNSSEC и способен работать как "validator".
К плюсам Unbound ресолвера, в сравнении с ДНС серверами типа BIND, можно отнести скорость работы и малый размер. На официальном сайте есть сравнительная информация популярных DNS серверов по количеству обработанных запросов:
Server Queries/sec (10 clients) Unbound 8 276 MaraDNS 3 068 BIND 3 003 dnscache 2 928 PowerDNS Recursor 2 074
Установка и настройка unbound под Windows XP
Загрузить unbound-ххх.zip, распаковать, переименовать каталог unbound-ххх в Unbound и передвинуть в C:\Program Files\Unbound (именно в этот каталог программа смотрит по умолчанию), добавить в конец файла service.conf строку "do-ip6: no" для отключения протокола ip6 (пока не на всех ОС установлен/поддерживается).
Загрузить named.root, переименовать его в named.cache и переместить его в C:\Program Files\Unbound. Открыть консоль и перейти в cd /d "c:\Program Files\Unbound\", после чего установить Unbound как службу выполнив unbound-service-install.exe
Теперь, если мы хотим использовать DNSSEC, то из каталога cd /d "c:\Program Files\Unbound\" нам нужно выполнить файл unbound-anchor.exe, который проверит наличие/доступность root.key и обновит/создаст его примерно с таким содержимым:
; autotrust trust anchor file ;;id: . 1 ;;last_queried: 1364027536 ;;Sat Mar 21 11:01:27 2013 ;;last_success: 1364027536 ;;Sat Mar 21 11:01:27 2013 ;;next_probe_time: 1364071854 ;;Sat Mar 22 22:50:54 2013 ;;query_failed: 0 ;;query_interval: 43200 ;;retry_time: 8640 . 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9WPOJKD098y489hfsk\ sd'f-4gcCjFFVQUTf6v58fLjwBd0YI0\ EzrAcQqBGCzh/RKJFD)S*FYER(HSDJFDKDOPFJIODSHFERFGIDSHFDIBV78egf8w/VHL496M/\ QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW\ 5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRT\ Aoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size\ = 2048b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1364027536 ;;Sat Mar \ 21 11:01:27 2013
Теперь в service.conf нужно явно указать строку "auto-trust-anchor-file: "C:\Program Files\Unbound\root.key"" или "trust-anchor: ". IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5"", запустить сервис "Unbound DNS validator", а иначе лыжи не поедут и DNSSEC не будет работать! Проверить можно выполнив команду dig com. SOA +dnssec, в результате мы должны видеть наличие флага AD в строке ";; flags: qr rd ra ad;":
>dig com. SOA +dnssec ; <<>> DiG 9.3.2 <<>> com. SOA +dnssec ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 230 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;com. IN SOA ;; ANSWER SECTION: com. 900 IN SOA a.gtld-servers.net. nstld.verisi gn-grs.com. 1364032049 1800 900 604800 86400 com. 900 IN RRSIG SOA 8 1 900 20130330094729 20130 323083729 23975 com. EBxeTAIHI4Gooj8J+k5L8WRo6GKMFvj8B/nygRxduUc/pihyXYy9XWUa aj xdiy1cr+NktjVZFWKQDFVZGstsmm1Vc/WbajggY9qyV2eJXg0Kd4BF 2S/rEW/kjdYU3qeaurDH8SKpj GhyR00haELra6Ed57k/ke8DN6MyxZ4/ 3WQ= ;; AUTHORITY SECTION: com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN RRSIG NS 8 1 172800 20130327041900 201 30320030900 23975 com. pzdn+HfS1clWqjvnbGgg0Yesi/4MjV7sdiNsfS1tAmMIaxpCAAM37WeE 8UXc3umlh3McIYywFPIxBEqI9dBw2iUAhrdFUQ8kS2M3BA1p/s5By5He 3gx7u6xFu6rLfRXKpxwfvqW 77FCqMkdeo3bOtsxBES6RDvuJxJUmOZ2P 6JU= ;; Query time: 609 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat Mar 23 11:47:46 2013 ;; MSG SIZE rcvd: 637
dig есть и для Windows. Более наглядно проверить используем ли мы DNSSEC можно вот по этой ссыле, если нет, то мы увидим надпись "No, you are not using DNSSEC", а под нею мужичка в печали взявшегося за репу:)
А если да, то видим мессагу "Yes, you are using DNSSEC", а под ней радостного чувачка:)
Полный конфиг, работающей па моём ПК конфигурации Unbound DNS Resolver ака DNSSEC, представлен ниже:
unbound.exe вешает CPU (процессор)
По умолчанию unbound работает ака "module-config: "validator iterator"" и при запросе доменного имени пытается выстроить из имеющихся в списке "Root Servers" так называемую цепочку доверия "chain of trust" для запрошенного домена, в ходе построения которой unbound.exe может отнимать много времени центрального процессора, а если в service.conf мы установили "val-log-level: 2" повышенный уровень для сообщений, то в сисьлоге мы увидим: [unbound:0] info: validation failure <s20.rimg.info. A IN>: No DNSKEY record for key info. while building chain of trust
Тобишь если заметили, что unbound.exe вешает CPU, то значит в данный момент происходит "while building chain of trust" - смотрим на время в которое unbound.exe подвесил CPU, потом заглядываем в сисьлог. После облома "while building chain of trust" запрос будет закэширован и проц. больше вешаться не должен.
Это может происходить из-за того, что фаервол блокирует исходящие запросы по протоколу TCP на 53 порт (проверьте логи фаервола!) и если нет возможности разрешить TCP на 53 порт, то в service.conf нужно добавить "do-tcp: no" - т.е. отключить TCP для unbound.
Проблему с большой загрузкой ещё можно урегулировать директивами "outgoing-range: .." (количество портов выделяемых на поток) и "target-fetch-policy: ..." (глубина запросов).
unbound.exe не отвечает на запросы
Может быть так, что unbound.exe перестал отвечать на запросы, а в ответ на whois в консоль можем получить "Затребованное имя допустимо и оно найдено в базе данных, но для имени отсутствуют связанные с ним данные, которые были разрешены для него.".
unbound.exe работает нормально, слушает 53 порт, но на запросы не отвечает. Перезапуск сервиса не помогает, перезагрузка ОС тоже не помогает и мы продолжаем получать "Затребованное имя допустимо и оно найдено в базе данных, но для имени отсутствуют связанные с ним данные, которые были разрешены для него.".
Причиной сего бага может быть глюк брандмауэра или какого-то Интернет-секюрити (если установлен). В моём случае смена режимов брандмауэра с "Пользовательский" на "Неактивен" и обратно решило проблему.
Блокируем скрытые "сервисы" в \etc\hosts
Теперь не помешает заглушить так называемые вредные скрытые сервисы *.onion и *.i2p (i2p - Invisible Internet Project) добавив в c:\WINDOWS\system32\drivers\etc\hosts такие строки:
127.0.0.2 idnxcnkne4qt76tg.onion 127.0.0.2 j6im4v42ur6dpic3.onion 127.0.0.2 p3igkncehackjtib.onion 127.0.0.2 vwp5zrdfwmw4avcq.onion 127.0.0.2 p4fsi4ockecnea7l.onion 127.0.0.2 37lnq2veifl4kar7.onion 127.0.0.2 3g2upl4pq6kufc4m.onion 127.0.0.3 i2p2.i2p 127.0.0.3 i2p-projekt.i2p 127.0.0.3 plugins.i2p 127.0.0.3 echelon.i2p 127.0.0.3 postman.i2p 127.0.0.3 freshcoffee.i2p 127.0.0.3 mail.i2p 127.0.0.3 zzz.i2p 127.0.0.3 killyourtv.i2p 127.0.0.3 eepsites.i2p 127.0.0.3 i2pbote.i2p 127.0.0.3 false.i2p 127.0.0.3 forum.i2p 127.0.0.3 pastethis.i2p 127.0.0.3 ugha.i2p 127.0.0.3 planet.i2p 127.0.0.3 stats.i2p 127.0.0.3 inr.i2p
Итоги
Unbound DNS Resolver хорошее решение для обеспечения целостности ДНС запросов и на мой взгляд является лучшим из существующих фрии DNS Resolver. На Unbound я наткнулся, когда искал пути перенаправления ДНС запросов через прокси, а соксификаторы и прочие геморройные утилы меня как-то не особо привлекали.
В браузерах Mozilla Firefox можно использовать родное решение для использования ДНС через socks прокси, в настройках about:config нужно установить network.proxy.socks_remote_dns = true. В браузере Google Chrome якобы есть предположение (маловероятное), что для этого же эффекта нужно отключить DNS prefetching (упреждающее чтение DNS) в расширенных настройках Google Chrome или добавить флаг "-dns-prefetch-disable" при запуске из командной строки.
Сслки по теме DNSSEC
- doc/DnsResolver – Tor Bug Tracker & Wiki
- Unbound: Howto enable DNSSEC
- DNSSEC — Википедия
- Features/DNSSEC - FedoraProject
- I2P — Википедия
- I2P Anonymous Network - I2P
- .onion — Википедия