Przekierowanie LAN ↔ WAN na MikroTiku przy użyciu dstnat i srcnat

Każdy, kto hostuje serwer WWW w sieci lokalnej, prędzej czy później trafia na ten problem:
strona działa z Internetu, ale nie otwiera się w tej samej sieci lokalnej — mimo że używamy tej samej domeny.To nie jest błąd serwera ani przeglądarki.
To naturalne zachowanie routera, które trzeba „nauczyć” obsługiwać. Spójrzmy, co dokładnie dzieje się po drodze.

Punkt wyjścia: domena wskazuje na publiczne IP

Domena (np. moja-domena.pl) zawsze wskazuje na publiczny adres IP routera.
Nie ma znaczenia, czy użytkownik jest w LAN czy w WAN — DNS zwróci to samo IP.

I tu zaczyna się problem.

Co się dzieje, gdy łączysz się z Internetu (WAN)?

1.Przeglądarka wysyła żądanie do domeny

2.Ruch trafia na publiczne IP routera

3.Router widzi regułę dstnat

4.Przekierowuje ruch do serwera w LAN

5.Serwer odpowiada

6.Router wysyła odpowiedź do Internetu

Co się dzieje w sieci lokalnej (LAN)?

Teraz dokładnie ten sam adres, ale inna perspektywa:

  1. Komputer w LAN wysyła żądanie do domeny
  2. DNS zwraca publiczne IP routera
  3. Pakiet trafia do routera…
  4. Router przekierowuje go do serwera (dstnat)
  5. Serwer otrzymuje pakiet

I tutaj bez przekierowania wszystko się psuje.

Dlaczego połączenie się rozpada?

Gdy komputer w sieci lokalnej łączy się z domeną, zapytanie DNS zwraca publiczny adres IP routera. Klient wysyła więc pakiet „do Internetu”, mimo że serwer znajduje się w tej samej sieci lokalnej.

Router odbiera ten ruch i — zgodnie z regułą dstnat — przekierowuje go na prywatny adres IP serwera w LAN. Na tym etapie wszystko wygląda poprawnie.

Problem pojawia się po stronie serwera.

Serwer widzi żądanie pochodzące bezpośrednio od klienta z tej samej sieci lokalnej. Nie ma więc powodu, aby wysyłać odpowiedź przez router. Odpowiada bezpośrednio do klienta, z pominięciem routera.

Dla klienta taka odpowiedź jest niespójna. Wysłał pakiet do publicznego adresu IP, a odpowiedź przyszła z prywatnego adresu z sieci lokalnej. Stos TCP/IP uznaje to za błąd i odrzuca pakiety.

Efektem jest brak odpowiedzi w przeglądarce, długi timeout albo zerwane połączenie TCP.

Jak rozwiązuje to Hairpin NAT?

Hairpin NAT, realizowany przez regułę srcnat, zmienia sposób, w jaki serwer widzi nadawcę pakietu.

Router modyfikuje adres źródłowy ruchu wychodzącego z LAN tak, aby serwer widział router jako nadawcę połączenia. Dzięki temu odpowiedź zawsze wraca do routera, a nie bezpośrednio do klienta.

Router, znając stan połączenia, przekazuje odpowiedź dalej do właściwego urządzenia w sieci lokalnej.

Z perspektywy serwera wygląda to jak rozmowa wyłącznie z routerem.
Z perspektywy klienta — jak zwykłe połączenie z domeną w Internecie.

Rola dstnat i srcnat

Reguła dstnat odpowiada za przekierowanie ruchu — decyduje, do którego serwera ma trafić połączenie przychodzące na publiczny adres IP.

Reguła srcnat (masquerade) odpowiada za drogę powrotną — zmienia adres źródłowy pakietu i zapewnia, że odpowiedź wróci przez router.

Dopiero połączenie dstnat i srcnat sprawia, że dostęp do serwera przez domenę działa poprawnie zarówno z sieci lokalnej, jak i z Internetu.

Jak skonfigurować Hairpin NAT na MikroTiku?

Krok 1: przekierowanie portu (dstnat)

Najpierw konfigurujemy klasyczne przekierowanie portu.

Ta reguła mówi routerowi, że ruch przychodzący na publiczny adres IP ma zostać wysłany do serwera w sieci lokalnej.

Przechodzimy do IP=>Firewall=>NAT=>Add New

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *