Масты socat SOCKS: захаваць TLS-імя хаста сайта
Выкарыстоўвайце loopback-слухач TCP для адной мэты SOCKS, захоўваючы ідэнтычнасць HTTP і TLS у праграме.
Праграма не мае опцыі SOCKS, але можа падключацца да выбранага адраса TCP. Адаптар з фіксаванай мэтай можа забяспечыць размову SOCKS для аднаго прызначэння. Ён не абавязаны станавіцца чарговым універсальным прамым проксі.
Для зборак socat з падтрымкай SOCKS4A прыкладная схема такая:
socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080
Канечная кропка SOCKS — лакальны порт 1080. Адаптар слухае лакальны порт 9443 і запытвае ў гэтай кропкі service.example.net:443. Гэта прыкладныя значэнні, а не поўнае разгортванне сэрвісу.
У адаптара адна фіксаваная мэта
Кожна прынятае злучэнне TCP запытвае тую ж самую паслугу. Праграма, што падключаецца да 9443, падае свае звычайныя байты пратакола; socat падае перамовы SOCKS4A. Новы запыт HTTP CONNECT на 9443 не выбера іншага прызначэння—ён адправіць гэтыя байты да фіксаванай паслугі.
SOCKS4A падае імя хаста канечнай кропцы SOCKS для аддаленага вызначэння. Гэта адрозніваецца ад формы SOCKS4, якая выкарыстоўвае адрас, выбраны кліентам. Выбраны верхні паток—у тым ліку публічны кандыдат са спісу проксі SOCKS4—павінен падтрымліваць апрацоўку імя хаста SOCKS4A і патрабаваную аўтэнтыфікацыю; гэты прыклад не з'яўляецца рэцэптам уваходу па паролі SOCKS5.
Падключайцеся лакальна, вызначайце сапраўдную паслугу
Змена адраса HTTPS на https://127.0.0.1:9443/ змяняе імя хаста, якое кліент можа ўжываць для TLS і HTTP. Сертыфікат для service.example.net не стане сапраўдным сертыфікатам для loopback.
Там, дзе кліент падтрымлівае асобную маршрутызацыю злучэння, захоўвайце ідэнтычнасць зыходнага адраса. Curl можа праілюстраваць гэтае адрозненне:
curl --noproxy '*' \
--connect-to service.example.net:443:127.0.0.1:9443 \
https://service.example.net/
Сокет ідзе да лакальнага адаптара, а праверка TLS і прызначэнне HTTP застаюцца service.example.net. Іншыя праграмы маюць патрэбу ў сваім эквівалентным падтрыманым кіраванні; не кожны кліент яго дае.
Прывязка loopback абмяжоўвае сеткавае ўздзеянне, але іншыя дапушчальныя лакальныя працэсы ўсё яшчэ могуць да яго дабрацца. Трымайце тэрмін службы і кола карыстальнікаў слушнымі. Захоўвайце праверку TLS, а не душыце памылку ідэнтычнасці, выкліканую адрасам loopback.