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/.
Witam. Mam problem z wykonaniem przekierowania na MikroTiku, albo jest to problem stricte zwiazany z serwerem www.
Wyglada to mniej wiecej tak. Na glownym routerze - brzegowym mam uruchomiony NAT. Router oczywiscie zna sciezki do sieci zdalnych (routing statyczny)
W tej samej klasie adresowej, co router stoi rowniez serwer www. Chcialem wykonac przekierowanie na routerze glownym bezposrednio na serwer www dla nieplacacych. Niestety cos nie do konca dziala jak nalezy... O ile normalnie serwer www jest osiagalny dla kazdego hosta z ze zdalnych sieci o tyle po nalozeniu nazwijmy to ograniczenia (dst-nat tcp 80 na adres serwera www) strona na serwerze sie nie laduje, lub laduje calkowicie losowo
Tak jakby to "przekierowanie" bylo niewlasciwie.
Tak wyglada przykladowa regulka
add action=dst-nat chain=dstnat comment="TEST BVLOKA DOM" dst-port=\
!1-52,54-79,84-65355 protocol=tcp src-address=192.168.5.120 to-addresses=\
192.168.252.10 to-ports=82
gdzie adres 5.120 to przykladowy host, a 252.10 to adres serwera www dzialajacego na porcie 82
Offline
Nie znam za bardzo Mikrotika, nie jestem też pewien, czy dobrze rozumiem Twoją topologię, ale wydaje mi się, że połączenie wygląda następująco:
1) Klient chce wejść na forum.dug.net.pl, więc jego przeglądarka (a właściwie system operacyjny) próbuje nawiązać połączenie TCP wysyłając segment z ustawioną flagą [b]SYN[/b] na na adres 217.96.37.17
2) Router modyfikuje nagłówek IP, zmieniając adres docelowy na 192.168.252.10
3) Do hosta 192.168.252.10 dociera segment [b]SYN[/b] od klienta, na co odpowiada [b]SYN/ACK[/b]
4) Do klienta dociera segment z flagami [b]SYN/ACK[/b] od 192.168.252.10, do którego nie wysyłał wcześniej segmentu [b]SYN[/b], więc odpowiada [b]RST[/b], czym kończy połączenie (oczywiście w międzyczasie wysyła retransmisje z flagą [b]SYN[/b]).
Czy dobrze zrozumiałem sytuację? Możesz to zweryfikować uruchamiając sniffer (najlepiej na komputerze klienckim).
Ostatnio edytowany przez jurgensen (2013-11-13 01:19:28)
Offline
Tak, myślę, ze dobrze zweryfikowałeś. Do konca chyba tak to nie wyglada, ale mogę się mylić. Na Mikrotikowym torchu (cos ala sniffer) widze.jakbym syn wychodzil zarowno do np wp.pl jak i na serwer, przy czym nie ma zadnej odpowiedzi ani od jednego ani od drugiego - przynajmniej ja tak to widze. Host kilkanascie razy ponawia wyslanie syn, do hostow, ale "bezskutecznie"
Sprawdze to jeszcze wieczorem. Dzieki za odpowiedz.
Offline
Niestety, nie wiem o co chodzi. Gdy nałożę blokadę, komputer wysyła jedynie pakiety syn, tak jakby nic nie wracało.
Nie wiem co robię źle. Routing wygląda ok. Nie rozumiem, dlaczego nie ma jakichkolwiek pakietow zwrotnych ... od serwera www. Faktycznie jest tak, ze na urzadzeniu robiacym NAT (tez Mikrotiku) dla kompa, na ktorym odpalam wiresharka, pojawiaja sie polaczenia miedzy serwerem www a komputerem... tyle, ze nie ma wymiany pakietow... Gdzie lezy przyczyna? Dziwniejsze jest to, ze czasami normalnie te odpowiedzi sie trafiaja, i wszystko ladnie dziala - znaczy, laduje sie strona z serwera www (przekierowanie dziala ok) a momentami ni cholery...
Ostatnio edytowany przez Kpt. (2013-11-15 20:48:00)
Offline
A jak wygląda topologia sieci i routing? Może pakiety wracają inną drogą i dlatego ich nie widzisz na routerze. Najlepiej, gdybyś zapuścił wiresharka/tcpdumpa na kliencie i serwerze w tym samym czasie i wrzucił tutaj pliki pcap z wynikiem.
Offline
252.10 to serwer www. W tablicy wskazanie na wszystkie sieci zdalne - łącz przez router. Pomniejsze routery (w tym przypadku 252.20) ma przykazane łączyć się z 252.10 poprzez 252.1. Tak jak powinno działać połączenie zaznaczyłem na niebiesko. zieloną kreską - jaki przepływ następuje "czasami" (wg moich obserwacji) Co zauważyłem. Robiąc traceroute z serwera www do jakiegoś hosta w sieci zdalnej np 5.x (nie wiem na ile to jest miarodajne), na przykład raz mamy trasę jakby prawidłową tzn 252.1-->252.20->5.x a raz mamy tylko 252.20->5.x Jeśli tak faktycznie jest to nie ma się co dziwić, że raz strona się ładuje, raz nie. Jak dla mnie wygląda to na zaburzony przepływ pakietów....I tak mam. Jak sprawdzę traceroutem np do testowego hosta i ścieżkę pokaże mi kompletną przez router - to przekierowanie działa pięknie, ale za moment ścieżka się "skraca" (już nie idzie przez 252.1) i strona się nie ładuje :( Może przyjąłem blednę założenia i nie da się wymusić takiego nieco sztucznego obiegu, jak opisany na schemacie?
[img]http://192.83.165.8/pic/schemat_www.jpg[/img]
Offline
Teraz wszystko jest jasne. Przy pierwszym połączeniu ze 192.168.252.10 do 192.168.5.0/24 pakiet jest kierowany przez 192.168.252.1. Ten sprawdza, że dalsza trasa wiedzie przez 192.168.252.20. Pakiet przesyła do tego routera, informując również nadawcę komunikatem ICMP redirect (typ 5), że istnieje krótsza trasa do tej sieci, po czym klient ustawia modyfikuję tymczasowo tablicę routingu i dalsze pakiety przesyła przez 192.168.252.20 (tymczasowa trasa powinna być widoczna przez route -C).
Istnieje kilka rozwiązań. Jednym (które zdecydowanie odradzam) jest blokada komunikatów ICMP typu 5. Inne, zdecydowanie lepsze, jest stworzenie odrębnej adresacji transportowej między routerami.
Offline
Hmm, ale wiesz co. Nie do końca rozumiem, co masz na myśli poprzez stworzenie odrębnej adresacji transportowej. Chcesz powiedzieć, że powinienem dodać jakaś osobną klasę na routerze brzegowym (252.1) i serwerze www, tak, aby serwer był osiągalny faktycznie tylko przez router główny?
Offline
Tak, routery do kontaktu pomiędzy sobą powinny mieć inną podsieć (w ostateczności nawet na tych samych interfejsach, jako dodatkowe adresy - aliasy).
Innym rozwiązaniem może być ustawienie NAT. Tzn., przy robieniu przekierowania na routerze 192.168.252.1 na serwer 192.168.252.10, jednocześnie robić NAT adresu źródłowego. Wówczas pakiet przychodzący do serwera 192.168.262.10 będzie miał adres źródłowy 192.168.252.1. W takiej sytuacji wyśle odpowiedź na ten właśnie adres. Wtedy router 192.168.262.1 sprawdzi swoje mapowania NAT i odeśle odpowiedź do klienta.
Ostatnio edytowany przez jurgensen (2013-11-17 13:51:20)
Offline
Niestety NAT odpada. Nie che natowac, bo muszę znać adres źródłowy hosta, ktory połączy się z serwerem WWW. Tak czy siak wielkie dzięki za pomoc i nakierowanie mnie na właściwy trop. Dorobię aliasy i zobaczę, jak to będzie działać.
Offline
Jeśli routery będą na innych adresach niż serwer, wszystko powinno iść trasą wyznaczoną przez Ciebie. W ostateczności, jeśli wszystko zawiedzie, możesz wyłączyć ICMP redirect, ale jak pisałem wcześniej, zdecydowanie to odradzam (w dokumentacji mikrotika też zalecają pozostawienie włączonego na routerach):
send-redirects (yes | no; Default: yes) Whether to send ICMP redirects. Recommended to be enabled on routers.[/quote]
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00098 | 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='3.146.37.222' WHERE u.id=1 |
0.00060 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.146.37.222', 1732473923) |
0.00038 | SELECT * FROM punbb_online WHERE logged<1732473623 |
0.00058 | 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=24595 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00263 | 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=24595 ORDER BY p.id LIMIT 0,25 |
0.00077 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24595 |
Total query time: 0.00614 s |