Z emailů na technickou podporu Tucha vznikají skutečné články. Nedávno nás kontaktoval klient s žádostí o vyjasnění, co se děje při spojení uvnitř VPN tunelu mezi kanceláří uživatele a cloudovým prostředím, stejně jako při spojení mimo VPN tunel. Celý níže uvedený text je proto skutečný e-mail, který jsme poslali jednomu z klientů v reakci na jeho dotaz. Samozřejmě jsme změnili IP adresy, abychom neodhalili klienta. Ale ano, technická podpora Tucha skutečně vyniká svými podrobnými odpověďmi a smysluplnými e-maily. 🙂
Samozřejmě rozumíme tomu, že pro mnohé tento článek nebude objevem. Ale vzhledem k tomu, že na Habr se občas objevují články pro začínající administrátory, a také vzhledem k tomu, že tento článek vznikl z reálného e-mailu skutečnému klientovi, i tak se s těmito informacemi podělíme. Existuje velká pravděpodobnost, že někomu budou užitečné.
Podrobně tedy vysvětlujeme, co se děje mezi serverem v cloudu a kanceláří, pokud jsou propojeny sítí site-to-site. Zaznamenáme, že při tom je část služeb dostupná pouze z kanceláře a část odkudkoli z internetu.
Hned vysvětlíme, že náš klient si přál, aby na serveru 192.168.A.1 bylo možné se připojit odkudkoli přes RDP, připojující se k A.A.A.2:13389, a k ostatním službám pouze z kanceláře (192.168.B.0/24), připojené přes VPN. Klient měl také původně nastaveno, že k zařízení 192.168.B.2 v kanceláři bylo možné přistupovat přes RDP odkudkoli, připojující se k B.B.B.1:11111. Pomohli jsme zorganizovat IPSec spojení mezi cloudem a kanceláří, a IT specialista zákazníka začal pokládat otázky o tom, co se stane v různých případech. Abychom odpověděli na všechny tyto otázky, vlastně jsme mu napsali to, co můžete číst níže.

A nyní se na tyto procesy podíváme podrobněji.
První pozice
Když něco posíláno z 192.168.B.0/24 v 192.168.A.0/24 nebo z 192.168.A.0/24 v 192.168.B.0/24, dostává se do VPN. To znamená, že tento paket je navíc šifrován a předáván mezi B.B.B.1 a A.A.A.1, ale 192.168.A.1 vidí paket přímo od 192.168.B.1. Mohou spolu komunikovat pomocí jakýchkoli protokolů. Odpovědi se samozřejmě stejně tak předávají přes VPN, což znamená, že paket z 192.168.A.1 pro 192.168.B.1 bude odeslán jako ESP datagram z A.A.A.1 na B.B.B.1, který na druhé straně router rozbalí, vytáhne z něj ten paket a předá na 192.168.B.1 jak balíček od 192.168.A.1.
Konkrétní příklad:
1) 192.168.B.1 se obrací na 192.168.A.1, chce navázat TCP spojení s 192.168.A.1:3389;
2) 192.168.B.1 odesílá požadavek na navázání spojení od 192.168.B.1:55555 (číslo portu pro zpětnou vazbu si vybírá sám, zde a dále budeme používat číslo 55555 jako příklad takového čísla portu, které systém vybírá při vytváření TCP spojení) na 192.168.A.1:3389;
3) operační systém, který pracuje na počítači s adresou 192.168.B.1, se rozhodne předat tento balíček na bránový adresu routeru (192.168.B.254 v našem případě), protože nemá jiné, specifičtější trasy pro 192.168.A.1, proto předává balíček podle výchozí trasy (0.0.0.0/0);
4) za tímto účelem se pokouší najít MAC adresu pro IP adresu 192.168.B.254 v ARP protokolové tabulce cache. Pokud není nalezena, odešle z adresy 192.168.B.1 širokospektrý who-has požadavek do sítě 192.168.B.0/24. Když 192.168.B.254 na oplátku odešle svou MAC adresu, systém předá Ethernetový balíček pro něj a uloží tuto informaci do své cache tabulky;
5) router přijme tento balíček a rozhodne se, kam ho předat: má stanovenou politiku, podle které musí všechny balíčky mezi 192.168.B.0/24 a 192.168.A.0/24 předávat prostřednictvím VPN spojení mezi B.B.B.1 a A.A.A.1;
6) router vytvoří ESP datagram od B.B.B.1 na A.A.A.1;
7) router rozhoduje, komu tento balíček předat, posílá ho na, řekněme, B.B.B.254 (brána internetového poskytovatele), protože nemá jiné specifičtější trasy k A.A.A.1, než 0.0.0.0/0;
8) stejně jako bylo již řečeno, nalezne MAC adresu pro B.B.B.254 a předá balíček bráně internetového poskytovatele;
9) internetoví poskytovatelé předávají ESP datagram prostřednictvím svých sítí od B.B.B.1 na A.A.A.1;
10) virtuální router na A.A.A.1 přijme tento datagram, dešifruje ho a získá balíček od 192.168.B.1:55555 pro 192.168.A.1:3389;
11) virtuální router kontroluje, komu ho má předat, najde v směrovací tabulce síť 192.168.A.0/24 a odešle ho přímo k 192.168.A.1, protože má rozhraní 192.168.A.254/24;
12) za tímto účelem virtuální router nalezne MAC adresu pro 192.168.A.1 a předává mu tento balíček přes virtuální Ethernetovou síť;
13) 192.168.A.1 obdrží tento balíček na portu 3389, souhlasí s navázáním spojení a formuluje balíček v odpověď od 192.168.A.1:3389 na 192.168.B.1:55555;
14) jeho systém předá tento balíček na bránový adresu virtuálního routeru (192.168.A.254 v našem případě), protože nemá jiné, specifičtější trasy pro 192.168.B.1, nemá, proto musí předat balíček podle výchozí trasy (0.0.0.0/0);
15) stejně jako v předchozích případech, systém, který pracuje na serveru s adresou 192.168.A.1, nalezne MAC-adres 192.168.A.254, protože se nachází v jedné síti s jejím rozhraním 192.168.A.1/24;
16) virtuální směrovač přijímá tento paket a rozhoduje, kam ho poslat: má nastavenou politiku, podle které musí posílat všechny pakety mezi 192.168.A.0/24 a 192.168.B.0/24 předávat prostřednictvím VPN spojení mezi A.A.A.1 a B.B.B.1;
17) virtuální směrovač vytváří ESP-datagramu od A.A.A.1 pro B.B.B.1;
18) virtuální směrovač rozhoduje, komu má tento paket poslat, a odesílá ho na A.A.A.254 (brána internetového poskytovatele, v tomto případě jsme to také my), protože neexistují konkrétnější trasy k B.B.B.1, než 0.0.0.0/0;
19) internetoví poskytovatelé přenášejí ESP-datagramu po svých sítích A.A.A.1 na B.B.B.1;
20) směrovač na B.B.B.1 přijme tento datagram, dešifruje ho a získá balíček od 192.168.A.1:3389 pro 192.168.B.1:55555;
21) chápe, že by měl být poslán přímo na 192.168.B.1, protože se nachází se ním v jedné síti, a proto má ve směrovací tabulce odpovídající záznam, který nutí posílat pakety pro celé 192.168.B.0/24 přímo;
22) směrovač najde MAC-adresu pro 192.168.B.1 a předává mu tento paket;
23) operační systém na počítači s adresou 192.168.B.1 přijímá paket od 192.168.A.1:3389 pro 192.168.B.1:55555 a iniciuje další kroky pro navázání TCP-připojení.
V tomto příkladu je stručně a zjednodušeně (a tady si lze vzpomenout na hromadu detailů) popsáno, co se děje na úrovních 2-4. Úrovně 1, 5-7 nebyly probrány.
Pozice druhá
Pokud je 192.168.B.0/24 něco odesláno právě na A.A.A.2, jde to ne do VPN, ale přímo. To znamená, že pokud uživatel z adresy 192.168.B.1 se obrací na A.A.A.2:13389, tento paket vystupuje z adresy B.B.B.1, prochází na A.A.A.2, a tam směrovač jej přijme a předá na 192.168.A.1. 192.168.A.1 neví nic o 192.168.B.1, vidí paket od B.B.B.1, protože ten ho odeslal. Proto odpověď na tento dotaz jde obecní trasou, jde to také takto z adresy A.A.A.2 a jde na B.B.B.1, a ten směrovač tuto odpověď odesílá na 192.168.B.1, ten vidí odpověď od A.A.A.2, ke které se obrátil.
Konkrétní příklad:
1) 192.168.B.1 se obrací na A.A.A.2, chce navázat TCP spojení s A.A.A.2:13389;
2) 192.168.B.1 odesílá požadavek na navázání spojení od 192.168.B.1:55555 (tohle číslo, stejně jako v předchozím příkladu, může být jiné) na A.A.A.2:13389;
3) operační systém, který pracuje na počítači s adresou 192.168.B.1, se rozhodne předat tento balíček na bránový adresu routeru (192.168.B.254 v našem případě), protože nemá jiné, specifičtější trasy pro A.A.A.2, ta ho nemá, a proto paket posílá po výchozí trase (0.0.0.0/0);
4) pro to, jak jsme zmínili v předchozím příkladu, se pokouší najít MAC-adresu pro IP-adresu 192.168.B.254 v ARP protokolové tabulce cache. Pokud není nalezena, odešle z adresy 192.168.B.1 širokospektrý who-has požadavek do sítě 192.168.B.0/24. Když 192.168.B.254 na oplátku odešle svou MAC adresu, systém předá Ethernetový balíček pro něj a uloží tuto informaci do své cache tabulky;
5) směrovač přijímá tento paket a rozhoduje, kam ho poslat: má nastavenou politiku, podle které musí posílat (nahrazující zpětnou adresu) všechny pakety od 192.168.B.0/24 na další uzly sítě Internet;
6) protože tato politika naznačuje, že návratová adresa by měla odpovídat nižší adrese na rozhraní, přes které bude tento paket odeslán, router nejprve rozhodne, komu konkrétně tento paket předat, a musí ho, jako v předchozím příkladu, odeslat na B.B.B.254 (brána internetového poskytovatele), protože nemá jiné specifičtější trasy k A.A.A.2, než 0.0.0.0/0;
7) tedy router zamění návratovou adresu paketu, od teď paket od B.B.B.1:44444 číslo portu může být samozřejmě jiné) na A.A.A.2:13389;
8) router si zapamatuje, co udělal, takže když od A.A.A.2:13389 k B.B.B.1:44444 přijde odpověď, bude vědět, že by měl změnit adresu a port příjemce na 192.168.B.1:55555.
9) nyní musí router předat paket k síti internetového poskytovatele přes B.B.B.254, a proto, stejně jako jsme již zmínili, najde MAC adresu pro B.B.B.254 a předá balíček bráně internetového poskytovatele;
10) internetoví poskytovatelé předávají přes své sítě paket od B.B.B.1 na A.A.A.2;
11) virtuální router na A.A.A.2 přijímá tento paket na portu 13389;
12) na virtuálním routeru je pravidlo, které říká, že pakety, které přišly od jakéhokoli odesílatele na tento port, by měly být předány na 192.168.A.1:3389;
13) virtuální router najde v směrovací tabulce síť 192.168.A.0/24 a odešle ho přímo 192.168.A.1, protože má rozhraní 192.168.A.254/24;
14) pro to virtuální router najde MAC adresu pro 192.168.A.1 a předává mu tento balíček přes virtuální Ethernetovou síť;
15) 192.168.A.1 obdrží tento balíček na portu 3389, souhlasí s navázáním spojení a formuluje balíček v odpověď od 192.168.A.1:3389 na B.B.B.1:44444;
16) jeho systém předává tento paket na bránový adresu virtuálního routeru (192.168.A.254 v našem případě), protože nemá jiné, specifičtější trasy pro B.B.B.1, nemá, proto musí předat balíček podle výchozí trasy (0.0.0.0/0);
17) stejně jako v předchozích případech, systém, který pracuje na serveru s adresou 192.168.A.1, nalezne MAC-adres 192.168.A.254, protože se nachází v jedné síti s jejím rozhraním 192.168.A.1/24;
18) virtuální router přijímá tento paket. Je třeba poznamenat, že si pamatuje, že obdržel na A.A.A.2:13389 paket od B.B.B.1:44444 a změnil mu adresu a port příjemce na 192.168.A.1:3389, takže paketu od 192.168.A.1:3389 pro B.B.B.1:44444 změňuje adresu odesílatele na A.A.A.2:13389;
19) virtuální router rozhoduje, komu předat tento paket, odesílá ho na A.A.A.254 (brána internetového poskytovatele, v tomto případě jsme to také my), protože neexistují konkrétnější trasy k B.B.B.1, než 0.0.0.0/0;
20) internetoví poskytovatelé předávají přes své sítě paket s A.A.A.2 na B.B.B.1;
21) router na B.B.B.1 přijímá tento paket a vzpomíná, že když předával paket od 192.168.B.1:55555 pro A.A.A.2:13389, změnil jeho adresu a port odesílatele na B.B.B.1:44444, takže je to odpověď, kterou je třeba předat na 192.168.B.1:55555 (ve skutečnosti existuje ještě několik dalších kontrol, ale nezabíháme do toho);
22) chápe, že by měl být předán přímo na 192.168.B.1, protože se nachází ve stejné síti, proto má ve směrovací tabulce odpovídající záznam, který přikazuje odesílat pakety pro celou 192.168.B.0/24 přímo;
23) směrovač nalezne MAC adresu pro 192.168.B.1 a předává mu tento paket;
24) operační systém na počítači s adresou 192.168.B.1 přijímá paket od A.A.A.2:13389 pro 192.168.B.1:55555 a iniciuje další kroky pro navázání TCP-připojení.
Je třeba poznamenat, že v tomto případě počítač s adresou 192.168.B.1 nic neví o serveru s adresou 192.168.A.1, komunikuje pouze s A.A.A.2. Stejně tak server s adresou 192.168.A.1 nic neví o počítači s adresou 192.168.B.1. Myslí si, že se k němu připojili z adresy B.B.B.1, a víc než to, tak říkajíc, neví.
Také stojí za zmínku, že v případě, že tento počítač se obrací na A.A.A.2:1540, spojení nebude navázáno, protože přesměrování spojení na port 1540 není nakonfigurováno na virtuálním směrovači, i když na nějakých serverech ve virtuální síti 192.168.A.0/24 (například na serveru s adresou 192.168.A.1) a existují nějaké služby, které čekají na spojení na tomto portu. Pokud uživateli počítače s adresou 192.168.B.1 extrémně záleží na tom, aby navázal spojení s touto službou, musí použít VPN, tedy se obrátit přímo na 192.168.A.1:1540.
Je třeba zdůraznit, že veškeré pokusy navázat spojení s A.A.A.1 kromě IPSec spojení ze strany B.B.B.1 nebudou úspěšné. Jakékoliv pokusy navázat spojení s A.A.A.2, kromě spojení na port 13389, také nebudou úspěšné.
Také si povšimneme, že v případě, že se na A.A.A.2 obrátí někdo jiný (například C.C.C.C), budou se veškeré body 10-20 vztahovat i na něj. Co se děje před tím a po tom závisí na tom, co přesně se nachází za tímto C.C.C.C. Tuto informaci nevlastníme, proto doporučujeme obrátit se na administrátory uzlu s adresou C.C.C.C.
Poloha třetí
A naopak, pokud se z 192.168.A.1 odesílá něco na nějaký port, který je nakonfigurován pro přesměrování dovnitř na B.B.B.1 (například 11111), také to nedosáhne VPN, ale prostě se přesune od A.A.A.1 a dopadne na B.B.B.1, a ten už to předává někam, řekněme, 192.168.B.2:3389. Ten vidí tento paket ne od 192.168.A.1, ale od A.A.A.1. A když 192.168.B.2 odpovídá, paket přichází od B.B.B.1 na A.A.A.1, a později se dostává k iniciátorovi spojení — 192.168.A.1.
Konkrétní příklad:
1) 192.168.A.1 se obrací na B.B.B.1, chce navázat TCP spojení s B.B.B.1:11111;
2) 192.168.A.1 odesílá požadavek na navázání spojení od 192.168.A.1:55555 (tohle číslo, stejně jako v předchozím příkladu, může být jiné) na B.B.B.1:11111;
3) operační systém, který běží na serveru s adresou 192.168.A.1, se rozhodne předat tento balíček na bránový adresu routeru (192.168.A.254 v našem případě), protože nemá jiné, specifičtější trasy pro B.B.B.1, proto předává balíček podle výchozí trasy (0.0.0.0/0);
4) za tímto účelem se, jak již bylo zmíněno v předchozích příkladech, snaží najít MAC adresu pro IP adresu 192.168.A.254 v ARP protokolové tabulce cache. Pokud není nalezena, odešle z adresy 192.168.A.1 širokospektrý who-has požadavek do sítě 192.168.A.0/24. Když 192.168.A.254 v odpověď posílá svůj MAC adresu, systém předává Ethernetový paket pro něj a ukládá tuto informaci do své cache tabulky;
5) virtuální směrovač přijímá tento paket a rozhoduje, kam ho předat: má definovánu politiku, podle které musí (s nahrazením zpětné adresy) všechny pakety od 192.168.A.0/24 na další uzly sítě Internet;
6) protože tato politika předpokládá, že zpětná adresa by měla odpovídat nižší adrese na rozhraní, přes které bude paket odeslán, virtuální směrovač nejprve rozhoduje, komu tento paket přesně předat, a on, jak jsme již zmínili v předchozím příkladu, musí poslat na A.A.A.254 (brána internetového poskytovatele, v tomto případě jsme to také my), protože neexistují konkrétnější trasy k B.B.B.1, než 0.0.0.0/0;
7) tudíž virtuální směrovač mění zpětnou adresu paketu, od této chvíle to je paket od A.A.A.1:44444 číslo portu může být samozřejmě jiné) na B.B.B.1:11111;
8) virtuální směrovač si zapamatuje, co udělal, a tudíž, když od B.B.B.1:11111 pro A.A.A.1:44444 přijde odpověď, bude vědět, že by měl změnit adresu a port příjemce na 192.168.A.1:55555.
9) nyní virtuální směrovač musí předat do sítě internetového poskytovatele přes A.A.A.254, tedy přesně tak, jak jsme již zmínili, najde MAC adresu pro A.A.A.254 a předá balíček bráně internetového poskytovatele;
10) internetoví poskytovatelé předávají přes své sítě paket od A.A.A.1 na B.B.B.1;
11) směrovač na B.B.B.1 přijímá tento paket na portu 11111;
12) na virtuálním směrovači existuje pravidlo, které předpokládá, že pakety, které přichází od jakéhokoliv odesílatele na tento port, by měly být odeslány na 192.168.B.2:3389;
13) směrovač najde v směrovací tabulce síť 192.168.B.0/24 a odešle ho přímo k 192.168.B.2, protože má rozhraní 192.168.B.254/24;
14) pro to virtuální router najde MAC adresu pro 192.168.B.2 a předává mu tento balíček přes virtuální Ethernetovou síť;
15) 192.168.B.2 obdrží tento balíček na portu 3389, souhlasí s navázáním spojení a formuluje balíček v odpověď od 192.168.B.2:3389 na A.A.A.1:44444;
16) jeho systém přenáší tento paket na bránovou adresu směrovače (192.168.B.254 v našem případě), protože nemá jiné, specifičtější trasy pro A.A.A.1, nemá, proto musí předat balíček podle výchozí trasy (0.0.0.0/0);
17) přesně tak, jak tomu bylo v předchozích případech, systém, který běží na počítači s adresou 192.168.B.2, nalezne MAC-adres 192.168.B.254, protože se nachází v jedné síti s jejím rozhraním 192.168.B.2/24;
18) směrovač tento paket přijímá. Je třeba poznamenat, že si pamatuje, že dostal na B.B.B.1:11111 paket od A.A.A.1 a změnil mu adresu a port příjemce na 192.168.B.2:3389, takže paketu od 192.168.B.2:3389 pro A.A.A.1:44444 změňuje adresu odesílatele na B.B.B.1:11111;
19) směrovač rozhoduje, komu tento paket předat. Odesílá ho na, dejme tomu, B.B.B.254 (brána internetového poskytovatele, jejíž přesnou adresu neznáme), protože neexistují žádné specifičtější trasy k A.A.A.1, než 0.0.0.0/0;
20) internetoví poskytovatelé předávají přes své sítě paket s B.B.B.1 na A.A.A.1;
21) virtuální směrovač na A.A.A.1 přijímá tento paket a vzpomíná, že když předával paket od 192.168.A.1:55555 pro B.B.B.1:11111, změnil jeho adresu a port odesílatele na A.A.A.1:44444. Takže, to je odpověď, kterou je nutné předat na 192.168.A.1:55555 (ve skutečnosti, jak jsme zmínili v předchozím příkladu, existuje tam ještě několik kontrol, ale tentokrát se do nich nezapojíme);
22) chápe, že by měl být předán přímo na 192.168.A.1, protože se nachází ve stejné síti, tedy má v směrovací tabulce příslušný záznam, který jej nutí odesílat pakety pro celý 192.168.A.0/24 přímo;
23) směrovač nalezne MAC adresu pro 192.168.A.1 a předává mu tento paket;
24) operační systém na serveru s adresou 192.168.A.1 přijímá paket od B.B.B.1:11111 pro 192.168.A.1:55555 a iniciuje další kroky pro navázání TCP-připojení.
Stejně jako v předchozím případě, v tomto případě server s adresou 192.168.A.1 nic neví o počítači s adresou 192.168.B.1, komunikuje pouze s B.B.B.1. Počítač s adresou 192.168.B.1 také nic neví o serveru s adresou 192.168.A.1. Myslí si, že se k němu připojili z adresy A.A.A.1, a zbytek je skryt.
Výstup
Takto to probíhá při připojeních uvnitř VPN tunelu mezi kanceláří klienta a cloudovým prostředím, stejně jako při připojeních mimo VPN tunel. Pokud máte další otázky nebo potřebujete naši pomoc s cloudovými úkoly,
Zdroj: habr.com
