Puncte:0

De ce nu funcționează configurația mea de rutare a politicilor?

drapel br

Am o mașină EC2 care rulează Ubuntu 20.04 cu 2 interfețe ethernet. Ambele sunt conectate la aceeași subrețea și ambele sunt accesibile din exterior. Am creat 2 tabele de rute personalizate, unul pentru fiecare interfață și ambele conținând doar intrările de rută pentru mașina în sine, subrețeaua imediată și un gateway implicit prin interfața corespunzătoare. Pot adăuga o regulă pentru ca tot traficul să folosească oricare dintre tabelele de rute personalizate și funcționează: mașina va folosi interfața specificată și adresa IP corespunzătoare pentru comunicația de ieșire. Cu toate acestea, dacă adaug reguli pentru a utiliza oricare tabel de rute personalizat bazat pe marcajele pachetelor pe care le aplic prin iptables, totul nu mai funcționează și niciun trafic nu părăsește mașina mea.

Iată principalele biți ale configurației relevante:

$ sudo ip route
10.0.11.0/24 dev ens6 proto kernel scope link src 10.0.11.52
10.0.11.0/24 dev ens5 proto kernel scope link src 10.0.11.201

$ sudo ip route show table if1
implicit prin 10.0.11.1 dev ens5 proto metric static 100
10.0.11.0/24 dev ens5 proto static scope link src 10.0.11.52
10.0.11.201 dev ens5 proto static scope link metric 100

$ sudo ip route show table if2
implicit prin 10.0.11.1 dev ens6 proto metric static 200
10.0.11.0/24 dev ens6 proto static scope link src 10.0.11.201
10.0.11.52 dev ens6 proto static scope link metric 200

regula $ ip
0: din toate căutările locale
46: din toate căutările fwmark 0x3 if1
47: din toate căutările fwmark 0x2 if2
50: din 10.0.11.201 căutare dacă1
100: din 10.0.11.52 căutare dacă2
32766: din toate căutările principale
32767: din toate căutările implicite

$ sudo iptables -S -t mangle
-P PREROUTING ACCEPT
-P ACCEPT INTRARE
-P ACCEPTAȚI ÎN ÎNTÂND
-P ACCEPT IEȘIRE
-P POSTOUTING ACCEPT
-A OUTPUT -m proprietar --uid-owner 1002 -j MARK --set-xmark 0x3/0xffffffff
-A OUTPUT -m proprietar --uid-owner 1003 -j MARK --set-xmark 0x2/0xffffffff

Scopul meu este să direcționez traficul de la utilizatorul cu uid 1002 prin interfața ens5 (if1) și traficul de la utilizatorul cu uid 1003 prin ens6 (if2), dar fac ceva greșit undeva și mă înnebunește... Văd că pachetele marcate sunt tratate diferit, așa că ceva se întâmplă. Dacă atribui o rută implicită tabelului principal de rutare și apoi doar marchez traficul pentru uid 1002, toți utilizatorii pot face conexiuni de ieșire, cu excepția uid 1002. Deci știu că marcarea funcționează, știu că pachetele marcate sunt direcționate diferit și îmi cunosc personalitatea tabelele de rute funcționează, dar undeva în această constelație există o eroare și nu o găsesc. Orice ajutor ar fi foarte apreciat în acest moment!

--Editați | ×--

Am ajuns la asta bazându-mi configurația pe abordarea prezentată aici: Încercarea de a direcționa cererile http de ieșire prin VPN pe Ubuntu Server 12.04 și unele personalizări, deoarece nu vreau să direcționez traficul în funcție de porturi specifice, ci de uid-ul de origine.

drapel br
Am găsit o soluție la problema mea făcând-o altfel. În loc să marchez pachetele cu iptables și apoi să folosesc regulile ip pentru a activa diferite tabele de rutare, așa cum este descris mai sus, am renunțat complet la iptables și am pus această declarație în regulile ip: ``sudo ip rule add uidrange 1000-1000 lookup if1`` și ``sudo ip rule add uidrange 1001-1004 lookup if2`` funcționează ca un farmec! :) Încă sunt interesat să aflu de ce exemplul meu anterior nu a funcționat...

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.