Puncte:0

Cel mai bun mod de a direcționa traficul pe baza utilizatorului conectat printr-o anumită rută redundantă?

drapel br

Am o mașină Ubuntu 20.04 cu 2 interfețe ethernet cu câte 2 adrese IP fiecare. Este o instanță AWS EC2 și fiecare dintre cele 4 adrese IP are atașat un EIP prin NAT.Ambele interfețe se conectează la aceeași subrețea internă. Configurația arată astfel:

Mașină EC2:

- eni1:

  • privat-IP1 -> public-IP1
  • privat-IP2 -> public-IP2

- eni2:

  • privat-IP3 -> public-IP3
  • privat-IP4 -> public-IP4

Toate cele 4 adrese sunt accesibile din exterior, așa că pare să fie totul în regulă. Cu toate acestea, pentru traficul de ieșire, în prezent, se folosește întotdeauna IP1 privat (și, prin urmare, IP1 public). Vreau să precizez că utilizatorii individuali SSH folosesc adrese IP specifice, astfel încât vor veni de la IP-ul public corespunzător atunci când vorbesc cu serviciile de pe internet, de exemplu.

utilizator1 -> privat-IP1

user2 -> privat-IP2

user3 -> privat-IP3

user4 -> privat-IP4

Care este cel mai bun mod de a obține acest rezultat?

Zac67 avatar
drapel ru
Există vreo șansă să rulați 802.1X? Puteți atribui adrese IP pe baza autentificării RADIUS.
drapel br
hmm, cred că ar fi o opțiune. Nu a mai lucrat niciodată cu autentificarea RADIUS. Sunteți la curent cu orice resurse pe care le-aș putea verifica pentru a începe acest lucru?
Zac67 avatar
drapel ru
Nu, îmi pare rău - solicitările de resurse sunt oricum în afara subiectului aici. Ar trebui să explorați ce opțiuni aveți un EC2. În timp ce un server RADIUS ar putea fi adăugat cu ușurință, 802.1X trebuie să fie furnizat de cloud (cu excepția cazului în care puneți un strat complet de virtualizare deasupra).
Puncte:1
drapel bd

Cel mai bun mod de a realiza acest lucru ar fi clonarea instanței EC2 în patru instanțe, atribuirea fiecărei clone de o adresă IP și lăsați fiecare utilizator să folosească numai mașina care are adresa IP pe care ar trebui să o folosească.

drapel br
O abordare interesantă, dar nu ceea ce caut. Plănuiesc să extind acest lucru la mai multe IP-uri pe termen lung și implementarea unei flote de instanțe doar în acest scop pare irositoare și va crea o mulțime de cheltuieli de întreținere.
Tilman Schmidt avatar
drapel bd
Ne pare rău, toate celelalte soluții la care mă pot gândi vor crea și mai multe cheltuieli de întreținere.
drapel br
Dar trebuie să existe o modalitate de a spune unui nucleu Linux să folosească diferitele rute pe care le are la dispoziție. Funcționează pentru traficul care trece prin cutie, de ce nu ar trebui să funcționeze pentru traficul care provine din cutie?
Tilman Schmidt avatar
drapel bd
Bineînțeles că există. Dificultatea este de a face acea decizie de rutare dependentă de ID-ul utilizatorului. Traficul în sine nu conține informații despre utilizatorul care l-a inițiat. Mai simplu spus, va trebui să creați *și să mențineți* un mecanism pentru a mapa UID-urile la adresele IP sursă *și* să spuneți stivei de rețea să-l folosească în locul mecanismului său obișnuit independent de utilizator. Din nou, crearea unei instanțe separate pentru fiecare utilizator este de departe cea mai ușoară modalitate de a realiza acest lucru.
drapel br
hmmm. Am încercat să folosesc -m proprietar în iptables pentru a potrivi traficul cu utilizatorul, a marca pachetele și apoi a folosi regulile IP pentru a le mapa la un anumit tabel de rutare.Din păcate, nu funcționează, așa că am căutat alternative... Încă cred că trebuie să fie posibil sau că trebuie să existe o soluție. Pur si simplu nu pot sa-mi dau seama...
drapel br
Am rezolvat în sfârșit printr-o soluție. Mulțumesc totuși pentru gânduri!
Puncte:1
drapel br

În cele din urmă, am rezolvat asta și eu după ce am turnat multe ore în asta. În cele din urmă, am făcut-o să funcționeze adăugând o regulă ip ca:

sudo ip rule add uidrange 1000-1001 lookup if1
sudo ip rule add uidrange 1002-1004 lookup if2

și apoi adăugați reguli de postrouting iptables ca aceasta:

$ sudo iptables -S -t nat
-P PREROUTING ACCEPT
-P ACCEPT INTRARE
-P ACCEPT IEȘIRE
-P POSTOUTING ACCEPT
-A POSTROUTING -o interface1 -m owner --uid-owner 1000 -j SNAT --to-source IP1
-A POSTROUTING -o interface1 -m owner --uid-owner 1001 -j SNAT --to-source IP2
-A POSTROUTING -o interface2 -m owner --uid-owner 1002 -j SNAT --to-source IP3
-A POSTROUTING -o interface2 -m owner --uid-owner 1003 -j SNAT --to-source IP3

cu if1 și if2 fiind tabelele mele personalizate de rute care conțin rutele implicite corespunzătoare. Lucrează bine! Poate că acest lucru poate fi util pentru cineva în viitor :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.