Na Styku Sieci Na Styku Sieci
Aa
  • Start
  • Routing & Switching
  • Wireless
  • Certyfikacja
  • Wokół sieci
  • NSSletter
Na Styku Sieci Na Styku Sieci
Aa
Szukaj
  • Start
  • Newsletter
  • Kategorie
    • Routing & Switching
    • Wireless
    • Certyfikacja
    • Wokół sieci
  • Przydatne linki
    • Kontakt
Należysz już do RouterRangers? Zaloguj się
Routing & Switching

Hairpinning w teorii – przegląd technologii

Damian Michalak
Damian Michalak 13 grudnia 2016 Komentarze: 6
Udostępnij
Czas czytania: 6 min
Udostępnij

Hairpinning… cóż to jest? Sieci komputerowe obfitują w mniej lub bardziej wymyślne terminy, a ten jest jednym z moich ulubionych. W dużym uproszczeniu – hairpinning to określenie sytuacji, w której dany ruch wchodzi pewnym interfejsem routera i po podjęciu decyzji o routingu wychodzi tym samym interfejsem. Nietypowe prawda?

Spis treści:
Skąd taka nazwa?ZastosowanieImplementacja na przykładzie Cisco ASAPotencjalne problemy

W tym artykule wyjaśnię skąd taka nazwa, jakie są przesłanki by stosować hairpinning oraz w jaki sposób go skonfigurować na Cisco ASA.

Skąd taka nazwa?

To akurat jest proste – po przeczytaniu wstępu oraz zobaczeniu obrazka w nagłówku artykułu skojarzenie powinno nasunąć się samo. Jeśli naszkicujemy sobie opisaną wcześniej sytuację (ruch wchodzi i wychodzi tym samym interfejsem) to wyjdzie nam tak zwany U-turn (ruch zawracający). Spinka do włosów dość ładnie to odzwierciedla. Na szczęście w języku polskim nikt póki co nie wymyślił żeby nazywać tę technikę spinkowaniem, dlatego też pozostajemy przy oryginalnym angielskim terminie – hairpinning 🙂

Zastosowanie

Hairpinning znajduje zastosowanie w sytuacji, w której w danym segmencie LAN mamy więcej niż jedno urządzenie routujące, a najkrótsza droga do sieci docelowej nie przechodzi przez bramę domyślną komputera będącego źródłem ruchu. Brzmi zawile? Zobrazujmy to na poniższym przykładzie:

Przykładowa topologia

Host A chcąc się skomunikować z hostem B musi wysłać ruch do swojej bramy domyślnej jako, że host B znajduje się w innej sieci. Sieć jest skonfigurowana w taki sposób, że bramą domyślną dla sieci 192.168.1.0/24 jest ASA na wyjściu do Internetu. Najkrótsza trasa do hosta B jednak nie wiedzie przez ASA, a przez Internal Router. Konfiguracja sieci wymusza na nas zatem aby ruch, który trafi do ASA został zawrócony w stronę sieci 192.168.1.0/24 i następnie trafił do Internal Router’a. To wszystko oczywiście przy założeniu, że nasza ASA jest w routed mode.

Powiązane publikacje

Podstawy korzystania z IOS
Wersjonowanie IOS oraz IOS XE
ROMMON – wszystko co musisz wiedzieć
Rodziny systemu Cisco IOS
Konfiguracja VLANów na przełącznikach Cisco

Hairpinning musi być zastosowany ponieważ hosty końcowe (w naszym przypadku host A) nie mają świadomości jaka jest najkrótsza trasa do danej sieci. Wszystko co nie jest w sieci hosta jest po prostu „pchane” w stronę bramy domyślnej. Można by oczywiście dodać do hosta A trasę:

route -p 192.168.2.0 mask 255.255.255.0 192.168.1.2

Spowodowałoby to, że brama domyślna nie byłaby angażowana, a ruch do hosta B byłby wysyłany bezpośrednio do Internal Router’a. Wada? Konieczność dodawania takiej trasy ręcznie na każdym hoście w sieci 192.168.1.0/24…

Implementacja na przykładzie Cisco ASA

Sama implementacja jest stosunkowo prosta. Zanim przejdę do komend, mała wzmianka – na Cisco ASA aż do wersji 6. oprogramowania nie było możliwości stosowania hairpinningu. Wynikało to z domyślnego blokowania ruchu pomiędzy interfejsami o tym samym security-level. Dopiero od wersji 7 dodano komendę „same-security”, która pozwalała na routowanie ruchu między interfejsami o identycznym security-level (z pewnymi ograniczeniami). Począwszy od wersji 7.2 oprogramowania pojawiła się komenda:

same-security-traffic permit intra-interface

To właśnie ona odpowiada za włączenie hairpinningu. I to tyle co do samej implementacji 🙂

Potencjalne problemy

Nietypowość sytuacji, w której stosuje się hairpinning może powodować pewne problemy. Tutaj opiszę jeden z nich, najczęściej występujący:

Problem z NAT’owaniem

Jeśli na Cisco ASA mamy uruchomiony NAT/global (w celu umożliwienia dostępu z sieci wewnętrznej do Internetu) to ubije on nam hairpinning:

nat (inside) 1 0.0.0.0 0.0.0.0
global (outside) 1 interface

Próbując pingować hosta B z hosta A na ASA pojawią się nastepujące logi:

%ASA-3-305006: portmap translation creation failed for icmp src inside:192.168.1.100 dst inside:192.168.2.200 (type 8, code 0)

Rozwiązaniem tego problemu jest dodanie dedykowanej konfiguracji NAT dla naszych sieci wewnętrznych, tak aby hairpinnowany ruch nie wpadał w NAT/global:

static (inside,inside) 192.168.1.0 192.168.1.0 netmask 255.255.255.0
static (inside,inside) 192.168.2.0 192.168.2.0 netmask 255.255.255.0

Począwszy od wersji 8.3 oprogramowania zmieniła się składnia komend do NAT’owania na Cisco ASA, ale sama logika rozwiązania pozostaje taka sama:

object network obj-192.168.1.0
subnet 192.168.1.0 255.255.255.0
object network obj-192.168.2.0
subnet 192.168.2.0 255.255.255.0
object network obj_any
subnet 0.0.0.0 0.0.0.0
object network obj_any-01
subnet 0.0.0.0 0.0.0.0
object network obj-0.0.0.0
host 0.0.0.0
!
object network obj-192.168.1.0
nat (inside,inside) static 192.168.1.0
object network obj-192.168.2.0
nat (inside,inside) static 192.168.2.0
object network obj_any
nat (inside,outside) dynamic interface
object network obj_any-01
nat (inside,outside) dynamic obj-0.0.0.0

W tym artykule omówiliśmy przesłanki do stosowania hairpinningu, poznaliśmy konfigurację oraz zapoznaliśmy się z potencjalnymi problemami.

TAGI: ASA, Cisco ASA, Hairpinning, NAT, NAT loopback, NAT reflection, Routing asymetryczny
Co sądzisz o artykule?
Extra1
Ok0
Nuda1
Ugh0
Poprzedni artykuł Braindumpy – jak zdobyć certyfikat nie robiąc z siebie durnia?
Następny artykuł CEF – Cisco Express Forwarding – przegląd technologii
Komentarze: 6
Otrzymuj powiadomienia z tej dyskusji
Zaloguj się
Powiadom mnie o
guest

guest

6 - Ilość komentarzy
Sortuj wg najlepszych
Sortuj wg najnowszych Sortuj wg najstarszych
Inline Feedbacks
View all comments
RiFF
RiFF
6 lat temu

Wyjaśnienie NAT Hairpin jest przedstawione dużo prościej na przykładzie innego producenta sprzętu a dokładnie na WIKI Mikrotika – http://wiki.mikrotik.com/wiki/Hairpin_NAT, aczkolwiek tam przykład jest prostszy bo skupia się tylko na jednym urządzeniu 😉

0
0
Odpowiedz
loockas
loockas
4 lat temu
Odpowiedź do  RiFF

Jednocześnie jest to najpopularniejsze zastosowanie hairpiningu 🙂

0
0
Odpowiedz
er
er
4 lat temu

mialo byc wyjasnione a zostalo zagmatwane jeszcze bradziej

0
0
Odpowiedz
Damian
Autor
Damian
4 lat temu
Odpowiedź do  er

Drogi Anonimie. Mogę prosić o informację co w artykule powyżej jest dla Ciebie niezrozumiałe? Dotychczasowy feedback jaki otrzymaliśmy na temat tego artykułu jest zdecydowanie pozytywny. Dziwi mnie zatem Twoja opinia. Jeżeli według Ciebie temat może być lepiej wyjaśniony to zapraszam do współpracy i przygotowania własnego, bardziej zrozumiałego opracowania tego tematu.

0
0
Odpowiedz
TomW
TomW
3 lat temu

Damian rozumiem, że w przypadku ASA hairpinning również będziemy go stosować do RA w oparciu o AnnyConnecta?
Poprzez implementację same-security-traffic permit intra-interface.

0
0
Odpowiedz
Damian Michalak
Autor
Damian Michalak
3 lat temu
Odpowiedź do  TomW

Zgadza się @TomW!

0
0
Odpowiedz

NA STYKU SIECI

Tworzymy społeczność sieciowców skupioną dookoła rozwiązań oraz certyfikacji firmy Cisco Systems.
Przydatne linki
  • Kontakt
  • Polityka Prywatności
  • Regulamin
Nasze projekty
  • NSSletter
  • Szkoła Sieci
© Na Styku Sieci 2023 - powered by Alvortech
Witaj w Strefie RR

Zaloguj się na swoje konto

Zapomniałeś/aś hasło?