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
- Este aceasta o abordare acceptabilă: încercarea de a „simula” firewall-ul cu
iptables
?
- Ceea ce poate apărea această problemă este ceva specific SOCKS sau o configurație greșită în mine
iptables
?
- 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”?