Squid – conexiuni cu diferite adrese sursa

Presupunem situația în care avem 4 adrese IPv4 alocate unei mașini pe care rulează squid (bineînțeles că sub freeBSD) și dorim ca cererile inițiate de serviciul de proxy să fie inițiate prin rotație folosind aceste adrese.
Comportamentul configurat în mod frecvent este de a inițîa conexiuni folosind adresa IP configurată în fișierul de configurare în dreptul directivei tcp_outgoing_address. De exemplu:

tcp_outgoing_address 192.168.200.9

Pentru a putea folosi și celelalte adrese IP nu este suficient să adăugăm mai multe linii cu directiva tcp_outgoing_address. Nu va funcționa!

Soluția este să definim un ACL nou, să îi spunem bere_rece (asta beau eu acum), ACL pe care il facem de tipul random:

acl bere_rece random 0.25

Atențîe: trebuie să aveți o versiune de squid mai mare de 3.2 (în nici un caz nu va funcționa cu 2.x).

Despre acest tip manualul spune că acceptă o singură valoare, valoare care poate fi scrisă în diferite formate:

  • A:B
  • A/B
  • 0.NNNN

Rețineți că primele două formate sunt convertite în mod automat în formatul zecimal (al treilea) – ele există doar pentru a ușura configurarea. Discutăm deci doar despre al treilea format. Acesta indică o potrivire aleatoare a oricărei cereri cu o probabilitate de 0.NNNN. Întervalul de definire este (0,1) – deci fără valorile zero și unu pentru cei care au uitat notațiile de bază.

Așadar, avem declarat ACL-ul bere_rece cu o probabilitate de potrivire de 0.25.

Ce facem cu acest ACL? Păi… îl aplicăm directivei de configurare tcp_outgoing_address:

tcp_outgoing_address 192.168.200.9 bere_rece
tcp_outgoing_address 192.168.200.10 bere_rece
tcp_outgoing_address 192.168.200.11 bere_rece
tcp_outgoing_address 192.168.200.12

Simplu, nu? Ce nu este „prins” de primele trei va fi „tratat” cu siguranță de ultima.

Sper că cei interesați au înțeles, mai simplu de atât nu puteam explica.

Bonus, un exemplu minimal dar în același timp  funcțional pentru squid.conf:

acl bogdan src 192.168.201.30
acl bere_rece random 0.25
http_access allow bogdan
http_port 3128
tcp_outgoing_address 192.168.200.9 bere_rece
tcp_outgoing_address 192.168.200.10 bere_rece
tcp_outgoing_address 192.168.200.11 bere_rece
tcp_outgoing_address 192.168.200.12

Atenție la primul ACL, este definit IP căruia îi este permis accesul (modificați după nevoi).

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.