Мости 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.