Úspěšně jsem používal malý (20 000 záznamů) soubor zóny s bind9
server, ale dnes můj poskytovatel dat odeslal aktualizaci, která způsobila, že soubor zóny se zvětšil na 300 000+ záznamů (30 Mb+).
Problém je v tom, že server se nespustí s tímto souborem zóny. named-checkconf
nehlásí žádné chyby. Nejsou k dispozici žádné zprávy protokolu (nebo jsem je nemohl správně zaznamenat).
Chtěl bych vědět, jestli bind9
je schopen zpracovávat velké konfigurační soubory a pokud ano, jak to mohu opravit. Pokud ne, rád bych věděl, zda existují nějaká řešení tohoto problému. Možná je možné ukládat záznamy do databáze?
Soubor zóny, který se pokouším použít, lze stáhnout zde.
Aktualizace:
service bind9 status
ukázal některé informace, které mohou být relevantní:
adjusted limit on open files from 4096 to 1048576
found 1 CPU, using 1 worker thread
using 1 UDP listener per interface
using up to 4096 sockets
loading configuration from '/etc/bind/named.conf'
Nejsem si úplně jistý, jak interpretovat nebo používat tyto informace... Máte nějaké nápady?
Také jsem nebyl schopen najít, kde bind9
logy jsou umístěny:/var/log/
nemá žádné bind9
záznamy. Může mi někdo říct, kde se na Debianu Jessie nacházejí?
Přijatá odpověď:
Viděl jsem váš soubor zóny:zdá se, že je to seznam více než 350 000 domén, kde je definován jako hlavní server místní BIND. Domény mají následující formát:
zone "xxxx.com" { type master; notify no; file "null.zone.file"; };
Pokud jde o požadavky na paměť, řekl bych jako orientační údaj, že byste k tomu mohli potřebovat přibližně 40 MB až 80 MB volné paměti RAM, protože tabulky domén jsou načteny v paměti. (i když bych se cítil pohodlněji s alespoň 200 MB)
Pokud server není vážně omezen v RAM, zdá se to trochu nepravděpodobné, ale může se to stát.
Také jsem si všiml, že v názvech několika domén jsou podtržítka („_“). Podtržítka v DNS RR poruší několik RFC (RFC 952 a RFC 1123) a do sekce BIND options musíte přidat direktivu:
check-names master ignore;
Co se týče formátu a metody používané pro blacklisting domén. Od verze 9.8 podporuje BIND to, co je známé jako zóny zásad odezvy (RPZ), které byly vytvořeny speciálně pro domény na černé listině.
Několik (komerčních) poskytovatelů černé listiny se v současnosti řídí tímto formátem. (Sám používám RPZ v práci i doma).
Používání RPZ by mělo dávat větší smysl a také znamená lehčí zátěž, a proto bych vám v případě, že službu platíte, doporučoval kontaktovat vašeho dodavatele, abyste věděli, jak ji používat. Formát RPZ také do určité míry podporuje zástupné znaky, což by znamenalo mnohem menší soubor černé listiny.
Alternativou je také zpracovat soubor pomocí skriptu, který jej změní na formát RPZ.
Související:Co způsobuje odesílání různých signálů?Nechám zde relevantní odkazy o RPZ a oficiálních poskytovatelích RPZ:
https://dnsrpz.info
a návod, jak nakonfigurovat RPZ:
http://www.zytrax.com/books/dns/ch9/rpz.html
Jak jste si možná všimli, s aktuální konfigurací budete mít také spoustu otevřených souborů; proto doporučuji znovu použít RPZ.
Pro práci s více otevřenými soubory na velkých e-mailových serverech, serverech DNS nebo HTTP je často nutné zvýšit limity.
Situace není tak špatná jako u starších jader, ale přesto doporučuji zvýšit limity.
Upravte /etc/sysctl.conf
a upravit/přidat direktivu fs.file-max
pro globální limit otevřených souborů:
fs.file-max=500000
Chcete-li použít nový limit souborů bez restartování, musíte spustit:
sudo sysctl -p
A pro limity souborů na proces upravte, /etc/security/limits.conf
:
* - nofile 400000
Chcete-li použít omezení souborů na proces, buď se odhlaste a přihlaste se, nebo spusťte:
sudo ulimit -n 400000
Po zvýšení těchto dvou limitů musíte restartovat BIND:
sudo service bind9 restart
Chcete-li převést soubor do formátu RPZ, spusťte:
cat bind | tr -d " | awk ' { print $2" CNAME ." } ' > /etc/bind/rpz.db
Skript převede položky do následujícího formátu:
zeus.developershed.com CNAME .
zeusclicks.com CNAME .
zintext.com CNAME .
Přidejte do části možností s názvem:
response-policy { zone "rpz"; };
Vytvořte prohlášení zóny RPZ:
zone "rpz" {
type master;
file "/etc/bind/rpz.db";
};
Přidat na začátek /etc/bind/rpz.db
soubor:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS your_dns_fqdn.
Zrušte konfiguraci svého souboru DNS a restartujte server BIND. Soubor RPZ lze evidentně optimalizovat pomocí zástupných znaků a výrazně zkrátit, ale i bez této optimalizace nyní nebudete potřebovat tolik otevřených souborů.
Pokud jde o prohlížení protokolů BIND/DNS, jsou spolu se systémovými protokoly v /var/log/syslog
se značkou named
. Můžete použít příkaz:
sudo grep named /var/log/syslog