ProxyChains-NG non crea un túnel. Precarga unha biblioteca que substitúe as chamadas libc relacionadas coa rede dentro do único programa que lanza, así que o límite é unha chamada dentro dun proceso, non unha ruta para todo o dispositivo. Esa distinción decide que demostra en realidade unha proba correcta. Un curl que funciona a través da cadea confirma unha soa chamada enganchada, non que a resolución de nomes, UDP ou cada proceso fillo seguisen o mesmo camiño. A guía seguinte verifica a cobertura en tres pasos e despois enumera que non pode acadar o enganche.

Como chega a precarga ata unha conexión

Ao arrancar, o lanzador coloca libproxychains dentro de LD_PRELOAD e despois executa o programa obxectivo. A biblioteca resolve os símbolos reais de libc e substitúeos polas súas propias versións de funcións como connect e getaddrinfo. As chamadas que pasan por eses símbolos reescríbense cara ao proxy SOCKS ou HTTP do ficheiro de configuración. As chamadas que toman outra ruta nunca atopan o enganche, e por iso a garantía é por chamada e non por máquina.

Só participan os programas ligados dinamicamente, e os binarios setuid baixo execución segura ignoran por completo a precarga. Os fillos herdan o ambiente, pero só mentres o lanzador o mantén no seu sitio.

Confirme que a biblioteca está cargada nese proceso

Inicie a petición e inspeccione o proceso vivo en lugar da consola que o lanzou. O ficheiro maps mostra cada obxecto compartido que está mapeado no proceso nese momento.

proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/maps

Unha coincidencia confirma que a biblioteca enganchada está presente, o cal é necesario pero non suficiente. Un resultado baleiro adoita significar que inspeccionou outro proceso, por exemplo un navegador que entregou o URL a unha instancia iniciada antes do lanzador. Comprobe con ldd que o binario está ligado dinamicamente antes de perseguir calquera outra cousa, porque unha compilación estática non pode cargar a precarga en absoluto. Despois lea a lista de proxies da configuración que o lanzador usou de verdade, xa que unha ruta obsoleta ou un porto pechado producen un enganche que funciona sen unha cadea que funcione.

Rastree as conexións que saen do proceso

A presenza da biblioteca non demostra que cada chamada se reescribise, así que siga as chamadas ao sistema. Execute unha petición baixo o rastrexador e lea onde foron realmente os sockets.

strace -f -e trace=connect -o /tmp/pc.trace proxychains4 -q curl -sS https://example.com/ -o /dev/null
grep -o "sin_port=htons([0-9]*)" /tmp/pc.trace | sort -u

O rastro debería mostrar só conexións cara ao seu extremo de proxy, co porto que coincida coa entrada do ficheiro de configuración. Se os enderezos de destino do sitio obxectivo aparecen directamente no rastro, esa chamada eludiu o enganche, e ese é xusto o achado que buscaba. Compare os números de porto coa lista de proxies en lugar de confiar no nome do ficheiro, porque unha configuración sobrante doutro proxecto é unha fonte habitual de acceso directo silencioso. Garde o rastro para o rexistro de aceptación; tarda segundos e zanja discusións sobre a cobertura.

Decida que non pode cubrir o enganche

O proxecto proxychains-ng limita a redirección a TCP e avisa de que os scripts, os procesos en segundo plano e os módulos cargados poden comportarse de forma distinta ao programa principal. UDP e ICMP quedan fóra do mecanismo, así que todo o que dependa deles necesita a súa propia ruta admitida. DNS segue o axuste proxy_dns e o comportamento propio do resolutor da aplicación, o que significa que unha petición HTTPS correcta non lle di nada sobre a resolución de nomes. Manteña tamén a validación de certificados onde corresponde: chegar a un servidor a través dun proxy non é motivo para desactivar as comprobacións de identidade.

Se o retroceso directo debe ser imposible, use unha fronteira de aplicación que controle o tráfico mesmo, como un espazo de nomes de rede, regras de devasas ou unha VPN, e mantéñaa separada do enganche de biblioteca. O enganche é unha ferramenta de compatibilidade para un programa concreto, non un kill switch. Anote o programa, o comando exacto, o porto de proxy visto no rastro e se DNS se resolveu de forma remota; eses catro feitos son a diferenza entre un alcance verificado e un alcance de esperanza.

Artigos relacionados