Tunel
Tunel jest sposobem połączenia sieci komputerowych i systemów IT, które nie znajdują się w tej samej lokalizacji (nie są podłączone do na przykład tego samego przełącznika) ale znajdują się w różnych lokalizacjach na przykład różnych lokalizacjach geograficznych. Tunel pozwala zatem na komunikację między tymi sieciami jak jakby były podłączone do jednego przełącznika lub routera zależnie od wybranej konfiguracji, tak jakby pracowały razem, lokalnie w jednej sieci. Poniżej koncepcja tunelu między dwoma firmami. Z perspektywy tunelu i jego użytkowników nie ma znaczenia jaką trasą w sieci Internet zostanie przesłany ruch. Tunel daje zatem wirtualne połączenie, taki wirtualny kabel. W tak utworzonym tunelu można przesyłać ruch między sieciami obu biur. Dla użytkowników będzie to wyglądało jakby wszyscy pracowali w tym samym miejscu.

Tunel oczywiście bazuje na uprzednio fizycznie zestawionych połączeniach po IP i jest z perspektywy sieci i oprogramowania pracującej w niej wirtualnym połączeniem Często bywa zupełnie przezroczysty i użytkownicy nie wiedzą że pracują w zdalnej sieci łączonej za pomocą tunelu.
Już tutaj widać, że tunel potrzebuje dwóch adresów IP do zestawienia. To muszą być adresy, które mogą się komunikować. Kolejno takim tunelem będzie przesyłany ruch sieciowy, w sumie dowolnego rodzaju.
Tunel GRE
Najprostszym przykładem jest tunel typu GRE (ang. General Routing Encapsulation), który z założenia nie szyfruje danych ale umożliwia transmisję dowolnego protokołu. Ta idea pozwala na przenoszenie przez Internet ruchu, który nie jest zgodny z jego zasadami transmisji np prywatnych adresów IP czy protokołów, które nie są obsługiwane. Tunel GRE pozwala także na przesyłanie ruchu rozgłoszeniowego czyli broadcast i ruchu multiemisyjnego czyli multicast, zatem można łączyć systemy które wymagają do swojej pracy tego typu ruchu na przykład niektóre protokoły routingu, protokół ARP (dla łączenia sieci po L2).

Tunelowanie bazuje na enkapsulacji tak jak w przypadku systemu Ethernet: dane z wyższych warstw modelu ISO-OSI są enkapsulowane w warstwach niższych. W tym wypadku datagram IP pakowany jest do ramki GRE a ta do datagramu IP. Ten wewnętrzny datagram to adresacja wewnętrzna ten zewnętrzny to zewnętrzna. Na tym bazuje tunel: jest zestawiony między dwoma interfejsami IP (np. publicznymi w sieci Internet) ale wewnątrz przenosi ruch IP między dwoma adresami prywatnymi. Te prywatne adresy to datagramy wewnętrzne a te publiczne to zewnętrzne.

Pakowanie czyli enkapsulacja ma miejsce na różnych poziomach warstw modelu sieciowego ISO OSI. Zapewnia to elastyczność konfiguracji i możliwość przesyłania dowolnego protokołu z dowolną adresacją przez sieci, które tych protokołów czy adresacji nie obsługują. Przykładem jest tunelowanie IPv6 w IPv4, tunelowanie adresów prywatnych w sieci Internet, tunelowanie protokołów obcych Internetowi. Do takich celów idealnie nadaje się tunel GRE. Pojawi się wtedy tunel w tunelu. Z punktu widzenia użytkownika jest on całkowicie przezroczysty i raczej jest konfigurowany na urządzeniach szkieletu sieci a nie na komputerze klienta zatem użytkownik sieci nawet o nim nie wie.

Tunel GRE możemy przedstawić jak niżej:

Zauważ, że zielone połączenie sięga od „wewnętrznego” interfejsu routera R1 do analogicznego w R2. To ważne aby zadziałało przekazywanie ruchu broadcast. W tym przypadku w routerze możemy ustanowić most (ang. bridge), do którego dodamy fizyczny inerface dla sieci wewnętrznej oraz dodatkowy, wirtualny interfejs będący punktem zaczepienia dla późniejszego tunelu GRE Ponieważ oba interfejsy będą w moście to jak coś :”wpadnie” jednym z nich to „wyleci” drugim. Takie działanie zapewni przezroczystą pracę i będzie można przesyłać między sieciami także ruch broadcast.
Most można przedstawić jak niżej:

Po lewej mamy most (urządzenie wirtualne) a w nim fizyczna kartę sieci LAN o nazwie eth0 oraz wirtualny interfejs (Lo 0 0 loopback czyli interfejs pętli zwrotnej). Oba są dodane do mostu zatem adres IP także ustawiamy na moście a nie na jednym z jego interfejsów składowych. Czerwona linia obrazuje połączenie tunelu GRE – łączy się on z interfejsem Lo, a że jest on w moście to cały ruch na Lo jest widoczny (kopiowany) do eth0. Top daje przezroczystość. To jeden ze sposobów tunelowanie przezroczystego. Tunel GRE jest bardzo przydatny ale nie szyfruje danych samodzielnie zatem zazwyczaj korzysta się z tuneli szyfrowanych, o czym napisano poniżej.
Tunel VPN
Kolejnym rozwiązaniem tunelowania jest VPN (ang. Virtual Private Networking) czyli wirtualna sieć prywatna. Ten rodzaj tunelu opiera się na routingu czyli na adresach IP i nie przenosi ruchu rozgłoszeniowego czy multiemisyjnego. W związku z tym bardzo często wykorzystuje się w nim jeszcze drugi tunel, właśnie tunel GRE czyli tunel w tunelu. Z definicji łącze VPN jest tunelem, który samodzielnie szyfruje dane dzięki czemu zapewnia poufność informacji. Wyróżniamy różne rodzaje tuneli VPN: tryb punkt – punkt za pomocą którego możemy łączyć dwie lokalizacje, oraz tryb Remote Access czyli zdalny dostęp dla na przykład mobilnych pracowników.
Model Site-to-Site
Tunele VPN mogą być konfigurowane na urządzeniach sieci – w tym wypadku nie będą dla użytkownika widoczne (ani oprogramowaniu tunelu ani jego działanie). To najczęściej rozwiązania dla firm pragnących połączyć po IP (warstwa 3) zdalne lokalizacje firmy. W tym wypadku pracownicy obu lokalizacji mogą pracować jak gdyby przebywali w jednej sieci, w jednym biurze i będą mogli posługiwać się adresami IP z puli prywatnej jaka została ustawiona w firmie. To wlaśnie połączenie site-to-site.

Model Remote Access
Można także tunel VPN uruchamiać na urządzeniu użytkownika co wymaga już instalacji oprogramowania oraz posiadania konta w zdalnym systemie serwera VPN. To typ połączenia Remote Acces bo faktycznie służy do nawiązania zdalnych połączeń pracownika z firmą. Tego typu rozwiązań jest bardzo dużo. Darmowym jest OpenVPN Book. Za jego pomocą możemy korzystać z darmowej sieci VPN, co daje nam głownie zaletę zmiany IP pod jakim widać nas w sieci Internet. Prędkości są niewielkie ale na testy czy do telemetrii wystarczy. Popularne VPNy dają szyfrowany dostęp do ich serwera a z tego miejsca dopiero użytkownik wychodzi na świat. W tym wypadku ni chodzi o połączenie dwóch lokalizacji ani zdalny dostęp, a tylko o szyfrowanie transmisji (oczywiści tylko do systemu VPN) i zmianę adresu IP. Więcej o tym rozwiązaniu tutaj.
Idea tunelów Remote Access
Tutaj mamy jeden centralny system (powiedzmy serwer VPN) i to do niego łączą się niezależnie klienci. Dzięki temu każdy z nich może mieć dostęp do zasobów firmy w swoim biurze. Jeśli dostęp ma bazować na rozgłoszeniach wymagane będzie GRE a jeśli nawet na warstwie Lt to wymagany będzie tunel L2TP (ang. Layer 2 Tunneling Protocol). Dla większości zastosowań domowych i biznesowych w zupełności wystarczy zwykłe połączenie VPN bazujące na L3 czyli adresacji IP.
Tunel SSH
Jeszcze innym rodzajem tunelu jest połączenie SSH (ang. Secure Shell), zazwyczaj wykorzystywane do zdalnej administracji i pracy w konsoli na routerach, przełącznikach czy serwerach. Za pomocą połączenia ssh można tunelować ruch przez tak zwane tunelowanie portów. Połączenie ssh z natury jest szyfrowane więc i tutaj mamy szyfrowany tunel. W przypadku tuneli VPN oraz GRE wymagane jest utworzenie wirtualnych interfejsów, na bazie których połączenia tunelowe są zestawiane. Połączenie tunelowe SSH nie wymaga tego, po prostu logujemy się do zdalnego urządzenia i za pomocą odpowiednich opcji oprogramowania ssh konfigurujemy ruch między wybranymi portami.

Połączenia SSH nie wymagają uprawnień administratora a jedynie posiadania konta w systemie docelowym. Przykład tunelu SSH znajdziesz tutaj. Jeśli chodzi o przekierowywanie ruchu między portami oraz zabezpieczanie ruchu nieszyfrowanego (tunelowanie w SSH) to takie rozwiązanie często jest najszybsze i najbardziej elastyczne. Tunele SSH są niezwykle proste i przydatne zatem zostaną omówione w osobnych artykułach. W artykule Tunel SSH opisano pierwsze z rozwiązani prosty tunel ssh z przekierowaniem portu.
Protokoły
Zalecanym protokołem dla samego tunelu będzie UDP ponieważ jest szybszy niż TCP i ma mniejszy narzut administracyjny. Ewentualne zagubione pakiery naprawią warstwy wyższe (np. TCP kiedy będzie transmitowany takim tunelem). Jeśli wymagane jest połączenie TCP (np. bo po drodze jest firewall i nie akceptuje UDP) będziemy mieli ruch TCP w tunelu TCP. Przy dużym ruchu i gubieniu pakietów może pojawić się niekorzystne zjawisko „tunel meltdown” czyli dławienia się takiego ruchu. To wynika z działania protokołu TCP, który samodzielnie realizuje badanie utraconych pakietów i ponawia je (oprócz tego wymaga potwierdzeń dostarczonych porcji danych). W takim przypadku jeśli tunel utraci kawałek ruchu będzie ponawiał go oraz zmniejszał rozwmiar okna TCP. W tym momencie tego samego doświadczy ruch TCP wewnątrz tuneli i zrobi to samo. Tunel może się zatem =w takich sytuacjach zatykać.
Temat tuneli jest bardzo szeroki, a tutaj podano tylko wstępne informacje. Patrząc do RouterOS możemy zobaczyć wiele sposobów organizacji tuneli:

PPTP – Point to Point Tunneling Protocol
SSTP – Secure Socket Tunneling Protocol
L2TP – Layer 2 Tunneling Protocol
OVPN – Open VPN
PPPoE – Point to Point over Ethernet
To nie wszystko, bo jest jeszcze wiele innych sposobów organizacji tuneli (WireGuard, TailScale itd)
Przykłady tuneli na Cisco oraz RouterOS i Linux opisane są w innych artykułach.
Podsumowanie
Tunele to bardzo elastyczne rozwiązania, pozwalające w prosty (i często darmowy) sposób łączyć odległe sieci LAN. Sprawiają, że urządzenia i użytkownicy pracują jak gdyby przebywali w jednej lokalizacji. Pamiętaj też, że tunel nie zawsze jest szyfrowany. Tunel, choć może pozwalać na zmianę adresu IP pod jakim jest Twoja maszyna widoczna w Internecie, nie daje anonimowości! To głównie narzędzie techniczne zwiększające zasięg sieci lokalnej.











