TLDR; Rezumat
Poate un grup de VM, fiecare cu propria sa adresă IPv4 publică, să fie organizat astfel încât să imite starea într-o subrețea privată și, dacă da, cum pot conecta acele servere la restul rețelei mele?
Configurație curentă
10.0.0.0/24 AWS Oregon - public
10.1.0.0/24 AWS Oregon - privat
10.52.5.0/24 Acasă, San Diego
10.62.5.0/24 Acasă, Las Vegas
Rețeaua publică AWS are un server OpenVPN. Atât San Diego, cât și Las Vegas au fiecare proprii clienți OpenVPN dedicati care se conectează la acel server AWS.
Prin utilizarea acestei configurații VPN punct la punct, orice VM din rețeaua mea poate vorbi cu orice alt VM fără interferențe NAT. Totul funcționează impecabil.
Problemă
Mi s-a cerut să demonstrez că o aplicație web pe care am proiectat-o, care rulează în prezent la AWS Oregon, poate fi rulată la fel de bine în afara ecosistemului AWS.
— Nicio problemă, spun eu. Așa că închiriez cinci servere de la un furnizor elvețian și mă pregătesc să mă alătur la rețeaua mea.
Bănuiesc că presupunerea mea a fost că SwissVendor mi-ar furniza cinci servere și le va plasa într-o rețea internă la alegerea mea (de exemplu, 10.72.5.0/24, gw:.1) și poate îmi va oferi un IP public (adică „elastic?”) să-mi forez drumul din exterior. Apoi aș alege unul dintre cele cinci servere pentru a fi clientul meu OpenVPN, l-aș îndrepta către serverul meu AWS Oregon OpenVPN și, boom, serverele elvețiene sunt acum accesibile de oriunde din rețeaua mea.
Din păcate pentru mine, însă, lucrurile nu funcționează așa la SwissVendor. În schimb, fiecare dintre cele cinci servere are propria sa adresă IP publică și, în plus, nu există nicio garanție că aceste adrese IP sunt chiar pe aceeași subrețea. Așa că am ajuns cu ceva de genul:
Server 1: 11.11.11.11/24
Server 2: 22.22.22.22/24
Server 3: 33.33.33.33/24
Server 4: 44.44.44.44/24
Server 5: 55.55.55.55/24
Portul RDP 3389 este deschis lumii pe fiecare server, permițând accesul clientului printr-o parolă administrativă pre-partajată. Toate celelalte conexiuni de intrare sunt blocate de firewall-ul serverului, care este activat în mod implicit. Pur și simplu, acesta este modul în care SwissVendor își pune la dispoziție serverele clienților ca mine. Nu pot schimba asta.
Scopul meu
Aici lucrurile devin dificil de descris, deoarece sunt un hobbyist, nu un profesionist. În lumea mea ideală:
- Fiecare dintre serverele elvețiene, pe lângă faptul că are propria lor adresă publică reală, ar avea și un fel de NIC sintetică/virtuală pe o rețea internă 10.72.5.0/24.
- Serverele ar putea comunica între ele la viteză mare, cu o latență practic zero. [Puteți presupune că fiecare dintre serverele elvețiene locuiește în același cabinet fizic și, într-adevăr, poate trăi pe aceeași piesă fizică de hardware!]
- Unul dintre servere ar acționa ca un client OpenVPN, conectat la serverul meu AWS OpenVPN, care ar trage efectiv 10.72.5.0/24 în rețeaua mea, făcând fiecare dintre aceste servere accesibil pentru restul rețelei mele, dar nu și pentru Internet, și fără interferențe NAT.
Nu-mi dau seama cum să rezolv asta sau dacă este chiar posibil. Iată două abordări pe care le-am luat în considerare, dar în cele din urmă le-am exclus:
Ideea eșuată #1: Fiecare server acționează ca client OpenVPN
Aș putea abandona ideea de a avea un client dedicat OpenVPN în rețeaua elvețiană. În schimb, fiecare server elvețian ar rula propriul client OpenVPN, oferind fiecăruia propria sa adresă IP suplimentară. Deci, pe lângă adresa IP publică, fiecare server ar avea și un IP virtual, probabil pe linia 10.8.0.0/24.
Acest lucru ar funcționa în măsura în care serverele elvețiene ar fi capabile să comunice între ele, precum și cu restul rețelei mele.
Problema este că pentru ca un pachet să ajungă de la SwissServer1 la SwissServer2, ar trebui să călătorească până în Oregon și înapoi -- extrem de ineficient, având în vedere că atât SwissServer1, cât și SwissServer2 trăiesc pe aceeași mașină fizică. Amintiți-vă că am nevoie de comunicații rapide cu latență scăzută între serverele elvețiene.
Ideea eșuată #2: serverele elvețiene comunică folosind adresele lor publice
Aș putea pur și simplu să permit serverelor elvețiene să comunice între ele folosind adresele IP publice respective. Acest lucru ar rezolva cu siguranță problema latenței.
Principala problemă pe care o prevăd cu această abordare este că, deoarece IP-ul fiecărui server elvețian este public și, prin urmare, expus la Internet, ar trebui să fiu cu adevărat atent în configurarea regulilor firewall-ului fiecărui server. Dacă SwissServer1 dorește să utilizeze partajarea fișierelor cu SwissServer2, de exemplu, ar trebui să știu exact ce porturi sunt folosite pentru a facilita acest lucru și să deschid doar acele porturi și numai pentru SwissServer1. Dacă fac o mică greșeală, s-ar putea să ajung să expun serviciul de partajare a fișierelor la internetul public.
Există, de asemenea, problema cum să conectez aceste mașini la restul rețelei mele într-un mod curat. Așa că văd și această abordare ca un non-începător.
Unde de aici?
L-am cercetat și nu prea îmi dau seama care este abordarea corectă. Cred că ceea ce aș putea căuta este ceva numit „punte” și cred că OpenVPN ar putea sprijini acest lucru, dar nu sunt sigur. După cum am înțeles din cercetările mele extinse pe Wikipedia și Reddit, utilizarea tehnologiei bridge ar putea permite celor cinci servere elvețiene să acționeze ca și cum ar fi într-o singură rețea, cum ar fi să spunem 10.52.7.0/24, facilitând astfel comunicațiile rapide între acești colegi. . Dar atunci ce? Cum aș face 10.52.7.0/24 accesibil către/din restul rețelei mele existente?
Toate serverele rulează Windows 2019 Server sau Windows 2022 Server.
Orice sfat este apreciat!