Всем привет.
Появилась задачка поднять DNS на BIND с возможностью фильтрации доменов с плохим рейтингом(Порно итд) и дальнейшим его резольвом на нужный IP где будет поднят сервер с апачем и нужным ответом.
Что то на подобие OpenDNS.
Поднял CentOs7: для теста
VM 2CPU/2GB RAM/50GBHDD
uname -a Linux dnshole.getinf.com 3.10.0-327.13.1.el7.x86_64
Установил bind + bind-utils, о секьюрности на этапе теста не думаю,
поэтому chroot,seelinux,firewalld и другие вещи выключены.
Настройки named.conf минимальны для теста.
acl "trusted" {any;};
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { trusted; };
recursion yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/named/named.conf.local";
include "/etc/named/blackhole/spywaredomains.zones";
Файл spywaredomains.zones содержит базу доменов 2000+
в таком формате:
zone "cutheatergroup.cn" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "dionneg.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "delzzerro.cn" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "lupytehoq.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "vipprojects.cn" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "douate.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "hhj3.cn" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "hryspap.cn" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "iebar.t2t2.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
zone "allindiapoint.com" {type master; file "/etc/namedb/blockeddomain.hosts";};
И так далее 2000+
Всё это дело идет сюда «/etc/namedb/blockeddomain.hosts
$TTL 86400 ; one day
@ IN SOA dnshole.getinf.com. dnshole.getinf.com. (
7
28800 ; refresh 8 hours
7200 ; retry 2 hours
864000 ; expire 10 days
86400 ) ; min ttl 1 day
NS dnshole.getinf.com.
A 7.7.7.7
Делаю systemctl start named
Вылетает эрор
journalctl -xe
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone neobake.com/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone net4um.com/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone newswf.com/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone nextlevelfinance.com/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone nextlevellacrosse.com/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone ninjafy.com/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone nje1.cn/IN: loaded serial 7
Apr 03 01:43:03 dnshole.getinf.com bash[2712]: zone now.ge/IN: loaded serial 7
Apr 03 01:43:04 dnshole.getinf.com systemd[1]: named.service: control process exited, code=exited status=1
Apr 03 01:43:04 dnshole.getinf.com systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
-- Subject: Unit named.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit named.service has failed.
--
-- The result is failed.
Apr 03 01:43:04 dnshole.getinf.com systemd[1]: Unit named.service entered failed state.
Apr 03 01:43:04 dnshole.getinf.com systemd[1]: named.service failed.
Но если в файле spywaredomains.zones уменьшить количество зон до 50 к примеру то все будет ОК:
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icloud-itnues-id.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone zakon.kz/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone localhost/IN: loaded serial 0
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icloud-i4.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icluod-appie.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone iebar.t2t2.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone cutheatergroup.cn/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icloud-lost-findmyiphone-manage-accounts.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icloud-no3059.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icloud-tmin.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: zone icloudpassport.com/IN: loaded serial 7
Apr 03 01:48:58 dnshole.getinf.com named[2738]: all zones loaded
Apr 03 01:48:58 dnshole.getinf.com named[2738]: running
Apr 03 01:48:58 dnshole.getinf.com polkitd[2270]: Unregistered Authentication Agent for unix-process:2726:480400 (system bus name :1.32, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from
Apr 03 01:48:58 dnshole.getinf.com systemd[1]: Started Berkeley Internet Name Domain (DNS).
-- Subject: Unit named.service has finished start-up
-- Defined-By: systemd
********************************************************************************
C:\Users\sdddd>nslookup
╤хЁтхЁ яю єьюыўрэш■: google-public-dns-a.google.com
Address: 8.8.8.8
> server 192.168.0.100
╤хЁтхЁ яю єьюыўрэш■: [192.168.0.100]
Address: 192.168.0.100
> icloud-tmin.com
╤хЁтхЁ: [192.168.0.100]
Address: 192.168.0.100
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
╚ь : icloud-tmin.com
Address: 7.7.7.7
> icloud-tmin.com
╤хЁтхЁ: [192.168.0.100]
Address: 192.168.0.100
╚ь : icloud-tmin.com
Address: 7.7.7.7
>
Но как видно по таймаутам DNS всё равно работает медленно хоть и резольвит как задумано.
Были подозрения на кеш но игра с параметром кеша в named.conf ничего не дала.
За основу брал данную статью
Список доменов сливал ТУТ
Буду очень благодарен за ваши советы и помощь.