Если на локальной машине кроме socks имеется выход в интернет или доступ к DNS-резолверу, проблем не возникает, но если выход машины производится только через socks при запуске программ подобных браузеру opera всплывает неприятная проблема с резолвингом имен. Проблема в том, что утилиты подобные tsocks не позволяют перенаправлять DNS запросы через Socks и организовать работу резолвера поверх этого протокола.Выход найден в использовании privoxy (http://www.privoxy.org/), некеширующего HTTP-прокси, умеющего организовывать проброс трафика через Socks и самое важное - умеющего резолвить DNS-имена на socks-сервере.
Ставим privoxy:
sudo apt-get install privoxy
Предположим на локальной машине имеется доступ к socks-серверу 127.0.0.1:1080
В моем случае socks использовался для организации выхода в Интернет через телефон на платформе Android, делается это так:
На телефоне включаем в настройках режим "USB Debugging" (Settings / Applications / Development) и запускаем программу Tetherbot (http://graha.ms/androidproxy/Tetherbot.apk).
На локальный компьютер копируем программу adb из состава Android SDK и выполняем:
./adb forward tcp:1080 tcp:1080
теперь в Firefox можно прописать socks-сервер 127.0.0.1:1080 и поставить в about:config network.proxy.socks_remote_dns=true, все будет прекрасно работать. Но нам нужно заставить работать opera и другие программы, поэтому настраиваем privoxy.
В /etc/privoxy/config проверяем наличие директивы (по умолчанию выбран порт 8118)
listen-address 127.0.0.1:8080
и добавляем строку:
forward-socks4a / 127.0.0.1:1080 .
или
forward-socks5 / 127.0.0.1:1080 .
(внимание, режим forward-socks4 проброс DNS не поддерживает)
Запускаем privoxy:
sudo /etc/init.d/privoxy start
Далее в opera устанавливаем в настройках обычного HTTP-прокси хост 127.0.0.1 и порт 8080. Все прекрасно работает, более того в качестве бонуса privoxy по умолчанию вырезает рекламу.
Для консольных приложений удобно использовать пакет proxychains
(http://proxychains.sourceforge.net/) в состав которого входит утилита proxyresolv для резолвинга имен через socks.
URL: http://www.privoxy.org/user-manual/quickstart.html
Обсуждается: http://www.opennet.dev/tips/info/2379.shtml