Puncte:1

Trebuie să migrez de la iptables la nftables?

drapel ru

Am următoarele reguli iptables.

Redirecționarea pachetelor de la 1.2.3.4 și 5.6.7.8 (surse) care vin pe portul 10000 către un server extern socks5 pe 10.10.10.10:1080. IP-ul serverului este 50.50.50.50

Această schemă funcționează bine dacă cantitatea sursă nu este mare și, în același timp, cantitatea externă de șosete5 nu este prea mare. Odată ce am 50 de surse și 30.000 de șosete externe - iptables este blocat și nicio redirecționare a pachetelor, așa că bănuiesc că există o limită în performanța iptables. Poate cineva să-mi spună dacă nftables este mai puternic și, dacă da, cum să traduc regulile mele în nftables?

*nat
:ACCEPTAREA PRE-ROUTARE [1:40]
:INPUT ACCEPT [1:40]
: ACCEPT IEȘIRE [0:0]
: POSTROUTING ACCEPT [0:0]

-A PREROUTING -s 1.2.3.4,5.6.7.8 -p tcp -m tcp --dport 10000 -j DNAT --to-destination 10.10.10.10:1080
-A POSTROUTING -d 10.10.10.10/32 -p tcp -m tcp --dport 1080 -j SNAT --to-source 50.50.50.50

COMMIT

*filtru
:INPUT ACCEPT [15:1012]
: FORWARD ACCEPT [26:1348]
: ACCEPT IEȘIRE [9:932]
COMMIT
Puncte:1
drapel cl
A.B

Iată o explicație aproximativă a ceea ce poate merge prost.

  • Inainte de iptables reguli:

    X (X=2 în exemplul de pornire al OP) adrese IP sursă cu 2^16 porturi sursă posibile și 1 adresă și port de destinație:

    X * 2^16 posibile conexiuni.

  • După iptables reguli: X surse au fost strivite într-o singură sursă

    1 * 2^16 conexiuni posibile.

X * 2^16 conexiuni nu pot fi făcute pentru a se potrivi doar în 2^16 conexiuni. Coliziunea portului sursă va începe să se întâmple din ce în ce mai des și va fi rezolvată prin schimbarea portului sursă, dar găsirea unui port sursă liberă care nu se confruntă cu un alt flux va deveni din ce în ce mai dificilă: degradarea performanței începe să crească, pachetele abandonate pot chiar să înceapă să aibă loc.

S-ar întâmpla asta altfel dacă iptables au fost înlocuite cu nftables? Nu. În ambele cazuri, ele nu sunt părțile care rezolvă coliziunea. Această rezoluție se face în același backend Netfilter comun: cel nf_nat modulul kernelului, eventual repetând de mai multe ori dacă este necesar și chiar renunțând (adică: renunțarea la noul contratrack intrare și pachetul care a declanșat crearea sa provizorie).

Cauza este NAT-ul sursă făcut atunci când există o singură destinație posibilă (serverul): ar trebui evitată.

Soluții posibile:

  • nu utilizați sursa NAT. În schimb, ar trebui făcută o rutare adecvată (chiar dacă aceasta necesită multi-homing sau un tunel), astfel încât 10.10.10.10 să nu fie nevoit să vadă o singură sursă 50.50.50.50. Întrebarea nu explică de ce este necesar acest SNAT, așa că nu este posibil să detaliezi mai mult.

  • au mai multe adrese de sursă pentru a echilibra încărcarea și pentru a distribui presiunea portului sursă. Acest lucru se poate realiza cu iptables folosind statistic modul pentru a echilibra încărcarea la mai multe SNAT tinte.

Trecând la nftables este de obicei o îmbunătățire, dar pentru acest caz, aceasta nu pare a fi soluția.

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.