Redsocks lauschtert um Loopback, awer VPN-Traffic kënnt ni un
En Nolauschterer, deen nëmmen un Loopback gebonne ass, gesäit ni Traffic, dee vum tun0 ëmgeleet gëtt. Liest d'Ëmleetungszil an de Socket-Binding, reparéiert de Binding, a test dann vun engem richtege Client.
En Tunnel kënnt erop, de Client kann de Gateway pingelen, an all Webufrou duerch de Proxy-Wee stierft. De redsocks-Prozess leeft an säi Port lauschtert, also gesäit den Déngscht gesond vum Gateway selwer aus. Wat feelt, ass de Liwwerungsschrëtt: e Pak, dee vum Tunnel ëmgeleet gëtt, landt net um Socket, deen Dir gestart hutt. D'Bindadress an d'Ëmleetungszil mussen iwwerenee stëmmen, an normalerweis gëtt just eng vun deenen zwou gepréift.
Wou en ëmgeleet Pak wierklech landt
Transparente Proxy um Gateway benotzt REDIRECT an der nat-Tabell bei PREROUTING, fir d'Destinatioun vun enger agoender Verbindung op e lokale Port ëmzeschreiwen. D'ëmgeschriwwe Destinatioun ass eng lokal Adress, wéi se d'Interface gesäit, op där de Pak ukomm ass, an net d'Loopback-Adress vun engem Prozess, deen soss anzwousch gestart gouf. En Nolauschterer, deen nëmmen un 127.0.0.1 gebonne ass, akzeptéiert Verbindungen, déi schonn lokal um Host waren, an dat ass genee de Fall, dee weider leeft, während den Tunneltraffic feelt. D'Loopback vum Client selwer ass eng drëtt Adress a si ass ni d'Zil vun der Gateway-Reegel.
Dofir, ier Dir d'Upstream-Zougangsdaten beréiert, bestëmmt zwou Tatsaachen: op wéi eng lokal Adress d'Reegel ëmschreift, an un wéi eng Adress de Proxy-Socket gebonne ass.
Liest den Nolauschterer an d'Ëmleetungsreegel zesummen
Dréckt d'Socket-Tabell an d'nat-Reegele am selwechte Pass aus, well eng Reegel, déi op e Port weist, deen keen huet, genau wéi eng Reegel ausgesäit, déi op déi falsch Adress weist. sudo ss -ltnp | grep redsocks weist d'Bindadress an de Prozess, deem se gehéiert. sudo iptables -t nat -S PREROUTING weist d'REDIRECT-Zil, an sudo iptables -t nat -L PREROUTING -v -n weist, ob eppes dozou gepasst huet.
E Sprong an eng Benotzerkette mam Numm REDSOCKS bréngt näischt, ausser déi Kette besteet an déi virgesinn Ausnamen an d'REDIRECT-Aktioun dréit. Liest d'Kette, an déi se spréngt, mat sudo iptables -t nat -S REDSOCKS, amplaz unzehuelen, den Numm géif d'Aarbecht maachen.
Vergläicht dann déi zwee Wäerter. Wann d'Reegel op eng Gateway-Adress um Port 12345 ëmleet an den Nolauschterer 127.0.0.1:12345 mëttelt, erkläert den Ënnerscheed de Feeler ouni all weider Diagnos.
Bindt enk, a begrenzt dann, wat et erreeche kann
D'Beispillkonfiguratioun vum Upstream setzt den Nolauschterer aus gudde Grënn op Loopback: en transparente Proxy akzeptéiert Verbindungen am Numm vun all deenen, déi en erreeche kënnen. De Binding op 0.0.0.0 ëmzesetzen reparéiert d'Liwwerung an opent gläichzäiteg de Port op all Interface, wat eng Sécherheetsännerung ass, keng neutrall Reparatur. Léiwer un déi spezifesch lokal Adress binden, déi d'Ëmleetung viséiert, an de Port op net vertraute Siten zou halen. Wann e méi breede Binding onvermeidlech ass, füügt eng Host-Firewall-Reegel derbäi, déi nëmmen de Sourceberäich vum Tunnel an den eegenen lokalen Traffic vum Gateway erlaabt.
De Port op der ëffentlecher Interface opzemaachen ass ni néideg fir ëmgeleet VPN-Traffic, well d'Verbindung no der Ëmschreiwung lokal ophält. Setzt de Proxy net dem Internet aus, fir eng lokal Ëmleetung schaffe ze loossen.
Beweist et mat enger neier Verbindung vun engem Client
Test vun engem richtege VPN-Client mat enger fräscher TCP-Verbindung, net vun enger Shell um Gateway. curl -sS -o /dev/null -w '%{http_code}\n' http://example.com um Client üübt dee ëmgeleet Wee vun Ufank bis Enn.
Bestätegt dann, datt eng direkt Verbindung zum Nolauschterer aus engem net vertraute Netzwierk nach ëmmer refuséiert gëtt, an datt d'Upstream-Verbindung vum Proxy selwer net nees vun der selwechter Reegel gefaangen gëtt. Rekursivt Afaange weist sech als Proxy, deen sech mat sech selwer verbënnt an ni eng Ufrou fäerdeg mécht. Füügt d'Destinatioun vum Proxy an den Ausname-Set derbäi, oder markéiert seng erausgoend Pakete fir datt d'Kette se iwwerspréngt.
Endlech, denkt drun, wat dëse Wee net deckt. Gewéinlech redsocks TCP-Ëmleetung mécht UDP, QUIC oder DNS net zu SOCKS-Traffic, a privat Destinatioune brauchen normalerweis explizit Ausnamen. En erfollegräichen lokale Test beweist just de Loopback-Wee, dee ni de Problem war.