Notice: query (INSERT INTO lemat_stats_browser (day,browser,ilosc,internal) VALUES ('2024-04-25','Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)',1,'2')) failed at /home/lemat/lemat.priv.pl/stats.php:151: Array ( [0] => 22001 [1] => 1406 [2] => Data too long for column 'browser' at row 1 ) in /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php:15) in /home/lemat/lemat.priv.pl/stats.php on line 174
Konfiguracja Binda - Lemat, strona prywatna
Lemat, strona prywatna

Konfiguracja Binda

Przed chwilą spotkałem się z sytuacją, kiedy to właściciel serwera DNS skarżył się na ogromną ilość logów generowaną w krótkim okresie czasu, co doprowadza do niestabilnego działania Binda. Moim podejrzeniem jest, że jego serwer jest używany jako cache dns dla przypadkowych klientów. Poniżej postaram się przedstawić konfigurację serwera DNS (bind 9) obsługującego zarówno domeny (lemat.priv.pl) jak i cache dla sieci lokalnej (za NATem).

Pierwsza rzecz jaką robimy to tworzymy dwa widoki w named.conf - sieć lokalna "internal" i cała reszta "external":

view "internal" {
 match-clients { 192.168.0.0/24; 127.0.0.0/8; };
 allow-query { 192.168.0.0/24; 127.0.0.0/8; };
 allow-transfer { none; };
 allow-notify { none; };
 allow-recursion { 192.168.0.0/24; 127.0.0.0/8; };
 recursion yes;
 
zone "." {
 type hint;
 file "named.ca";
 };
 
zone "0.0.127.in-addr.arpa" {
 type master;
 file "named.local";
 };
 
zone "0.168.192.in-addr.arpa" {
 type master;
 file "named.192.168.0";
 };
 
zone "lemat.priv.pl" {
 notify no;
 type master;
 file "intern.lemat.priv.pl";
 };
};

view "external" {
 match-clients { any; };
 recursion no;
 allow-query { none; };
 allow-transfer { key "ns1-ns3"; };
 allow-notify { key "ns1-ns3"; };
 
zone "lemat.priv.pl" {
 type master;
 notify yes;
 file "extern.lemat.priv.pl";
 allow-query { any; };
};
};

Czemu to robimy - chodzi o to, aby sieć wewnętrzna - tu na przykładzie 192.168.0.0/24 oraz sam serwer 127.0.0.1:

Ważna jest kolejność, najpierw "internal", potem "external" - bo zakres IP w opcji match-clients dla internal jest podzbiorem tej samej opcji w external. Można oczywiście zamienić miejscami i w external wykluczyć (match-clients { !192.168.0.0/24; any; };) sieć wewnętrzną.

A teraz kilka słów wytłumaczenia:

Strefy w danych widokach - jak widać w internal jest ich więcej, przede wszystkim jest tam strefa typu hint ".", co pozwoli klientowi znaleźć główne serwery DNS jeżeli nasz nie będzie mu wystarczał. Następnie są tam domeny odwrotne dla sieci lokalnych i localhosta - to nie powinno być widoczne z seci zewnętrznych prawda? Na końcu jest strefa domeny lemat.priv.pl - zauważcie, że wprawdzie w external też jest ta domena, ale różni się ona nazwa pliku strefy.

Dla internal:

$TTL 86400 ; 1 day
@ IN SOA ns1.lemat.priv.pl. root.lemat.priv.pl. (
  2007010500 ; Serial
  86400 ; Refresh 24h
  3600 ; Retry 1h
  604800 ; Expire 1 week
  86400 ) ; Minimum 1 day
  
  IN NS ns1
  IN A 192.168.0.1
  IN MX 10 mail
  IN TXT "v=spf1 mx -all"
  
ns1 IN A 192.168.0.1
ns2 IN A 83.17.15.82
athlon IN A 192.168.0.1
www CNAME @
mail IN A 192.168.0.1
arch IN A 192.168.0.2
ubuntu IN A 192.168.0.12

Dla external:

$TTL 86400 ; 1 day
@ 86400 IN SOA ns1.lemat.priv.pl. root.lemat.priv.pl. (
 2007011600 ; Serial
 86400 ; Refresh 12h
 900 ; Retry 15min
 604800 ; Expire 1 week
 86400 ) ; Minimum 1 day
 
 604800 IN NS ns1
 604800 IN NS ns2
 IN A 83.19.156.142
 7200 IN MX 10 mail
 604800 IN TXT "v=spf1 mx -all"
 
* 604800 IN TXT "v=spf1 -all"
ns1 604800 IN A 83.19.156.142
ns2 604800 IN A 83.17.15.82
mail 7200 IN A 83.19.156.142
www CNAME @

Jak widać plik dla sieci wewnętrznej zawiera podobne wpisy jak przy external, ale jest ich więcej - dochodzą hosty w sieci lokalnej. Oraz ich rekordy A są lokalne.


Data utworzenia : 2007-01-28, data aktualizacji :2009-01-17

Skomentuj ten tekst

Komentarze:

PiotrW
2014-03-06 18:32:19
Bind
Witaj,
Mam problem, o którym wspominasz. Mimo konfiguracji szczelnej tak mi się wydaje. Serwer generuje dużą ilość logów informujących o niezrealizowanym zapytaniu co spowalnia działanie bind'a.
Skorzystałem z Twojego opisu. Zrobiłem widoki.
Nic się nie zmieniło. Może coś podpowiesz ?

Pozdrawiam

PiotrW
Odpowiedź Lemata:
iptables -I INPUT -p udp --dport 53 -m length --length 45:45 -j DROP
lamer_do_ntej
2008-08-28 23:42:49
Konfiguracja Binda
Ja przepraszac. Juz wiedziec. Opis Twoj dotyczy sytuacji jak sa dwie karty sieciowe: siec zewnetrzna i wewnetrzna, a jak jest tylko jeden, to też, ale... i tu jest wlasnie to, co zle zapamietalem, a potem jeszcze gorzej dospiewalem. Jak jest jeden to tworzymy alias do karty sieciowej i juz mamy dwa, a potem jest jak w artykule. Do firewalla zaraz dojde, tylko zakoncze temat DNSa (jak widac juz blisko)i apache'a (to moze troche dalej). Dzieki za odpowiedz. Pozdrawiam
lamer_do_ntej
2008-08-28 22:38:14
Konfiguracja Binda
Po pierwsze gratuluje strony. A teraz do rzeczy. Fajnie, ze napisales ten tekst. Wlasnie tego szukalem. Super sprawa jak jest serwer poczty w DMZ i DNS musi odpowiednio odpowiadac na pytania w zaleznosci od tego skad pochodza. Szukam tez innego tematu, a widzac Twoja wiedze i poziom odwiedzajacych zapytam: czy ktos wie o zabezpieczeniu DNSa w ten sposob, by ten przekierowywal 'brzydkie' zapytania na interface sieciowy, za ktorym nic nie ma? Przepraszam, ze tak nieprecyzyjnie pytam, ale raz to uslyszalem i nie zapamietalem o co dokladnie chodzi. Moze za to wiecie o co mi chodzi?
Odpowiedź Lemata:
hmm, nie wiem o co chodzi i co rozumiesz pod pojęciem "brzydkie zapytania". Jeżeli chodzi o "przekierowywanie" to kojarzy mi się iptables, a jak "brzydkie pakiety" to może o iptables -j TARPIT ?
kordi
2007-12-12 21:23:48
bind internal / external
dzieki za ten skromny opis - przydal sie ;-)
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞