Puncte:2

Demonstrați că software-ul funcționează prin SOCKS

drapel za

Introducere

Am un software Ruby care utilizează o rețea în timpul execuției sale.

Recent am primit feedback de la un utilizator care lucrează în spatele unui firewall și folosește SOCKS, acest software nu funcționează pentru el

Așa că trebuie să simulez această situație pentru a verifica care parte a software-ului meu nu respectă HTTP PROXY variabile de mediu

Ce am incercat

Am încercat să simulez acest firewall cu iptables (în interiorul dockerului):


apt-get update -y
apt-get install iptables

exportați SOCKS5_PROXY_HOST=xxx.xxx.xxx.xxx[1]
export SOCKS5_PROXY_PORT=ppp

iptables -A INTRARE -s $SOCKS5_PROXY_HOST -j ACCEPT
iptables -A IEȘIRE -d $SOCKS5_PROXY_HOST -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

env HTTP_PROXY=$SOCKS5_PROXY_HOST:$SOCKS5_PROXY_PORT ruby ​​my_script.rb

Problemă

Din anumite motive, această abordare nu funcționează și obțin:

  • Proxy CONNECT a fost anulat sau
  • Nu s-a putut conecta la portul xxx.xxx.xxx.xxx pppp: Conexiunea a expirat

Note:

  • [1] Am folosit adresa IP (nu numele domeniului) pentru ȘOSETE proxy
  • [2] Am folosit diferite proxy SOCKS publice aleatorii înainte de a aplica iptable reguli la care toate erau accesibile
  • [3] Respect API-ul Ruby Open-URI HTTP PROXY variabile de mediu https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI.html, dar poate că un cod al unei terțe părți nu.

Întrebări

  1. Este aceasta o abordare acceptabilă: încercarea de a „simula” firewall-ul cu iptables?
  2. Ceea ce poate apărea această problemă este ceva specific SOCKS sau o configurație greșită în mine iptables?
  3. Poate că există o abordare mai bună pentru a atinge același obiectiv: testarea software-ului să funcționeze numai prin proxy SOCKS, fără conexiuni „directe”?
Michael Hampton avatar
drapel cz
Se pare că nu ați scris suport pentru SOCKS în programul dvs.Nu este ceva cu care putem ajuta.
CAMOBAP avatar
drapel za
@MichaelHampton mulțumesc pentru răspuns. De fapt, Ruby respectă variabilele de mediu `HTTP[S]_PROXY` https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI.html. Și scriptul ruby ​​cu siguranță încearcă să se conecteze la proxy SOCKS pentru că în mesajul de eroare văd IP-ul proxy-ului. Am o presupunere că poate regulile lui `iptables` sunt prea restrictive
Michael Hampton avatar
drapel cz
Proxy-urile HTTP(S) sunt complet diferite de proxy-urile SOCKS. Protocolul este complet diferit, așa că nu pot fi schimbate. Este nevoie de suport special în programul dvs. pentru a vă conecta prin SOCKS, de ex. prin [SOCKSSocket class](https://ruby-doc.org/stdlib-2.6.3/libdoc/socket/rdoc/SOCKSSocket.html).
CAMOBAP avatar
drapel za
@MichaelHampton mulțumesc pentru răspuns, nu știam asta. daca vei scrie un raspuns il voi aproba. Mulțumiri
Puncte:1
drapel za

Mulțumesc mult @michael-hampton pentru comentarii.

Răspunsuri scurte la propriile mele întrebări:

  1. Această abordare funcționează perfect
  2. Problemă pe rubin latură HTTP PROXY acceptă numai proxy HTTP[S] (nu se ocupă de proxy SOCKS ca răsuci face)
  3. Probabil iptable cel mai simplu

Mai multe detalii legate de programare:

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.