BIND: greška "bad name (check-names)"
DNS sustav je prilično osjetljiv na razne greške, a to obično rezultira prestankom rada jednog ili više servisa. Kada tome dodamo manje iskusnog sistem-inženjera, situacija vrlo brzo može postati jako loša. Jedna od najčešćih problema je nemogućnost isporuke elektroničke pošte, jer udaljeni poslužitelj zahtijeva da vaš mail poslužitelj ima ispravan reverzni zapis.
Problem je lako rješiv: dodajte reverznu zonu, ili samo nedostajući zapis ukoliko zona već postoji. No što ukoliko se počnu pojavljivati greške poput ove, obično u datoteci /var/log/daemon.log:
named: dns_rdata_fromtext: /etc/bind/hosts.rev:2: near 'posluzitelj': bad name
named: zone 0/26.z.y.x.in-addr.arpa/IN: loading from master file /etc/bind/host
failed: bad name (check-names)
Očigledno, radi se o nekakvoj greški imenovanja, što sprječava da se zona učita i time bilo koji zapis u zoni nije uvažen. Zonska datoteka na prvi pogled izgleda prilično uobičajeno:
$TTL 86400
@ SOA posluzitelj hostmaster.posluzitelj (
2011051001 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400 ) ; Minimum
NS posluzitelj.domena.hr.
NS sekundarni.dns.server.hr.
3 PTR posluzitelj.domena.hr.
U logu se može vidjeti da je greška u drugom retku datoteke (2:), dakle u samom SOA zapisu, no on izgleda prilično uobičajeno. Štoviše, identičan zapis već imate u forward zoni, a tu nemate nikakvih problema. No, zbog skraćenog oblika pisanja unutar zonske datoteke (posluzitelj umjesto posluzitelj.domena.hr.) događa se transformacija zapisa na sljedeći način (pretpostavimo da je vaša reverzna zona 1.53.161.in-addr.arpa):
1.53.161.in-addr.arpa SOA posluzitelj.1.53.161.in-addr.arpa root.posluzitelj.1.53.161.in-addr.arpa (
Ne izgleda baš lijepo, zar ne? Ali, čak i ovakav neispravan zapis neće prouzrokovati grešku koju ovdje opisujemo. Potreban je još jedan element: morate imati *parcijalnu* reverznu zonu. Situacija onda izgleda ovako:
0/26.1.53.161.in-addr.arpa SOA posluzitelj.0/26.1.53.161.in-addr.arpa
hostmaster.posluzitelj.0/26.1.53.161.in-addr.arpa (
Sada u zonskoj datoteci imamo još jedan karakter, a nevolja je u tome što taj znak nije dopušten za uporabu za nazive hostova unutar DNS sustava. Za DNS u principu smijete rabiti samo alfanumeričke znakove (a-z, 0-9) i crticu (-). Sve ostalo će izazvati grešku, koju možda nećete odmah ni primjetiti.
Iako je kraći način zapisa pregledniji, može dovesti do neželjenih situacija, ili ovakvih ozbiljnih smetnji. Da biste izbjegli ovakve situacije, u zonskim datotekama, barem u SOA recordu, stavite puni oblik:
@ SOA posluzitelj.domena.hr. hostmaster.posluzitelj.domena.hr. (
Ne zaboravite točku na kraju (hr.) inače ćete dobiti gotovo pa "monstruozan" oblik zapisa:
hostmaster.posluzitelj.domena.hr.0/26.1.53.161.in-addr.arpa
Točka označava kraj zapisa, odnosno "root zonu", i nakon nje DNS neće "lijepiti" nikakve nazive. Dakle, upotrebljavajte dulje nazive i ne zaboravite točku na kraju, a možda je najbolje cijelu reverznu zonu (ili barem dio s PC-ima korisnika) napraviti pomoću direktive $GENERATE, koju smo opisali u članku http://sistemac.carnet.hr/node/848.
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version