|
[+] Bind9 i zapytania tylko z intranetu
ShinnRa - 31-01-2008 14:05
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...
bolwerk - 31-01-2008 15:39
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
acl "moje_sieci" { 192.168.20.0/24; 127.0.0.1; };
vim named.conf.local 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 ...
ShinnRa - 31-01-2008 22:21
eee... albo ja coś źle zrozumiałem, albo nie tak wpisałem bo mnie to nie działa T_T
bolwerk - 31-01-2008 23:39
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
$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
>> 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:
>> 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ź
local.bolwerk.homelinux.com ANY record query refused by host250.brzegnet.pl
A tutaj masz odpowiedź dla normalnego hosta z zewnątrz sieci
>> 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 :)
ShinnRa - 01-02-2008 20:59
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.
bolwerk - 01-02-2008 22:47
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/..._for_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 :)
ShinnRa - 02-02-2008 01:04
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: 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: ;; 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)
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|