S'aixeca un túnel, el client pot fer ping a la passarel·la i cada sol·licitud web que passa pel camí del proxy mor. El procés redsocks s'executa i el seu port escolta, així que el servei sembla sa des de la mateixa passarel·la. El que falla és el pas de lliurament: un paquet redirigit des del túnel no aterra al sòcol que has iniciat. L'adreça d'enllaç i l'objectiu de redirecció han de coincidir, i normalment només se'n comprova un.

On aterra realment un paquet redirigit

El proxy transparent a una passarel·la fa servir REDIRECT a la taula nat a PREROUTING per reescriure la destinació d'una connexió entrant cap a un port local. La destinació reescrita és una adreça local tal com la veu la interfície per la qual ha arribat el paquet, no l'adreça de loopback d'un procés iniciat en un altre lloc. Un oient enllaçat només a 127.0.0.1 accepta connexions que ja eren locals a l'amfitrió, i aquest és exactament el cas que continua funcionant mentre el trànsit del túnel falla. El loopback propi del client és una tercera adreça i mai no és l'objectiu de la regla de la passarel·la.

Per tant, abans de tocar les credencials del tram superior, estableix dos fets: a quina adreça local reescriu la regla i a quina adreça està enllaçat el sòcol del proxy.

Llegeix l'oient i la regla de redirecció alhora

Imprimeix la taula de sòcols i les regles nat en una sola passada, perquè una regla que apunta a un port que ningú posseeix sembla idèntica a una regla que apunta a l'adreça equivocada. sudo ss -ltnp | grep redsocks mostra l'adreça d'enllaç i el procés propietari. sudo iptables -t nat -S PREROUTING mostra l'objectiu REDIRECT, i sudo iptables -t nat -L PREROUTING -v -n mostra si alguna cosa hi ha coincidit.

Un salt a una cadena d'usuari anomenada REDSOCKS no aconsegueix res tret que aquesta cadena existeixi i porti les exclusions previstes i l'acció REDIRECT. Llegeix la cadena a la qual salta amb sudo iptables -t nat -S REDSOCKS en lloc de suposar que el nom fa la feina.

Després compara els dos valors. Si la regla redirigeix a una adreça de passarel·la al port 12345 i l'oient informa de 127.0.0.1:12345, la discrepància explica la fallada sense cap diagnòstic addicional.

Enllaça estretament i després limita què hi pot arribar

La configuració d'exemple del tram superior posa l'oient al loopback per una bona raó: un proxy transparent accepta connexions en nom de qui el pugui assolir. Canviar l'enllaç a 0.0.0.0 corregeix el lliurament i alhora obre el port a totes les interfícies, cosa que és un canvi de seguretat, no una reparació neutra. Prefereix enllaçar a l'adreça local concreta que la redirecció té com a objectiu, i mantingues el port tancat a les interfícies no fiables. Si un enllaç més ampli és inevitable, afegeix una regla de tallafocs de l'amfitrió que permeti només el rang d'origen del túnel i el trànsit local propi de la passarel·la.

Obrir el port a la interfície pública no és mai necessari per al trànsit VPN redirigit, perquè la connexió acaba localment després de la reescriptura. No exposis el proxy a internet per fer funcionar una redirecció local.

Demostra-ho amb una connexió nova des d'un client

Prova-ho des d'un client VPN real amb una connexió TCP nova, no des d'un shell a la passarel·la. curl -sS -o /dev/null -w '%{http_code}\n' http://example.com al client exerceix el camí redirigit de punta a punta.

Després confirma que una connexió directa a l'oient des d'una xarxa no fiable encara es rebutja, i que la connexió ascendent del propi proxy no torna a ser capturada per la mateixa regla. La captura recursiva es manifesta com un proxy que es connecta a si mateix i no completa mai cap sol·licitud. Afegeix la destinació del proxy al conjunt d'exclusions, o marca els seus paquets sortints perquè la cadena els ometi.

Finalment, recorda què no cobreix aquest camí. La redirecció TCP normal de redsocks no converteix UDP, QUIC o DNS en trànsit SOCKS, i les destinacions privades solen necessitar exclusions explícites. Una prova local reeixida només demostra el camí de loopback que mai no va ser el problema.

Articles relacionats