Назад | Перейти на главную страницу

Как маршрутизировать все исходящие TCP-соединения с помощью HTTP CONNECT в Linux

У меня есть система Linux, которая находится за брандмауэром, но она может подключаться к прокси-серверу HTTP, который передает все команды CONNECT. Как я могу настроить систему Linux для выполнения DNS-запросов через TCP через HTTP CONNECT и для установления всех исходящих TCP-соединений (кроме тех, что к прокси-серверу HTTP) через HTTP CONNECT?

Я ищу решение, которое работает в любом процессе, включая статически связанные двоичные файлы, которые вызывают socket(2) и connect(2) прямо. (Так LD_PRELOAD не является приемлемым решением, поскольку не работает со статически связанными двоичными файлами.)

Посмотри на Transocks, который может перехватывать TCP-соединения с iptables и туннелировать их через Socks. Должен работать со статическими двоичными файлами.

DNS поверх TCP существует, но для типичного использования он довольно нестандартен. Я не думаю, что libnsswitch может использовать tcp, но вы можете установить локальный сервер имен, говорящий по tcp dns. Вам нужно будет убедиться, что у вас есть рекурсивный преобразователь где-то снаружи, который будет принимать tcp.

Если вы контролируете машину снаружи, может быть проще настроить несколько vpn для туннелирования трафика UDP; tsocksified openvpn или openssh с параметром -w.