Z wiadomości wysyłanych do służby wsparcia technicznego Tucha powstają prawdziwe artykuły. Ostatnio jeden z naszych klientów zwrócił się z prośbą o wyjaśnienie, co dzieje się podczas połączeń w tunelu VPN między biurem użytkownika a środowiskiem w chmurze, a także podczas połączeń spoza tunelu VPN. Dlatego cały tekst poniżej to prawdziwy e-mail, który wysłaliśmy jednemu z klientów w odpowiedzi na jego pytanie. Oczywiście zmieniliśmy adresy IP, aby nie zidentyfikować klienta. Ale tak, dział wsparcia technicznego Tucha naprawdę słynie z wyczerpujących odpowiedzi i treściwych e-maili. 🙂
Oczywiście rozumiemy, że dla wielu ta artykuł nie będzie odkryciem. Ale, ponieważ na Habr od czasu do czasu pojawiają się artykuły dla początkujących administratorów oraz z uwagi na to, że ten artykuł powstał z prawdziwego listu do prawdziwego klienta, mimo wszystko podzielimy się tą informacją tutaj. Istnieje duża szansa, że komuś będzie to przydatne.
Dlatego szczegółowo wyjaśniamy, co dzieje się między serwerem w chmurze a biurem, jeśli są one połączone siecią site-to-site. Zauważamy, że część usług jest dostępna tylko z biura, a część - z dowolnego miejsca w Internecie.
Od razu wyjaśnimy, że nasz klient chciał, aby na serwerze 192.168.A.1 można było łączyć się z dowolnego miejsca przez RDP, łącząc się z A.A.A.2:13389, a do pozostałych usług - tylko z biura (192.168.B.0/24), łączonego przez VPN. Klient miał również początkowo skonfigurowane, że do maszyny 192.168.B.2 w biurze można było również łączyć się przez RDP z dowolnego miejsca, łącząc się z B.B.B.1:11111. Pomogliśmy zorganizować połączenia IPSec między chmurą a biurem, a specjalista IT zleceniodawcy zaczął zadawać pytania, co się stanie w danym przypadku. Aby odpowiedzieć na wszystkie te pytania, napisaliśmy mu wszystko, co poniżej można przeczytać.

A teraz przyjrzyjmy się tym procesom bardziej szczegółowo.
Pozycja pierwsza
Kiedy coś jest wysyłane z 192.168.B.0/24 do 192.168.A.0/24 lub z 192.168.A.0/24 do 192.168.B.0/24, trafia do VPN. To znaczy, że ten pakiet jest dodatkowo szyfrowany i przesyłany między B.B.B.1 i A.A.A.1, ale 192.168.A.1 widzi pakiet właśnie od 192.168.B.1. Mogą komunikować się między sobą za pomocą dowolnych protokołów. Odpowiedzi również są przesyłane przez VPN, co oznacza, że pakiet z 192.168.A.1 do 192.168.B.1 będzie wysłany jako datagram ESP z A.A.A.1 na B.B.B.1, który po stronie odbiorcy router rozpakowuje, wyciąga z niego ten pakiet i przekazuje dalej. 192.168.B.1 jak pakiet od 192.168.A.1.
Konkretna przykładowa:
1) 192.168.B.1 odnosi się do 192.168.A.1, chce nawiązać połączenie TCP z 192.168.A.1:3389;
2) 192.168.B.1 wysyła żądanie nawiązania połączenia od 192.168.B.1:55555 (numer portu do odpowiedzi wybiera sam, w dalszej części użyjemy numeru 55555 jako przykładu takiego portu, który system wybiera podczas nawiązywania połączenia TCP) na 192.168.A.1:3389;
3) system operacyjny, który działa na komputerze z adresem 192.168.B.1, decyduje się przekazać ten pakiet na adres bramy routera (192.168.B.254 w naszym przypadku), ponieważ nie ma innych, bardziej specyficznych tras dla 192.168.A.1, zatem przekazuje pakiet trasą domyślną (0.0.0.0/0);
4) w tym celu próbuje znaleźć adres MAC dla adresu IP 192.168.B.254 w tabeli pamięci podręcznej protokołu ARP. Jeśli go nie znajdzie, wysyła z adresu 192.168.B.1 broadcast who-has zapytanie do sieci 192.168.B.0/24. Kiedy 192.168.B.254 w odpowiedzi przesyła swój adres MAC, system przekazuje pakiet Ethernet do niej i zapisuje tę informację w swojej tabeli pamięci podręcznej;
5) router odbiera ten pakiet i decyduje, dokąd go przesłać: ma określoną politykę, zgodnie z którą powinien przesyłać wszystkie pakiety pomiędzy 192.168.B.0/24 i 192.168.A.0/24 przez połączenie VPN pomiędzy B.B.B.1 i A.A.A.1;
6) router formuje datagram ESP od B.B.B.1 na A.A.A.1;
7) router decyduje, komu przekazać ten pakiet, wysyła go np. do B.B.B.254 (brama dostawcy Internetu), ponieważ nie ma bardziej specyficznych tras do A.A.A.1, niż 0.0.0.0/0;
8) tak samo, jak już było powiedziane, znajduje adres MAC dla B.B.B.254 i przekazuje pakiet do bramy dostawcy Internetu;
9) dostawcy Internetu przesyłają przez swoje sieci datagram ESP od B.B.B.1 na A.A.A.1;
10) wirtualny router na A.A.A.1 odbiera ten datagram, deszyfruje go i otrzymuje pakiet od 192.168.B.1:55555 do 192.168.A.1:3389;
11) wirtualny router sprawdza, komu go przekazać, znajduje w tabeli routingu sieć 192.168.A.0/24 i wysyła go bezpośrednio do 192.168.A.1, ponieważ ma interfejs 192.168.A.254/24;
12) w tym celu wirtualny router znajduje adres MAC dla 192.168.A.1 i przesyła mu ten pakiet przez wirtualną sieć Ethernet;
13) 192.168.A.1 otrzymuje ten pakiet na porcie 3389, zgadza się na nawiązanie połączenia i formuje pakiet w odpowiedzi od 192.168.A.1:3389 na 192.168.B.1:55555;
14) jego system przesyła ten pakiet na adres bramy wirtualnego routera (192.168.A.254 w naszym przypadku), ponieważ nie ma innych, bardziej specyficznych tras dla 192.168.B.1, nie ma innych tras, zatem musi przekazać pakiet trasą domyślną (0.0.0.0/0);
15) tak samo, jak w poprzednich przypadkach, system, który działa na serwerze z adresem 192.168.A.1, znajduje adres MAC 192.168.A.254, ponieważ znajduje się w tej samej sieci co jej interfejs 192.168.A.1/24;
16) wirtualny router przyjmuje ten pakiet i decyduje, dokąd go wysłać: ma zapisaną politykę, zgodnie z którą powinien przekazywać wszystkie pakiety między 192.168.A.0/24 i 192.168.B.0/24 przez połączenie VPN pomiędzy A.A.A.1 i B.B.B.1;
17) wirtualny router tworzy datagram ESP od A.A.A.1 do B.B.B.1;
18) wirtualny router decyduje, komu przekazać ten pakiet, wysyła go do A.A.A.254 (brama dostawcy internetu, w tym przypadku to też my), ponieważ nie ma bardziej specyficznych tras do B.B.B.1, niż 0.0.0.0/0;
19) dostawcy internetu przekazują przez swoje sieci datagram ESP z A.A.A.1 na B.B.B.1;
20) router na B.B.B.1 odbiera ten datagram, deszyfruje go i otrzymuje pakiet od 192.168.A.1:3389 do 192.168.B.1:55555;
21) rozumie, że powinien go przekazać dokładnie do 192.168.B.1, ponieważ znajduje się z nim w tej samej sieci, w związku z czym ma w tabeli routingu odpowiedni wpis, który zmusza go do wysyłania pakietów dla całej 192.168.B.0/24 bezpośrednio;
22) router znajduje adres MAC dla 192.168.B.1 i przekazuje mu ten pakiet;
23) system operacyjny na komputerze z adresem 192.168.B.1 otrzymuje pakiet od 192.168.A.1:3389 do 192.168.B.1:55555 i inicjuje następne kroki do nawiązania połączenia TCP.
W tym przykładzie w sposób zwięzły i uproszczony (a można tu jeszcze przypomnieć mnóstwo szczegółów) opisano, co się dzieje na poziomach 2-4. Poziomy 1, 5-7 nie zostały omówione.
Pozycja druga
Jeśli z 192.168.B.0/24 coś jest wysyłane dokładnie do A.A.A.2, to nie idzie przez VPN, ale bezpośrednio. To znaczy, że jeśli użytkownik z adresu 192.168.B.1 odnosi się do A.A.A.2:13389, ten pakiet natrafia z adresu B.B.B.1, przechodzi do A.A.A.2, a tam router go przyjmuje i przekazuje do 192.168.A.1. 192.168.A.1 nie wie nic o 192.168.B.1, widzi pakiet od B.B.B.1, ponieważ go ponieważ natrafił. Dlatego odpowiedź na to zapytanie idzie przez ogólną trasę, również natrafia z adresu A.A.A.2 i idzie do B.B.B.1, a ten router oddaje tę odpowiedź do 192.168.B.1, ten widzi odpowiedź od A.A.A.2, do którego się zwracał.
Konkretna przykładowa:
1) 192.168.B.1 odnosi się do A.A.A.2, chce nawiązać połączenie TCP z A.A.A.2:13389;
2) 192.168.B.1 wysyła żądanie nawiązania połączenia od 192.168.B.1:55555 (ten numer, podobnie jak w poprzednim przykładzie, może być inny) do A.A.A.2:13389;
3) system operacyjny, który działa na komputerze z adresem 192.168.B.1, decyduje się przekazać ten pakiet na adres bramy routera (192.168.B.254 w naszym przypadku), ponieważ nie ma innych, bardziej specyficznych tras dla A.A.A.2, nie ma, a zatem przekazuje pakiet według domyślnej trasy (0.0.0.0/0);
4) w tym celu, jak już wspomnieliśmy w poprzednim przykładzie, próbuje znaleźć adres MAC dla adresu IP 192.168.B.254 w tabeli pamięci podręcznej protokołu ARP. Jeśli go nie znajdzie, wysyła z adresu 192.168.B.1 broadcast who-has zapytanie do sieci 192.168.B.0/24. Kiedy 192.168.B.254 w odpowiedzi przesyła swój adres MAC, system przekazuje pakiet Ethernet do niej i zapisuje tę informację w swojej tabeli pamięci podręcznej;
5) router przyjmuje ten pakiet i decyduje, dokąd go przekazać: ma zapisaną politykę, zgodnie z którą musi natrafić (zmieniając adres zwrotny) wszystkie pakiety od 192.168.B.0/24 do innych węzłów sieci Internet;
6) ponieważ ta polityka zakłada, że adres zwrotny musi odpowiadać niższemu adresowi w interfejsie, przez który ten pakiet zostanie przesłany, router najpierw decyduje, do kogo dokładnie wysłać ten pakiet, a on, jak w poprzednim przykładzie, musi go wysłać do B.B.B.254 (brama dostawcy Internetu), ponieważ nie ma bardziej specyficznych tras do A.A.A.2, niż 0.0.0.0/0;
7) w związku z tym router zmienia adres zwrotny pakietu, od teraz pakiet od B.B.B.1:44444 (numer portu, rzecz jasna, może być inny) do A.A.A.2:13389;
8) router zapamiętuje, co zrobił, a więc, gdy od A.A.A.2:13389 do B.B.B.1:44444 przyjdzie odpowiedź, będzie wiedział, że powinien zmienić adres i port odbiorcy na 192.168.B.1:55555.
9) teraz router musi przesłać go do sieci dostawcy internetu przez B.B.B.254, dlatego dokładnie tak jak już to wspomnieliśmy, znajduje adres MAC dla B.B.B.254 i przekazuje pakiet do bramy dostawcy Internetu;
10) dostawcy internetu przesyłają przez swoje sieci pakiet od B.B.B.1 na A.A.A.2;
11) wirtualny router na A.A.A.2 otrzymuje ten pakiet na porcie 13389;
12) na wirtualnym routerze jest reguła, która przewiduje, że pakiety, które przychodzą od dowolnego nadawcy na ten port, powinny być przesyłane do 192.168.A.1:3389;
13) wirtualny router znajduje w tabeli routingu sieć 192.168.A.0/24 i wysyła go bezpośrednio 192.168.A.1, ponieważ ma interfejs 192.168.A.254/24;
14) w tym celu wirtualny router znajduje adres MAC dla 192.168.A.1 i przesyła mu ten pakiet przez wirtualną sieć Ethernet;
15) 192.168.A.1 otrzymuje ten pakiet na porcie 3389, zgadza się na nawiązanie połączenia i formuje pakiet w odpowiedzi od 192.168.A.1:3389 na B.B.B.1:44444;
16) jego system przesyła ten pakiet na adres bramy wirtualnego routera (192.168.A.254 w naszym przypadku), ponieważ nie ma innych, bardziej specyficznych tras dla B.B.B.1, nie ma innych tras, zatem musi przekazać pakiet trasą domyślną (0.0.0.0/0);
17) dokładnie tak samo jak w poprzednich przypadkach, system, który działa na serwerze z adresem 192.168.A.1, znajduje adres MAC 192.168.A.254, ponieważ znajduje się w tej samej sieci co jej interfejs 192.168.A.1/24;
18) wirtualny router przyjmuje ten pakiet. Należy zauważyć, że pamięta, że otrzymał na A.A.A.2:13389 pakiet od B.B.B.1:44444 i zmienił mu adres i port odbiorcy na 192.168.A.1:3389, w związku z tym pakiet od 192.168.A.1:3389 do B.B.B.1:44444 zmienia adres nadawcy na A.A.A.2:13389;
19) wirtualny router decyduje, do kogo przesłać ten pakiet, przesyła go do A.A.A.254 (brama dostawcy internetu, w tym przypadku to też my), ponieważ nie ma bardziej specyficznych tras do B.B.B.1, niż 0.0.0.0/0;
20) dostawcy internetu przesyłają przez swoje sieci pakiet z A.A.A.2 na B.B.B.1;
21) router na B.B.B.1 otrzymuje ten pakiet i przypomina sobie, że, kiedy przesyłał pakiet od 192.168.B.1:55555 do A.A.A.2:13389, zmieniał jego adres i port nadawcy na B.B.B.1:44444, zatem to jest odpowiedź, którą należy przesłać do 192.168.B.1:55555 (w rzeczywistości istnieje jeszcze kilka sprawdzeń, ale tym się nie zajmujemy);
22) rozumie, że powinien zostać przesłany bezpośrednio do 192.168.B.1, ponieważ jest w tej samej sieci, więc ma odpowiedni wpis w tabeli routingu, który każe przesyłać pakiety dla całej 192.168.B.0/24 bezpośrednio;
23) router znajduje adres MAC dla 192.168.B.1 i przekazuje mu ten pakiet;
24) system operacyjny na komputerze z adresem 192.168.B.1 otrzymuje pakiet od A.A.A.2:13389 do 192.168.B.1:55555 i inicjuje następne kroki do nawiązania połączenia TCP.
Należy zauważyć, że w tym przypadku komputer z adresem 192.168.B.1 nic nie wie o serwerze z adresem 192.168.A.1, komunikuje się tylko z A.A.A.2. Podobnie serwer z adresem 192.168.A.1 nic nie wie o komputerze z adresem 192.168.B.1. Uważa, że podłączono się do niego z adresu B.B.B.1, a więcej, że tak powiem, nic nie wie.
Należy również zauważyć, że w przypadku, gdy ten komputer zwraca się do A.A.A.2:1540, połączenie nie zostanie nawiązane, ponieważ przełączenie połączeń na port 1540 nie jest skonfigurowane na wirtualnym routerze, nawet jeśli na jakichkolwiek serwerach w wirtualnej sieci 192.168.A.0/24 (na przykład na serwerze z adresem 192.168.A.1) są jakieś usługi, które oczekują na połączenia na tym porcie. Jeśli użytkownik komputera z adresem 192.168.B.1 musi nawiązać połączenie z tą usługą, musi użyć VPN, tzn. bezpośrednio połączyć się z 192.168.A.1:1540.
Należy podkreślić, że wszelkie próby nawiązania połączenia z A.A.A.1 (oprócz połączenia IPSec z B.B.B.1 nie będą udane. Wszystkie próby nawiązania połączeń z A.A.A.2, oprócz połączeń z portem 13389, również będą nieudane.
Również zauważamy, że w przypadku, gdy do A.A.A.2 zwróci się ktoś inny (na przykład C.C.C.C), wszystko, co określono w punktach 10-20, dotyczy również jego. To, co wydarzy się przed tym i po tym, zależy od tego, co dokładnie znajduje się za tym C.C.C.C. Nie posiadamy takich informacji, dlatego doradzamy skontaktowanie się z administratorami węzła z adresem C.C.C.C.
Pozycja trzecia
I, odwrotnie, jeśli z 192.168.A.1 cokolwiek jest wysyłane na jakiś port, który jest skonfigurowany do przekierowania do wewnątrz na B.B.B.1 (na przykład 11111), również nie trafia do VPN, a po prostu natychmiast jest kierowane od A.A.A.1 i trafia do B.B.B.1, a on już przekazuje je gdzie indziej, powiedzmy, 192.168.B.2:3389. On widzi ten pakiet nie od 192.168.A.1, a od A.A.A.1. A gdy 192.168.B.2 odpowiada, pakiet idzie od B.B.B.1 na A.A.A.1, a później trafia do inicjatora połączenia — 192.168.A.1.
Konkretna przykładowa:
1) 192.168.A.1 odnosi się do B.B.B.1, chce nawiązać połączenie TCP z B.B.B.1:11111;
2) 192.168.A.1 wysyła żądanie nawiązania połączenia od 192.168.A.1:55555 (ten numer, podobnie jak w poprzednim przykładzie, może być inny) do B.B.B.1:11111;
3) system operacyjny, który działa na serwerze z adresem 192.168.A.1, decyduje się przekazać ten pakiet na adres bramy routera (192.168.A.254 w naszym przypadku), ponieważ nie ma innych, bardziej specyficznych tras dla B.B.B.1, zatem przekazuje pakiet trasą domyślną (0.0.0.0/0);
4) w tym celu, jak już wspomnieliśmy w poprzednich przykładach, stara się znaleźć adres MAC dla adresu IP 192.168.A.254 w tabeli pamięci podręcznej protokołu ARP. Jeśli go nie znajdzie, wysyła z adresu 192.168.A.1 broadcast who-has zapytanie do sieci 192.168.A.0/24. Kiedy 192.168.A.254 w odpowiedzi wysyła jej swój adres MAC, system przesyła pakiet Ethernet dla niego i wpisuje tę informację do swojej tabeli pamięci podręcznej;
5) wirtualny router odbiera ten pakiet i decyduje, dokąd go przekazać: ma określoną politykę, według której ma przejąć (zmieniając adres zwrotny) wszystkie pakiety z 192.168.A.0/24 do innych węzłów sieci Internet;
6) ponieważ ta polityka zakłada, że adres zwrotny powinien odpowiadać najmłodszemu adresowi na interfejsie, przez który ten pakiet będzie przekazywany, wirtualny router najpierw decyduje, do kogo dokładnie przekazać ten pakiet, a on, jak w poprzednim przykładzie, powinien go wysłać do A.A.A.254 (brama dostawcy internetu, w tym przypadku to też my), ponieważ nie ma bardziej specyficznych tras do B.B.B.1, niż 0.0.0.0/0;
7) więc wirtualny router podmienia adres zwrotny pakietu, odtąd to pakiet od A.A.A.1:44444 (numer portu, rzecz jasna, może być inny) do B.B.B.1:11111;
8) wirtualny router zapamiętuje, co zrobił, więc kiedy od B.B.B.1:11111 do A.A.A.1:44444 przyjdzie odpowiedź, będzie wiedział, że powinien zmienić adres i port odbiorcy na 192.168.A.1:55555.
9) teraz wirtualny router musi przekazać go do sieci dostawcy internetu przez A.A.A.254, więc właśnie tak, jak już wspomnieliśmy, znajduje adres MAC dla A.A.A.254 i przekazuje pakiet do bramy dostawcy Internetu;
10) dostawcy internetu przesyłają przez swoje sieci pakiet od A.A.A.1 na B.B.B.1;
11) router na B.B.B.1 odbiera ten pakiet na porcie 11111;
12) na wirtualnym routerze istnieje zasada, która przewiduje, że pakiety, które przychodzą od jakiegokolwiek nadawcy na ten port, powinny być przekazywane do 192.168.B.2:3389;
13) router znajduje w tabeli routingu sieć 192.168.B.0/24 i wysyła go bezpośrednio do 192.168.B.2, ponieważ ma interfejs 192.168.B.254/24;
14) w tym celu wirtualny router znajduje adres MAC dla 192.168.B.2 i przesyła mu ten pakiet przez wirtualną sieć Ethernet;
15) 192.168.B.2 otrzymuje ten pakiet na porcie 3389, zgadza się na nawiązanie połączenia i formuje pakiet w odpowiedzi od 192.168.B.2:3389 na A.A.A.1:44444;
16) jego system przesyła ten pakiet na adres bramy routera (192.168.B.254 w naszym przypadku), ponieważ nie ma innych, bardziej specyficznych tras dla A.A.A.1, nie ma innych tras, zatem musi przekazać pakiet trasą domyślną (0.0.0.0/0);
17) dokładnie tak samo jak w poprzednich przypadkach, system, który działa na komputerze z adresem 192.168.B.2, znajduje adres MAC 192.168.B.254, ponieważ znajduje się w tej samej sieci co jej interfejs 192.168.B.2/24;
18) router przyjmuje ten pakiet. Należy zauważyć, że pamięta, że otrzymał na B.B.B.1:11111 pakiet od A.A.A.1 i zmienił mu adres i port odbiorcy na 192.168.B.2:3389, w związku z tym pakiet od 192.168.B.2:3389 do A.A.A.1:44444 zmienia adres nadawcy na B.B.B.1:11111;
19) router decyduje, komu przekazać ten pakiet. Wysyła go na, powiedzmy, B.B.B.254 (brama dostawcy internetu, dokładny adres, którego nie znamy), ponieważ nie ma bardziej specyficznych tras do A.A.A.1, niż 0.0.0.0/0;
20) dostawcy internetu przesyłają przez swoje sieci pakiet z B.B.B.1 na A.A.A.1;
21) wirtualny router na A.A.A.1 otrzymuje ten pakiet i przypomina sobie, że, kiedy przesyłał pakiet od 192.168.A.1:55555 do B.B.B.1:11111, zmieniał jego adres i port nadawcy na A.A.A.1:44444. Więc to jest odpowiedź, którą należy przekazać do 192.168.A.1:55555 (w rzeczywistości, jak już wspomnieliśmy w poprzednim przykładzie, tam są też jeszcze kilka kontroli, ale w tym przypadku nie zgłębiamy ich w)
22) rozumie, że powinien przekazać to bezpośrednio do 192.168.A.1, ponieważ jest w tej samej sieci, więc ma odpowiedni wpis w tabeli routingu, który zmusza go do wysyłania pakietów dla całej 192.168.A.0/24 bezpośrednio;
23) router znajduje adres MAC dla 192.168.A.1 i przekazuje mu ten pakiet;
24) system operacyjny na serwerze z adresem 192.168.A.1 otrzymuje pakiet od B.B.B.1:11111 dla 192.168.A.1:55555 i inicjuje następne kroki do nawiązania połączenia TCP.
Dokładnie tak samo jak w poprzednim przypadku, w tym przypadku serwer z adresem 192.168.A.1 nic nie wie o komputerze z adresem 192.168.B.1, komunikuje się tylko z B.B.B.1. Komputer z adresem 192.168.B.1 również nic nie wie o serwerze z adresem 192.168.A.1. Uważa, że podłączono się do niego z adresu A.A.A.1, a reszta jest ukryta.
Wnioski
Tak to wygląda podczas połączeń wewnątrz tunelu VPN między biurem klienta a środowiskiem w chmurze, a także podczas połączeń poza tunel VPN. Jeśli masz jakieś pytania lub potrzebujesz naszej pomocy w rozwiązaniu problemów chmurowych,
Źródło: habr.com
