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.
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ą,
Źródło: www.habr.com