Jaki czas temu znajomy poprosił mnie o przegląd jego sieci LAN. Jedną z pierwszych rzeczy jaka rzuciła mi się w oczy to konfiguracja Mikrotika pod kątem przekierowania portów i dostępu do monitoringu CCTV. Posiadał zainstalowaną aplikację mobilną do podglądu kamer, w której ten sam serwer był dodany dwa razy. Raz na adresie wewnętrzny, a drugi raz na adresie publicznym. Wszystko oczywiście działało, ale po co utrudniać sobie życie z przełączaniem między serwerami. Idealnym rozwiązaniem jest zastosowanie Hairpin NAT, dzięki czemu konfigurujemy aplikację tylko na adres publiczny.
Schemat poglądowy
Adres sieci: 192.168.66.0/24
Adres router: 192.168.66.1
Adres rejestratora: 192.168.66.199
Port rejestratora: 8181
Konfiguracja routera
Pomijam podstawową konfigurację routera. Jeżeli nie wiesz jak skonfigurować dhcp czy przekierować porty zapraszam tutaj!
Zaczynamy od dodania nowej reguły na Fierwallu, w tym celu klikamy na IP->Firewall i przechodzimy na zakładkę NAT
- Chain: srcnat
- Src. Address: 192.168.66.0/24
- Dst. Address: !192.168.66.1
- Action: masquerade
Uwaga ważne!! nowa reguła nie może być wyżej niż domyślna maskarada.
Dodajemy kolejną regułę:
- Chain: dstnat
- Dst. Address: !192.168.66.1
- Protocol: tcp
- Dst. Port: 8181
- Dst. Address Type: local
- Action: dst-nat
- To Addresses: 192.168.66.199
- To Ports: 8181
Podsumowanie
Dzięki zastosowaniu Hairpin NAT do urządzeń, usług możemy dostać się zarówno z sieci wewnętrznej jak i publicznej wykorzystując tylko jeden publiczny adres. Zastosowań takiego rozwiązania może być sporo nie koniecznie tylko rejestratory cyfrowe, ale serwery www, NASy, czy pojedyncze kamery ip.
Materiał Video
[su_youtube url=”https://youtu.be/i2-wdKXHN-o”]
Polecany sprzęt
Z własnego doświadczenia mogę wam polecić poniższy sprzęt, z podziałem na ewentualne przeznaczenie routera.
Do domu i małej firmy(SOHO): hAP AX Lite , hAP AC3, RB4011, RB260GS, RB2011
hAP AC3 LTE, hAP AX2, hAP AX3, L009UiGS-2HaxD-IN, RB5009UG+S+IN, Audience
LTE: SXT LTE kit, SXT LTE6 kit, LHG 5, LHG LTE kit, Audience LTE, Chateau LTE6 ax, LTAP LTE6
Access Pointy: mAP lite, mAP, cAP AX, cAP XL AC
POE: hEX PoE
LAB: hEX lite
Średnia/Duża firma: CCR1036-12G-4S, CCR2004-16G-2S+
A czy jesli host jest w vilanie a serwer www w innym vlanie?
Nie ma takiej potrzeby. W takim przypadku trzeba dobrze skonfigurować routing i firewall’a
W drugiej regule jest błąd Dst. Address: 192.168.66.1 powinien być wykrzyknik. Bez wykrzyknika nie działa.
Dzięki. Poprawiłem
A jak mam dwa zewnętrzne IP, za jednym IP np. x.x.x.1 mam maskaradę (192.168.10.0/24) a drugi IP (x.x.x.2) chciałbym żeby wskazywał na serwer za maskaradą np. na adres IP 192.168.10.10 to to się da zrobić przez harpin nat?
Zastanawiam się jak to ugryźć, czy na porcie WAN w Mikrotiku ustawiać dwa adresy IP czy poprzedzić MT małym switchem i drugim kablem wejść do MT na kolejny port i tu ustawić drugie IP
Lepiej zbudować dst.address list i tam wskazać dwa publiczne adresy
Czy da się to zastosować do sytuacji, gdy mam jedną regułę na porcie 21 (FTPES), ale muszę zrobić drugą regułę dla zestawu portów pasywnych?
Jak zrobię tylko na tej pierwszej regule (port 21), to Hairpin NAT nie działa. Jeżeli jest to do zrobienia, to prosiłbym napisać jak bo jestem początkującym 🙂
OK, już wszystko działa 🙂
Czy da sie ograniczyć hairpin nat do odwoływania sie tylko w sytuacji zapytania na jego adres zewnetrzny? Zauważyłem że problem w sytuacji jak klient ma kilka rejestratorów i każdy pracuje na tych samych portach to tworząc regułę hairpin nat, przy połączeniu lan każdy ruch na określonym porcie jest przekierowywany do wewnętrznego rejestratora, do pozostałych pomimo użycia innych adresów publicznych dostępu nie ma i cały Rych jest kierowany do lan’u
Jestem laikiem samoukiem i u siebie zrobilem w dns wpis statyczny wskazując na wewn ip zewn domenę i też działa .. Oczywiście do zasotosowania jak jest domena ,po zewn ip to hairpin
@jau proste i genialne – thx
Dzień dobry
Czy ta reguła zadziała przy podwójnym NAT? Mam GPON z publicznym adresem (powiedzmy 84.1.2.3 i prywatnym 192.168.10.1) wszystkie porty są przekierowane na Mikrotika z „publicznym” adrresem 192.168.10.2 i wewnętrznym 192.168.10.1. Serwer WWW ma adres 192.168.0.30. Mam takie reguły + domyślna maskarada:
0 ;;; WWW z zewn trz na http
chain=dstnat action=dst-nat to-addresses=192.168.0.30 to-ports=80 protocol=tcp dst-address=192.168.10.2 dst-port=80 log=no log-prefix=””
1 ;;; WWW z zewn trz na https
chain=dstnat action=dst-nat to-addresses=192.168.0.30 to-ports=443 protocol=tcp dst-address=192.168.10.2 dst-port=443 log=no log-prefix=””
2 ;;; defconf: masquerade
chain=srcnat action=masquerade out-interface-list=WAN ipsec-policy=out,none
3 ;;; haiirpin
chain=srcnat action=masquerade src-address=192.168.0.0/24 dst-address=!192.168.0.1 log=no log-prefix=””
4 ;;; WWW hairpin http
chain=dstnat action=dst-nat to-addresses=192.168.0.30 to-ports=80 protocol=tcp dst-address=!192.168.0.1 dst-address-type=local dst-port=80 log=no
log-prefix=””
5 ;;; WWW hairpin https
chain=dstnat action=dst-nat to-addresses=192.168.0.30 to-ports=443 protocol=tcp dst-address=!192.168.0.1 dst-address-type=local dst-port=443 log=no
log-prefix=””
i niestety przeglądarka z wewnątrz sieci zwraca „EMPTY RESPONSE”. Na liczniku pakietów pusto dla każdej z nowych reguł 3-5.
Proszę o hint :
Pytanie czy u operatora masz zrobiony pełny DMZ, ale zacząłbym od tego, żeby wyrzucić dst-address=192.168.10.2, zostaw to puste.
Korekta! wewnętrznym adres Mikrotika to oczywiście 192.168.0.1.
Dzięki, przydało się 🙂