Split-view DNS

Deja configurez al 3-lea split-view DNS folosind BIND în ultimile 2 săptămâni. Așa c-o iau ca pe un semn că ar trebui să explic și altora care-i șmecheria.

Întâi trebuie explicat motivul pentru care am vrea să avem un split-view dns. Păi presupunem că avem un server DNS local care ne rezolvă un domeniu (să zicem example.com). Stațiile din rețeaua locală sunt cu adrese IP private (192.168.x.x, 10.x.x.x, 172.[16-31].x.x ). În rețeaua locală mai avem și un server de mail (tot cu IP privat dar scos în extern folosind port forwarding). Să zicem că nu avem chef să schimbam numele/ip-ul mail serverului în clientul de mail de fiecare data cand ajungem în reteaua locala cu laptopul. Și-atunci cum facem ?

Ar fi util un server dns care să servească IP-urilor locale un anumit răspuns pentru o cerere. Și celor din extern alt răspuns. Astfel, mail.example.com poate să fie 192.168.1.2 pentru stațiile din rețeaua locală și 88.78.68.58 pentru cererile venite din exterior. (este doar un exemplu, e util și în alte cazuri).

Cum facem ? Toată șmecheria se face în named.conf. Dacă folosiți deja acl-uri în DNS atunci poate că aveți deja adăugată o intrare pentru rețeaua locală. Dacă nu, adăugați un acl care să arate similar cu :

acl “local_lan” {
192.168.1.0/24;
# Clasa de IP-uri din LAN local
127.0.0.1;
# loopback
};

După care, atunci când definiți fișierele de zonă, folosiți “view” :

view "internal" {
        match-clients { local_lan; };
#doar pentru intrările din "local_lan" definit sus
        recursion yes;
# permite cereri recursive
..........................................
#urmează fișierele cu zonele

Fișierele cu zonele definite aici vor conține adresele IP interne ale serverelor care oferă diferitele servicii. La sfârșit închidem “view” cu }; și trecem la partea pentru extern.

view "external" {

        match-clients { !localnets; any; };
#localnets este cuvânt cheie. ! e folosit pentru negație
        recursion no;
# dezactivează cererile recursive (util de setat așa)
...........................................
#urmează fișierele cu zonele

Fișierele cu zonele definite aici conțin adresa(adresele) externe.
Cam asta-i toată treaba. Faceți câte 2 fișiere pentru fiecare zonă pe care o rezolvă serverul DNS (unul pentru intern și unul pentru extern) și rulați serviciul. Ar trebui să funcționeze perfect.
Dacă nu, PEBKAC.

6 Comments Split-view DNS

  1. viorel

    Hello,

    i did those view settings and the acl but when I restart named I have this error:
    rndc: ‘reload’ failed: unexpected token

    can u please tell what this mean ? syntax error ?

    viorel

    Reply
  2. bogd

    Daca tot ai creat ACL-ul local_lan, e mai bine sa il folosesti tot pe el si la external view. Pentru ca altfel risti sa ajungi sa ai clienti care nu fac match pe nici un view (cazul in care ai mai multe interfete de retea – toate subnet-urile respective vor face match pe acel !localnets).

    Adica e preferabil asa:

    view “external” {

    match-clients { !local_lan; any; };

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *