Strona 1 z 1

[+] Bind9 i zapytania tylko z intranetu

: 31 stycznia 2008, 14:05
autor: ShinnRa
Sprawa jest nieco pogmatwana i postaram się ja wyjaśnić poprawnie:
Mam sobie swój serwerek, który jednocześnie jest bramą do internetu i mam tam zainstalowanego bind9 i teraz chciałbym aby:
* gdy żądanie dns przyjdzie z sieci lokalnej (192.168.0.0/24) to były widoczne wszystkie wpisy np: pliki.domena.pl, local.domena.pl, poczta.domena.pl, ftp.domena.pl, itp...
* gdy żądanie dns przyjdzie z sieci zewnętrznej (z internetu) to były widoczne tylko niektóre wpisy, np: pliki.domena.pl, poczta.domena.pl, itp...

i teraz moje pytanie czy da się to tak zrobić ? Nie chcę sie bawić w ustawianie dwóch serwerów bind : jeden nasłuchujący na interfejsie eth0 (internet) drugi na eth1 (intranet). Ja chciałbym wiedzieć czy da sie to zrobić za pomocą jednego...

: 31 stycznia 2008, 15:39
autor: bolwerk
Wydaje mi się, że najprościej zrobisz to ustawiającej dwie strefy z odpowiednimi wpisami warunkującymi dostęp.
Oczywiście w ogólnodostępnym wpisz tylko to co ma być dostępne z zewnątrz natomiast w lokalu tylko uzupełnij wpisy, które powinny być widoczne dla sieci.

Czyli w telegraficznym skrócie:
vim named.conf.options

Kod: Zaznacz cały

acl "moje_sieci" {
	192.168.20.0/24;
	127.0.0.1;
};
vim named.conf.local

Kod: Zaznacz cały

zone "local.twoja.domena" {
	type master;
	file "/etc/bind/db.local.twoja.domena";
	allow-query { moje_sieci; };
};

zone "0.168.192.IN-ADDR.ARPA" {
	type master;
	file "/etc/bind/db.199";
	allow-query { moje_sieci; };
};
vim db.local.twoja.domena
vim db.199

Przy tych dwóch ostatnich musisz oczywiście dokonać odpowiednich wpisów.

Pozdrawiam ...

: 31 stycznia 2008, 22:21
autor: ShinnRa
eee... albo ja coś źle zrozumiałem, albo nie tak wpisałem bo mnie to nie działa T_T

: 31 stycznia 2008, 23:39
autor: bolwerk
Przepraszam, bo przez pośpiech popełniłem dość poważny błąd, który zaraz naprawię.

Oczywiście nie możesz postawić na tej samej domenie dwóch plików strefy ale najprostszym i imho najlepszym rozwiązaniem jest tutaj odpowiednie zmodyfikowanie odpowiednich wpisów w serwerach do których chcesz ten dostęp przekierować.

Popatrz. Przykładowo tworzysz plik strefy gdzie

Kod: Zaznacz cały

$ORIGIN local.twoja.domena.
co oczywiście spowoduje, że na wszystkie zapytania z lokala będą otrzymywać odpowiedź costam.local.twoja.domena.pl. Tutaj jedyne co możesz zrobić to dodatkowo dać wpisy CNAME odnośnie przykładowo www, czy też ftp. Chociaż wydaje mi się, że łatwiej dostęp do odpowiednich katalogów można zrobić poprzez przekierowanie w odpowiednich serwerach. Chociażby mod_rewrite w apachu, żeby przywrócił prawidłowy adres dla danego zapytania.

Przykładowo plik strefy

Kod: Zaznacz cały

      >> cat db.local.bolwerk.homelinux.com
$TTL 604800
$ORIGIN local.bolwerk.homelinux.com.
@	IN 	SOA	bolwerk.homelinux.com. root.bolwerk.homelinux.com. (
	1
	604800
	86400
	241920
	604800
)

	IN	NS	dns2.bolwerk.homelinux.com.

@	IN	A	89.174.22.250

@	IN	MX	10	mail
mail	IN	A	192.168.20.104	
dns	IN	A	89.174.22.250
ftp	IN	CNAME	ftp.kernel.org.	
A oto odpowiedź na zapytanie:

Kod: Zaznacz cały

   >> host -a local.bolwerk.homelinux.com
Trying "local.bolwerk.homelinux.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45543
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;local.bolwerk.homelinux.com.	IN	ANY

;; ANSWER SECTION:
local.bolwerk.homelinux.com. 604800 IN	SOA	bolwerk.homelinux.com. root.bolwerk.homelinux.com. 1 604800 86400 241920 604800
local.bolwerk.homelinux.com. 604800 IN	NS	dns2.bolwerk.homelinux.com.
local.bolwerk.homelinux.com. 604800 IN	A	89.174.22.250
local.bolwerk.homelinux.com. 604800 IN	MX	10 mail.local.bolwerk.homelinux.com.

;; ADDITIONAL SECTION:
mail.local.bolwerk.homelinux.com. 604800 IN A	192.168.20.104

Received 158 bytes from 127.0.0.1#53 in 1 ms
natomiast zapytanie o tego samego hosta z zewnątrz daje odpowiedź

Kod: Zaznacz cały

 local.bolwerk.homelinux.com ANY record query refused by host250.brzegnet.pl
A tutaj masz odpowiedź dla normalnego hosta z zewnątrz sieci

Kod: Zaznacz cały

 >> host -a bolwerk.homelinux.com
Trying "bolwerk.homelinux.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11889
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;bolwerk.homelinux.com.		IN	ANY

;; ANSWER SECTION:
bolwerk.homelinux.com.	86400	IN	SOA	dns.bolwerk.homelinux.com. bolwerk.homelinux.com. 2008013101 7200 3600 3600000 1209600
bolwerk.homelinux.com.	86400	IN	NS	dns.bolwerk.homelinux.com.
bolwerk.homelinux.com.	86400	IN	A	89.174.22.250

;; ADDITIONAL SECTION:
dns.bolwerk.homelinux.com. 86400 IN	A	89.174.22.250

Received 125 bytes from 127.0.0.1#53 in 0 ms
Ufff...
Chyba wszystko :)
Przepraszam za początkowe wprowadzenie w błąd ale mi to umknęło przez pośpiech :)

Pozdrawiam ...

No a ja przypadkowo dowiedziałem się, że muszę pogrzebać w systemie bo mam bajzel ;)
Acha. Dziękuję za pomoc Hagalowi oraz vorlogowi za pomoc przy wynikach z zewnątrz :)

: 01 lutego 2008, 20:59
autor: ShinnRa
bolwerk, nie oto mi chodziło ale muszę Ci podziękować bo naprowadziłeś mnie na trop z tym acl... Po kilkudziesięciu godzinach googlowania trafiłem na odpowiedź (jakaś lista dyskusyjna chyba coś o *BSD) by użyć widoków (views - dostępne w bind9) w pliku konfiguracyjnym bind'a. Jak się sprawdzi to zapodam opis.

: 01 lutego 2008, 22:47
autor: bolwerk
Nie ma za co :)

Jak coś to napisz a chętnie przeczytam bo jeszcze nie przebiłem się przez całość dokumentacji do binda z uwagi na pewne dodatkowe zlecenie :/

Pozdrawiam ...

EDIT

Już doszedłem co i jak i w sumie nawet bardzo ładnie to działa :)

Poczytaj tutaj http://dfwlpiki.dfwlp.org/index.php/Bin ... _DNS_Zones bardzo przystępnie wyjaśnione i sprawdziłem na swoim bindzie :)
Działa bardzo ładnie :)

Jedna uwaga !
Lokalny wpis musi być przed zewnętrznym inaczej w pierwszej kolejności dns będzie odpowiadał wpisem zewnętrznym a przecież nie o to chodzi :)

Pozdrawiam ...

Acha. Jak coś to pisz :)

: 02 lutego 2008, 01:04
autor: ShinnRa
ooo faktycznie w bardzo ciekawy sposób wyjaśnione, ale trochę roboty z tym jest. Ja to zrobiłem tak:

moja definicja stref wygląda tak:

Kod: Zaznacz cały

acl lokalne {
        127.0.0.0/8;
        192.168.0.0/24;
};

acl zapasowe {
        194.145.96.21;
        193.111.27.194;
};

view "internal" {
        match-clients { lokalne; };
        recursion yes;
        zone "ayanami.eu" {
                type master;
                file "/etc/bind/zones/db.ayanami.eu_INTERNAL";
                allow-transfer { lokalne; };
                allow-query { lokalne; };
                notify yes;
        };
};

view "external" {
        match-clients { any; };
        recursion no;
        zone "ayanami.eu" {
                type master;
                file "/etc/bind/zones/db.ayanami.eu_EXTERNAL";
                allow-transfer { any; };
                allow-query { any; };
                notify yes;
        };
        zone "97.144.83.IN-ADDR.ARPA" {
                type master;
                file "/etc/bin/zones/db.ayanami.eu_in-addr.arpa_EXTERNAL";
        };

};
db.ayanami.eu_EXTERNAL to normalny plik strefy a db.ayanami.eu_INTERNAL wygląda tak:

Kod: Zaznacz cały

;; db.ayanami.eu_INTERNAL
;;
;;
;; dołączamy definicje z pliku db.ayanami.eu_EXTERNAL
;;
$include "/etc/bind/zones/db.ayanami.eu_EXTERNAL";

;;
;; Wpisy lokalne
;;
@               IN      A               192.168.0.130   ;; ayanami.eu
local           IN      A               192.168.0.130   ;; local.ayanami.eu
test            IN      A               192.168.0.130   ;; test.ayanami.eu
area51          IN      A               192.168.0.130   ;; area51.ayanami.eu
i wszelkie nowe wpisy lokalne dodaje do INTERNAl i działa suuper tak jak chciałem. Pozostaje jeszcze tylko kosmetyka (czyli logowanie itp... ale to później)