Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam u siebie sieć lokalną, która ma domenę mhouse.lh . Na routerze siedzi sobie dnsmasq (DNS+DHCP). Na swoim kompie mam pobieraną konfigurację via DHCP za wyjątkiem serwerów DNS. Te serwery mam konfigurowane statycznie i w sumie plik resolv.conf wygląda tak:
nameserver 127.0.0.1 search mhouse.lh
Ten 127.0.0.1 to adres dnsmasq, który mam zainstalowany lokalnie na kompie i robi on za zwykły cache zapytań DNS. Mam tam określone min. takie wpisy:
server=127.0.2.1#5353 server=/pool.ntp.org/208.67.222.222 server=/mhouse.lh/192.168.1.1#53
Zatem wszystkie zapytania DNS na moim kompie trafiają do dnsmasq, a ten z kolei rozdziela je na poszczególne serwery DNS. Ten 127.0.2.1 to dnscrypt-proxy, który szyfruje zapytania i śle je dalej w świat. Pozostałe dwa wpisy odpowiadają za zapytania o poszczególne domeny. I tak pool.ntp.org (serwery czasu) leci bezpośrednio do 208.67.222.222, a zapytania o moją lokalną domenę są przesyłane do dnsmasq na routerze. W takim przypadku jeśli wpiszę nazwę routera (the-mountain), to nie muszę określać samej domeny, co wygląda mniej więcej tak:
# ping the-mountain PING the-mountain.mhouse.lh (192.168.1.1) 56(84) bytes of data. 64 bytes from gateway (192.168.1.1): icmp_seq=1 ttl=64 time=4.29 ms ^C --- the-mountain.mhouse.lh ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 4.298/4.298/4.298/0.000 ms
Jak widać wpisałem the-mountain , a ping poszedł do the-mountain.mhouse.lh .
Do tej pory wszystko działa zgodnie z planem. Niemniej jednak, gdy odpalę torrenta, to do tego routera w sieci dociera cała masa zapytań DNS, które mają ustawioną domenę mhouse.lh . I to jest o tyle ciekawe, bo przecie nie powinno się tak dziać. Statystyki wyglądają mniej więcej tak:
dnsmasq[1598]: time 1452171721 dnsmasq[1598]: cache size 10000, 0/931 cache insertions re-used unexpired cache entries. dnsmasq[1598]: queries forwarded 1102, queries answered locally 1379 dnsmasq[1598]: queries for authoritative zones 0 dnsmasq[1598]: server 192.168.1.1#53: queries sent 283, retried or failed 0 dnsmasq[1598]: server 208.67.222.222#53: queries sent 2, retried or failed 0 dnsmasq[1598]: server 127.0.2.1#5353: queries sent 817, retried or failed 2
Analizując zapytania DNS, mogę zobaczyć, że:
IP 192.168.1.150.61575 > 192.168.1.1.53: 52322+ A? tracker.istole.it.mhouse.lh. (45) IP 192.168.1.150.48486 > 192.168.1.1.53: 26976+ AAAA? tracker.istole.it.mhouse.lh. (45)
Zatem do adresu trackera (tracker.istole.it) została dodana moja lokalna domena (mhouse.lh). I tu się nasuwa pytanie WTF? xD
Póki co, udało mi się ten problem wyeliminować przez usunięcie "search mhouse.lh" z pliku /etc/resolv.conf . Tylko jeśli nie będę miał tej linijki, to mi nie będą działały zapytania pod kątem samego hostname.
Dodam, że nie wszystkie trackery mają doczepianą lokalną domenę, np. tracker.openbittorrent.com już nie ma. Pinngując te dwie przykładowe domeny, okazuje się, że tracker.istole.it nie odpowiada, natomiast tracker.openbittorrent.com działa.
Sprawdziłem przykładową domenę (dupaa.com), ona również nie odpowiada i w logu mam coś takiego: dupa.com.mhouse.lh
15:45:32.035381 IP 127.0.0.1.18520 > 127.0.2.1.5353: 1536+ A (QM)? dupaa.com. (27) 15:45:37.040620 IP 127.0.0.1.18520 > 127.0.2.1.5353: 1536+ A (QM)? dupaa.com. (27) 15:45:38.045687 IP 127.0.2.1.5353 > 127.0.0.1.18520: 1536 ServFail 0/0/1 (38) 15:45:38.046118 IP 192.168.1.150.6289 > 192.168.1.1.53: 57153+ A? dupaa.com.mhouse.lh. (37)
Zatem dupaa.com trafia do dnsmasq na lokalnej maszynie, jest podawana dnscrypt-proxy i ten zgłasza błąd. Czemu tutaj nie zakańcza się przetwarzanie tej domeny? Czemu za chwilę doczepiany jest do niej mhouse.lh mimo, że dupaa.com ma przecież domenę. xD Coś w konfiguracji lokalnego dnsmasq trzeba dopisać czy poprawić? Jak coś to tu jest mój plik konfiguracyjny dnsmasq: http://pastebin.com/r2p5eC3f
Ostatnio edytowany przez morfik (2016-01-07 16:04:27)
Offline
o ile pamiętam dnsmasq korzysta z /etc/hosts (lub innego pliku który mu podasz). czyli skasowanie search w resolv.conf i dopisanie lokalych adresów powinno pomóc...
Offline
[quote=morfik]No tak tylko, że jeśli mam powiedzmy 100 kompów w sieci, to dopisywanie każdego w /etc/hosts trochę się raczej mija z celem. xD[/quote]
Coś mi się zdaje, ze zaczynasz od dupy strony.
Jeśli np serwer DNS (DNSMASQ) odpowie dla XXX adresów zawsze adresem 192.168.19.112, na którym będzie sobie wisiał np Nginx, i przepisywał adresy [b]REQUEST_URL/REQUEST_URI[/b] na [b]REQUEST_URL.mhouse.lh/REQUEST_URI[/b] zwracając nagłówek 301, to będziesz miał dokładnie to, o co pytasz.
Da się to zrobić przy pomocy zmiennych serwera i kawałka regexa (wycinającego nazwę domeny ze zmiennej), na każdym serwerze WWW.
Chociaż przy 100 kompach to chyba raczej [b]Squid[/b] byłby właściwszy do takich zabaw, ale nie mam pomysłu, jak w jego konfigach wyrzeźbić dynamiczne dopisywanie domeny [b]mhouse.lh[/b] do REQUEST_URL - choć to na pewno wykonalne.
Ostatnio edytowany przez Jacekalex (2016-01-07 18:42:03)
Offline
Chodzi generalnie o znajdywanie kompów w sieci. xD Przykład, jeśli mam powiedzmy kilka kompów, i chcę się logować na ssh do nich, to musiałbym wpisywać IP albo całą nazwę+domenę. A tak to tylko "ssh hostname" i problem z głowy. xD To samo tyczy się pozostałych usług i generalnie ten dnmasq jest w stanie wszystkie takie zapytania obrobić i dodać im domenę. Wszystko jedno czy ten lokalny dnsmasq czy ten na routerze. Różnica jest tylko w tym, że ja na swoim kompie nie korzystam z DNS tego co mam na routerze. Wszystkie pozostałe kompy w sieci używają DNS routera. Dlatego mam taki rozdział na swoim kompie, by te zapytania z mhouse.lh szły do tego routera w sieci, tak na wszelki wypadek, gdybym coś tam później kombinował z tym lokalnym DNS.
Na dobrą sprawę to próbuję ustalić dlaczego jest wysyłane to drugie żądanie DNS.
Ostatnio edytowany przez morfik (2016-01-07 19:09:04)
Offline
Popytałem trochę na liście mailingowej dnsmasq i w sumie wychodzi na to, że tego się nie da tak zrobić jak ja bym chciał. xD
Zarówno opcja "search" jak i "domain", które można określić w pliku /etc/resolv.conf będą doklejać "mhouse.lh" w przypadku, gdy zapytanie do upstreamowego serwera DNS się nie powiedzie. To taki fallback czy coś.
Można wymusić by system tego nie robił przez dopisanie kropki na końcu domeny, np. "dupaa.com.", tylko chyba żadna aplikacja tego nie robi. xD No i jak się ma ten "search" czy "domain" wpisane, to można przekierować człowieka gdzie się tylko chce, zwłaszcza w sieciach niezaufanych. To chyba tyle w tym temacie.
Offline
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00090 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.191.62.68' WHERE u.id=1 |
0.00148 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.191.62.68', 1732761333) |
0.00051 | SELECT * FROM punbb_online WHERE logged<1732761033 |
0.00074 | SELECT topic_id FROM punbb_posts WHERE id=295087 |
0.00109 | SELECT id FROM punbb_posts WHERE topic_id=28067 ORDER BY posted |
0.00060 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28067 AND t.moved_to IS NULL |
0.00004 | SELECT search_for, replace_with FROM punbb_censoring |
0.00081 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28067 ORDER BY p.id LIMIT 0,25 |
0.00078 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28067 |
Total query time: 0.00708 s |