Co dzieje się z połączeniami wewnątrz i na zewnątrz tunelu VPN

Prawdziwe artykuły rodzą się z listów do wsparcia technicznego Tucha. Przykładowo, niedawno zwrócił się do nas klient z prośbą o wyjaśnienie, co dzieje się podczas połączeń wewnątrz tunelu VPN pomiędzy biurem użytkownika a środowiskiem chmurowym, a także podczas połączeń poza tunelem VPN. Dlatego cały poniższy tekst jest faktycznym listem, który wysłaliśmy do jednego z naszych klientów w odpowiedzi na jego pytanie. Oczywiście adresy IP zostały zmienione, aby nie deanonimizować klienta. Ale tak, wsparcie techniczne Tucha naprawdę słynie ze szczegółowych odpowiedzi i informacyjnych e-maili. 🙂

Oczywiście rozumiemy, że dla wielu ten artykuł nie będzie rewelacją. Ponieważ jednak na Habr od czasu do czasu pojawiają się artykuły dla początkujących administratorów, a także ponieważ ten artykuł powstał z prawdziwego listu do prawdziwego klienta, nadal będziemy dzielić się tymi informacjami tutaj. Jest duże prawdopodobieństwo, że komuś się przyda.
Dlatego szczegółowo wyjaśniamy, co dzieje się pomiędzy serwerem w chmurze a biurem, jeśli są one połączone siecią typu site-to-site. Należy pamiętać, że niektóre usługi są dostępne tylko z biura, a niektóre z dowolnego miejsca w Internecie.

Wyjaśnijmy od razu, czego nasz klient chciał na serwerze 192.168.A.1 możesz przyjść z dowolnego miejsca za pośrednictwem protokołu RDP, łącząc się z AAA2:13389, a dostęp do pozostałych usług wyłącznie z poziomu biura (192.168.B.0/24)połączone przez VPN. Ponadto klient początkowo skonfigurował tak, aby samochód 192.168.B.2 w biurze można było także korzystać z protokołu RDP z dowolnego miejsca, łącząc się z BBB1:11111. Pomogliśmy zorganizować połączenia IPSec pomiędzy chmurą a biurem, a specjalista IT klienta zaczął zadawać pytania, co by się stało w tym czy innym przypadku. Aby odpowiedzieć na wszystkie te pytania, faktycznie napisaliśmy do niego wszystko, co możesz przeczytać poniżej.

Co dzieje się z połączeniami wewnątrz i na zewnątrz tunelu VPN

Przyjrzyjmy się teraz tym procesom bardziej szczegółowo.

Pozycja pierwsza

Kiedy coś jest wysyłane z 192.168.B.0/24 в 192.168.A.0/24 lub z 192.168.A.0/24 в 192.168.B.0/24, dostaje się do VPN. Oznacza to, że ten pakiet jest dodatkowo szyfrowany i przesyłany pomiędzy BBB1 и AAA1ale 192.168.A.1 widzi paczkę dokładnie z 192.168.B.1. Mogą komunikować się ze sobą za pomocą dowolnego protokołu. Odpowiedzi zwrotne przesyłane są w ten sam sposób przez VPN, co oznacza, że ​​pakiet z 192.168.A.1 dla 192.168.B.1 zostanie wysłany jako datagram ESP z AAA1 na BBB1, który router rozwinie po tej stronie, wyjmij z niego ten pakiet i wyślij go 192.168.B.1 jako paczka od 192.168.A.1.

Konkretny przykład:

1) 192.168.B.1 apeluje 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 połączenia z 192.168.B.1:55555 (sam wybiera numer portu do uzyskania informacji zwrotnej; w dalszej części będziemy używać numeru 55555 jako przykładu numeru portu, który system wybiera podczas tworzenia połączenia TCP) na 192.168.A.1:3389;

3) system operacyjny działający na komputerze o podanym adresie 192.168.B.1, postanawia przekazać ten pakiet na adres bramy routera (192.168.B.254 w naszym przypadku), ponieważ inne, bardziej szczegółowe trasy dla 192.168.A.1, nie ma zatem transmituje pakietu 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 nie zostanie wykryty, wysyła z adresu 192.168.B.1 rozsyłaj do sieci żądanie „kto ma”. 192.168.B.0/24. Kiedy 192.168.B.254 w odpowiedzi wysyła mu swój adres MAC, system przesyła dla niego pakiet Ethernet i wprowadza tę informację do swojej tablicy pamięci podręcznej;

5) router odbiera ten pakiet i decyduje, dokąd go przekazać: ma pisemną politykę, zgodnie z którą musi wysyłać wszystkie pakiety pomiędzy 192.168.B.0/24 и 192.168.A.0/24 transfer przez połączenie VPN pomiędzy BBB1 и AAA1;

6) router generuje datagram ESP BBB1 na AAA1;

7) router decyduje do kogo wysłać ten pakiet, wysyła go np. do BBB254 (bramka ISP), ponieważ istnieją bardziej szczegółowe trasy do AAA1, niż 0.0.0.0/0, nie ma;

8) dokładnie tak samo, jak już powiedziano, znajduje adres MAC BBB254 i przesyła pakiet do bramy ISP;

9) Dostawcy Internetu przesyłają datagram ESP BBB1 na AAA1;

10) router wirtualny włączony AAA1 odbiera ten datagram, odszyfrowuje go i odbiera pakiet od 192.168.B.1:55555 dla 192.168.A.1:3389;

11) router wirtualny sprawdza komu przekazać, znajduje sieć w tablicy routingu 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 router wirtualny znajduje adres MAC 192.168.A.1 i przesyła mu ten pakiet za pośrednictwem wirtualnej sieci Ethernet;

13) 192.168.A.1 odbiera ten pakiet na porcie 3389, zgadza się na nawiązanie połączenia i w odpowiedzi generuje pakiet 192.168.A.1:3389 na 192.168.B.1:55555;

14) jego system przesyła ten pakiet na adres bramy routera wirtualnego (192.168.A.254 w naszym przypadku), ponieważ inne, bardziej szczegółowe trasy dla 192.168.B.1, nie ma, dlatego musi przesłać pakiet trasą domyślną (0.0.0.0/0);

15) tak samo jak w poprzednich przypadkach, system działający na serwerze o podanym adresie 192.168.A.1, znajduje adres MAC 192.168.A.254, ponieważ znajduje się w tej samej sieci co jego interfejs 192.168.A.1/24;

16) router wirtualny odbiera ten pakiet i decyduje, dokąd go przekazać: ma pisemną politykę, zgodnie z którą musi wysyłać wszystkie pakiety pomiędzy 192.168.A.0/24 и 192.168.B.0/24 transfer przez połączenie VPN pomiędzy AAA1 и BBB1;

17) router wirtualny generuje datagram ESP AAA1 dla BBB1;

18) router wirtualny decyduje do kogo wysłać ten pakiet, wysyła go AAA254 (brama ISP, w tym przypadku to także my), ponieważ istnieją bardziej szczegółowe trasy do BBB1, niż 0.0.0.0/0, nie ma;

19) Dostawcy Internetu przesyłają datagram ESP w swoich sieciach za pomocą AAA1 na BBB1;

20) router włączony BBB1 odbiera ten datagram, odszyfrowuje go i odbiera pakiet od 192.168.A.1:3389 dla 192.168.B.1:55555;

21) rozumie, że należy go przekazać specjalnie do 192.168.B.1, ponieważ jest z nim w tej samej sieci, zatem ma odpowiedni wpis w tablicy routingu, co zmusza go do wysyłania pakietów przez cały 192.168.B.0/24 bezpośrednio;

22) router znajduje adres MAC 192.168.B.1 i wręcza mu tę paczkę;

23) system operacyjny na komputerze o adresie 192.168.B.1 otrzymuje paczkę od 192.168.A.1:3389 dla 192.168.B.1:55555 i inicjuje kolejne kroki w celu nawiązania połączenia TCP.

Przykład ten dość zwięźle i uproszczony (i tutaj można zapamiętać kilka innych szczegółów) opisuje, co dzieje się na poziomach 2-4. Poziomy 1, 5-7 nie są brane pod uwagę.

Pozycja druga

jeśli z 192.168.B.0/24 coś jest wysyłane specjalnie do AAA2, nie trafia do VPN, ale bezpośrednio. Oznacza to, że jeśli użytkownik z adresu 192.168.B.1 apeluje do AAA2:13389, ten pakiet pochodzi z adresu BBB1, przechodzi AAA2, a następnie router odbiera go i przesyła do 192.168.A.1. 192.168.A.1 nic nie wie 192.168.B.1, widzi paczkę od BBB1, bo go dostał. Dlatego odpowiedź na to żądanie przebiega ogólną drogą, w ten sam sposób przychodzi z adresu AAA2 i idzie do BBB1, a ten router wysyła tę odpowiedź do 192.168.B.1, widzi odpowiedź od AAA2, do którego się zwracał.

Konkretny przykład:

1) 192.168.B.1 apeluje do AAA2, chce nawiązać połączenie TCP z AAA2:13389;

2) 192.168.B.1 wysyła żądanie połączenia z 192.168.B.1:55555 (liczba ta, podobnie jak w poprzednim przykładzie, może być inna) na AAA2:13389;

3) system operacyjny działający na komputerze o podanym adresie 192.168.B.1, postanawia przekazać ten pakiet na adres bramy routera (192.168.B.254 w naszym przypadku), ponieważ inne, bardziej szczegółowe trasy dla AAA2, nie posiada, co oznacza, że ​​przesyła pakiet trasą domyślną (0.0.0.0/0);

4) w tym celu, jak 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 nie zostanie wykryty, wysyła z adresu 192.168.B.1 rozsyłaj do sieci żądanie „kto ma”. 192.168.B.0/24. Kiedy 192.168.B.254 w odpowiedzi wysyła mu swój adres MAC, system przesyła dla niego pakiet Ethernet i wprowadza tę informację do swojej tablicy pamięci podręcznej;

5) router odbiera ten pakiet i decyduje, dokąd go przekazać: ma pisemną politykę, zgodnie z którą musi przekazywać (zastępując adres zwrotny) wszystkie pakiety z 192.168.B.0/24 do innych węzłów internetowych;

6) ponieważ ta zasada zakłada, że ​​adres zwrotny musi odpowiadać niskiemu adresowi na interfejsie, przez który ten pakiet będzie przesyłany, router najpierw decyduje, do kogo dokładnie wysłać ten pakiet, i on, podobnie jak w poprzednim przykładzie, musi go wysłać Do BBB254 (bramka ISP), ponieważ istnieją bardziej szczegółowe trasy do AAA2, niż 0.0.0.0/0, nie ma;

7) dlatego router zastępuje adres zwrotny pakietu, z którego pochodzi pakiet BBB1:44444 (numer portu oczywiście może być inny) do AAA2:13389;

8) router pamięta, co zrobił, czyli kiedy AAA2:13389 к BBB1:44444 otrzyma odpowiedź, będzie wiedział, że powinien zmienić adres docelowy i port na 192.168.B.1:55555.

9) teraz router powinien przekazać go do sieci ISP poprzez BBB254stąd, tak jak już wspomnieliśmy, znajduje adres MAC dla BBB254 i przesyła pakiet do bramy ISP;

10) Dostawcy Internetu przesyłają pakiety z BBB1 na AAA2;

11) router wirtualny włączony AAA2 odbiera ten pakiet na porcie 13389;

12) na routerze wirtualnym obowiązuje reguła mówiąca, że ​​pakiety odebrane od dowolnego nadawcy na tym porcie powinny być przesyłane do 192.168.A.1:3389;

13) router wirtualny znajduje sieć w tablicy routingu 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 router wirtualny znajduje adres MAC 192.168.A.1 i przesyła mu ten pakiet za pośrednictwem wirtualnej sieci Ethernet;

15) 192.168.A.1 odbiera ten pakiet na porcie 3389, zgadza się na nawiązanie połączenia i w odpowiedzi generuje pakiet 192.168.A.1:3389 na BBB1:44444;

16) jego system przesyła ten pakiet na adres bramy routera wirtualnego (192.168.A.254 w naszym przypadku), ponieważ inne, bardziej szczegółowe trasy dla BBB1, nie ma, dlatego musi przesłać pakiet trasą domyślną (0.0.0.0/0);

17) dokładnie tak samo jak w poprzednich przypadkach, system działający na serwerze o podanym adresie 192.168.A.1, znajduje adres MAC 192.168.A.254, ponieważ znajduje się w tej samej sieci co jego interfejs 192.168.A.1/24;

18) router wirtualny odbiera ten pakiet. Warto zaznaczyć, że pamięta, na co otrzymał AAA2:13389 paczka od BBB1:44444 i zmienił adres i port odbiorcy na 192.168.A.1:3389, dlatego pakiet z 192.168.A.1:3389 dla BBB1:44444 zmienia adres nadawcy na AAA2:13389;

19) router wirtualny decyduje do kogo wysłać ten pakiet, wysyła go AAA254 (brama ISP, w tym przypadku to także my), ponieważ istnieją bardziej szczegółowe trasy do BBB1, niż 0.0.0.0/0, nie ma;

20) Dostawcy Internetu przesyłają pakiet za pomocą AAA2 na BBB1;

21) router włączony BBB1 odbiera ten pakiet i pamięta, kiedy wysłał pakiet 192.168.B.1:55555 dla AAA2:13389, zmienił adres i port nadawcy na BBB1:44444, to jest to odpowiedź, do której należy wysłać 192.168.B.1:55555 (w rzeczywistości jest tam jeszcze kilka kontroli, ale nie wnikamy w to szczegółowo);

22) rozumie, że należy go przekazać bezpośrednio do 192.168.B.1, ponieważ jest z nim w tej samej sieci, zatem ma odpowiedni wpis w tablicy routingu, co zmusza go do wysyłania pakietów przez cały 192.168.B.0/24 bezpośrednio;

23) router znajduje adres MAC 192.168.B.1 i wręcza mu tę paczkę;

24) system operacyjny na komputerze o adresie 192.168.B.1 otrzymuje paczkę od AAA2:13389 dla 192.168.B.1:55555 i inicjuje kolejne kroki w celu nawiązania połączenia TCP.

Należy zaznaczyć, że w tym przypadku komputer z adresem 192.168.B.1 nic nie wie o serwerze o podanym adresie 192.168.A.1, z którym się tylko komunikuje AAA2. Podobnie serwer z adresem 192.168.A.1 nic nie wie o komputerze o podanym adresie 192.168.B.1. Uważa, że ​​powiązano go z adresu BBB1i, że tak powiem, nie wie nic więcej.

Należy również zauważyć, że jeśli ten komputer uzyska dostęp AAA2:1540, połączenie nie zostanie nawiązane, ponieważ na routerze wirtualnym nie skonfigurowano przekazywania połączeń na port 1540, nawet jeśli na którymkolwiek serwerze w sieci wirtualnej 192.168.A.0/24 (na przykład na serwerze o adresie 192.168.A.1) i jest kilka usług oczekujących na połączenia na tym porcie. Jeśli użytkownik komputera ma adres 192.168.B.1 Konieczne jest nawiązanie połączenia z tą usługą, musi ona korzystać z VPN, tj. skontaktuj się bezpośrednio 192.168.A.1:1540.

Należy podkreślić, że każda próba nawiązania połączenia z AAA1 (z wyjątkiem połączenia IPSec z BBB1 nie odniesie sukcesu. Wszelkie próby nawiązania połączenia z AAA2, z wyjątkiem połączeń z portem 13389, również nie zakończy się sukcesem.
Zauważamy również, że jeśli AAA2 Jeśli złoży wniosek ktoś inny (np. CCCC), wszystko, co wskazane w paragrafach 10-20, będzie dotyczyło także jego. To, co stanie się przed i po tym, zależy od tego, co dokładnie kryje się za tym CCCC. Nie mamy takich informacji, dlatego radzimy skonsultować się z administratorami węzła z adresem CCCC

Pozycja trzecia

I odwrotnie, jeśli z 192.168.A.1 coś jest wysyłane na jakiś port, który jest skonfigurowany do przekazywania do wewnątrz do BBB1 (na przykład 11111), to również nie trafia do VPN, ale po prostu wypływa z AAA1 i wchodzi BBB1, a on już to transmituje gdzieś, powiedzmy, 192.168.B.2:3389. Nie widzi tej paczki 192.168.A.1, i od AAA1. I kiedy 192.168.B.2 odpowiedzi, skąd nadchodzi paczka BBB1 na AAA1, a później dociera do inicjatora połączenia - 192.168.A.1.

Konkretny przykład:

1) 192.168.A.1 apeluje do BBB1, chce nawiązać połączenie TCP z BBB1:11111;

2) 192.168.A.1 wysyła żądanie połączenia z 192.168.A.1:55555 (liczba ta, podobnie jak w poprzednim przykładzie, może być inna) na BBB1:11111;

3) system operacyjny działający na serwerze o podanym adresie 192.168.A.1, postanawia przekazać ten pakiet na adres bramy routera (192.168.A.254 w naszym przypadku), ponieważ inne, bardziej szczegółowe trasy dla BBB1, nie ma zatem transmituje pakietu trasą domyślną (0.0.0.0/0);

4) w tym celu, jak wspomnieliśmy w poprzednich przykładach, próbuje znaleźć adres MAC dla adresu IP 192.168.A.254 w tabeli pamięci podręcznej protokołu ARP. Jeśli nie zostanie wykryty, wysyła z adresu 192.168.A.1 rozsyłaj do sieci żądanie „kto ma”. 192.168.A.0/24. Kiedy 192.168.A.254 w odpowiedzi wysyła jej swój adres MAC, system przesyła dla niej pakiet Ethernet i wprowadza tę informację do swojej tabeli pamięci podręcznej;

5) router wirtualny odbiera ten pakiet i decyduje, dokąd go przekazać: ma pisemną politykę, zgodnie z którą musi przekazywać (zastępując adres zwrotny) wszystkie pakiety z 192.168.A.0/24 do innych węzłów internetowych;

6) ponieważ ta polityka zakłada, że ​​adres zwrotny musi odpowiadać niskiemu adresowi na interfejsie, przez który ten pakiet będzie przesyłany, router wirtualny najpierw decyduje, do kogo dokładnie wysłać ten pakiet, i on, podobnie jak w poprzednim przykładzie, musi wysłać to na AAA254 (brama ISP, w tym przypadku to także my), ponieważ istnieją bardziej szczegółowe trasy do BBB1, niż 0.0.0.0/0, nie ma;

7) oznacza to, że router wirtualny zastępuje adres zwrotny pakietu, od tego momentu jest to pakiet z AAA1:44444 (numer portu oczywiście może być inny) do BBB1:11111;

8) router wirtualny pamięta, co zrobił, a zatem kiedy BBB1:11111 dla AAA1:44444 otrzyma odpowiedź, będzie wiedział, że powinien zmienić adres docelowy i port na 192.168.A.1:55555.

9) teraz router wirtualny powinien przekazać go do sieci ISP poprzez AAA254, więc tak jak już wspomnieliśmy, znajduje adres MAC dla AAA254 i przesyła pakiet do bramy ISP;

10) Dostawcy Internetu przesyłają pakiety z AAA1 do BBB1;

11) router włączony BBB1 odbiera ten pakiet na porcie 11111;

12) na routerze wirtualnym obowiązuje reguła, która stanowi, że pakiety przychodzące od dowolnego nadawcy na tym porcie powinny być przesyłane do 192.168.B.2:3389;

13) router znajduje sieć w tablicy routingu 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 router wirtualny znajduje adres MAC 192.168.B.2 i przesyła mu ten pakiet za pośrednictwem wirtualnej sieci Ethernet;

15) 192.168.B.2 odbiera ten pakiet na porcie 3389, zgadza się na nawiązanie połączenia i w odpowiedzi generuje pakiet 192.168.B.2:3389 na AAA1:44444;

16) jego system przesyła ten pakiet na adres bramy routera (192.168.B.254 w naszym przypadku), ponieważ inne, bardziej szczegółowe trasy dla AAA1, nie ma, dlatego musi przesłać pakiet trasą domyślną (0.0.0.0/0);

17) analogicznie jak w poprzednich przypadkach, system uruchamiany na komputerze z adresem 192.168.B.2, znajduje adres MAC 192.168.B.254, ponieważ znajduje się w tej samej sieci co jego interfejs 192.168.B.2/24;

18) router odbiera ten pakiet. Warto zaznaczyć, że pamięta, na co otrzymał BBB1:11111 paczka od AAA1 i zmienił adres i port odbiorcy na 192.168.B.2:3389, dlatego pakiet z 192.168.B.2:3389 dla AAA1:44444 zmienia adres nadawcy na BBB1:11111;

19) router decyduje do kogo wysłać ten pakiet. Wysyła to np. BBB254 (bramka ISP, której dokładnego adresu nie znamy), bo nie ma do niej bardziej konkretnych tras AAA1, niż 0.0.0.0/0, nie ma;

20) Dostawcy Internetu przesyłają pakiet za pomocą BBB1 na AAA1;

21) router wirtualny włączony AAA1 odbiera ten pakiet i pamięta, kiedy wysłał pakiet 192.168.A.1:55555 dla BBB1:11111, zmienił adres i port nadawcy na AAA1:44444. Oznacza to, że jest to odpowiedź, na którą należy wysłać 192.168.A.1:55555 (w rzeczywistości, jak wspomnieliśmy w poprzednim przykładzie, jest jeszcze kilka kontroli, ale tym razem nie wchodzimy w nie szczegółowo);

22) rozumie, że należy go przekazać bezpośrednio do 192.168.A.1, skoro jest z nim w tej samej sieci, oznacza to, że ma odpowiedni wpis w tablicy routingu, który zmusza go do wysyłania pakietów do całej sieci 192.168.A.0/24 bezpośrednio;

23) router znajduje adres MAC 192.168.A.1 i wręcza mu tę paczkę;

24) system operacyjny na serwerze wraz z adresem 192.168.A.1 otrzymuje paczkę od BBB1:11111 za 192.168.A.1:55555 i inicjuje kolejne kroki w celu 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 o podanym adresie 192.168.B.1, z którym się tylko komunikuje BBB1. Komputer z adresem 192.168.B.1 również nic nie wie o serwerze z adresem 192.168.A.1. Uważa, że ​​powiązano go z adresu AAA1a reszta jest przed nim zakryta.

Wniosek

Tak dzieje się w przypadku połączeń wewnątrz tunelu VPN pomiędzy biurem klienta a środowiskiem chmurowym, a także w przypadku połączeń poza tunelem VPN. A jeśli masz jakieś pytania lub potrzebujesz naszej pomocy w rozwiązaniu problemów z chmurą, skontaktuj się z nami 24x7.

Źródło: www.habr.com

Dodaj komentarz