socat SOCKS-bryggor: bevara webbplatsens TLS-värdnamn
Använd en loopback TCP-lyssnare för en SOCKS-destination och bevara HTTP- och TLS-identiteten i programmet.
Ett program har inget SOCKS-alternativ men kan ansluta till en vald TCP-adress. En adapter med fast mål kan tillhandahålla SOCKS-samtalet för en destination. Den behöver inte bli ännu en allmän vidarebefordrande proxy.
För socat-byggen med SOCKS4A är en illustrativ uppställning:
socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080
SOCKS-slutpunkten är den lokala porten 1080. Adaptern lyssnar på den lokala porten 9443 och ber den slutpunkten om service.example.net:443. Detta är exempelvärden, inte en fullständig tjänstedriftsättning.
Adaptern har ett fast mål
Varje accepterad TCP-anslutning ber om samma tjänst. Ett program som ansluter till 9443 levererar sina vanliga protokollbytes; socat levererar SOCKS4A-förhandlingen. En ny HTTP CONNECT-begäran till 9443 skulle inte välja en annan destination—den skulle skicka dessa bytes vidare till den fasta tjänsten.
SOCKS4A ger ett värdnamn till SOCKS-slutpunkten för fjärruppslagning. Det skiljer sig från SOCKS4-formen som använder en klientvald adress. Den valda uppströms—inklusive en offentlig kandidat från SOCKS4-proxylistan—måste stödja SOCKS4A-värdnamnshantering och den nödvändiga autentiseringen; detta exempel är inte ett SOCKS5-lösenordsrecept.
Anslut lokalt, identifiera den verkliga tjänsten
Att ändra en HTTPS-URL till https://127.0.0.1:9443/ ändrar det värdnamn som klienten kan använda för TLS och HTTP. Ett certifikat för service.example.net blir inte ett giltigt certifikat för loopback.
Där klienten stöder separat anslutningsrouting, behåll den ursprungliga URL-identiteten. Curl kan illustrera den skillnaden:
curl --noproxy '*' \
--connect-to service.example.net:443:127.0.0.1:9443 \
https://service.example.net/
Socketen går till den lokala adaptern medan TLS-verifiering och HTTP-destinationen förblir service.example.net. Andra program behöver sin egen motsvarande stödda kontroll; inte alla klienter erbjuder en.
Loopback-bindningen begränsar nätverksexponeringen, men andra kvalificerade lokala processer kan fortfarande nå den. Håll tjänstens livslängd och användare lämpliga. Behåll TLS-verifieringen i stället för att undertrycka identitetsfelet som orsakas av en loopback-URL.