Отправлять dns запросы через прокси при использовании socks 5
Browsers can proxy DNS requests through SOCKS 5. What I don't understand is how the process works.
Correct me if I'm wrong. In normal DNS operation, a program does DNS resolution through its operating system, which in turn is configured to access a specific DNS server(s) and make queries there. So, in normal operation a browser should not do DNS queries over the network by himself.
Now, with a SOCKS proxy, the browser needs to do his own queries. How that the browser knows which DNS server will exist at the other end of the proxy tunnel?
Заключение
В заключении отметим, что tsocks так и "заглох" на стадии бета-версии "1.8 beta 5 2002-10-23", в той-же бета-версии пакет tsocks представлен и в Дебиан репозиториях "Filename: pool/main/t/tsocks/tsocks_1.8beta5+ds1-1_i386.deb".
ld.so: object 'libtsocks.so' from LD_PRELOAD cannot be preloaded
Интересный "глюк", который проявляется только с некоторыми программами, например с программой ping запущенной от имени обычного пользователя:
При всём этом никакие из ниже перечисленных фокусов не помогают:
Кроме того libtsocks.so присутствует в списке /etc/ld.so.cache :
Возможно проблема в том, что исполняемый файл соборан без соответствующих указателей в заголовочных файлах:
Вот пример нормальной ситуации, когда бинарник содержит указатели на требуемые библиотеки:
5 Answers 5
The browser doesn't do his own DNS lookups then. I don't know if there are actual situations in which a browser will speak DNS to a DNS server. But with SOCKS5 proxy configured the browser simply asks to the SOCKS5 to connect to hosts using the host name of the host instead of its IP address. It's up to the SOCKS5 proxy then to do the lookup.
I know this because I maintain a SOCKS5 implementation.
It depends on your browser. Firefox, for example, sends hostname to SOCKS proxy without resolving it. You can confirm that by Wireshark.
If not using firefox about:config to change dns settings, reconfigure windows Adapter Interface and set
DNS2SOCKS.exe /la:socks.log 127.0.0.1:1080 8.8.8.8:53 127.0.0.1:53
These are default settings for google dns
There are 3 possible options:
Software still uses system DNS for host name resolution and commands the Socks server to connect to an IP. This might be default mode or the only supported mode for cases where Socks is implemented lazily.
Software commands the Socks server to connect to hostname. This mode might need to be configured additionally; Firefox and old Opera have special flags to enable this mode.
Software manually performs DNS lookup with UDP-over-Socks and commands the Socks server to connect to an IP. The most crazy mode and it requires a software to know a DNS address but in theory it is possible.
Направляем все DNS запросы через socks прокси - зачем? Затем, чтобы "Большому брату" досталось меньше информации о нашей личной жизни. Направление всех ДНС запросов через socks прокси скроет от Вашего провайдера список посещаемых Вами веб-сайтов.
Для тех кто не в курсе о том, что такое DNS (система доменных имён - Domain Name System): коротко, DNS является своего рода адресной книгой веб-сайтов, примерно как Ваша записная телефонная книжка, в которой по имени Вы находите номер телефона нужного субъекта, как и компьютер, а вернее ОС, по доменному имени (например www.example.com) в ДНС ищет ИП адрес. Нагляднее в видео-ролике "DNS Explained - YouTube":
DNS запросы через proxy
Часто требуется чтобы и преобразование имен происходило через proxy. Если использовать dante, то запрос на преобразование имен идет и через proxy, и через именной сервер указанный в /etc/resolv.conf . Понять почему же идет два одинаковых запроса вместо одного не удалось. Поэтому можно предложить два варианта:
1) Закомментировать именные сервера в файле /etc/resolv.conf, чтобы преобразование имен шло только через proxy. Это отразится на всей системе.
2) Изменить /etc/resolv.conf и выставить именные сервера необходимой страны, или просто отличные от серверов провайдера. Например установить сервера Google:
Чтобы данные не были перезаписаны именными серверами провайдера (при переподключении), можно запретить обновление списка именных серверов сетевому менеджеру (NetworkManager/wicd) или DHCP-клиенту (спасибо ergil за корректировку).
Или воспользоваться «грубым» методом — запрещением изменения файла /etc/resolv.conf:
Если есть какие-то дополнения, пожалуйста, напишите, это будет полезно узнать и применить.
Добрый вечер всем, кто читает этот вопрос. Немного запутался, прошу помощи в посвящении и направлении. В общем, протокол Socks5 представляет из себя прокси-сервер для фильтрация трафика между клиентом и сервером. Работает как с TCP, так и с UDP трафиком. То есть, при подключении к Socks5, сервер к которому я обращаюсь будет видеть ip адрес proxy сервера(TCP) и ip DNS провайдера этого proxy-сервера(UDP). Получается что фильтруется TCP и UDP трафик. Вот здесь первый вопрос. Как правило proxy-сервера Socks5 не поддерживают фильтрацию UDP трафика, как быть в таком случае? Поддерживает ли 3proxy данную функцию?(может нужны специальные настройки какие-то?). Можно ли как то получить ip DNS провайдера через Socks5, если он не поддерживает UDP проксификацию?
- Вопрос задан более трёх лет назад
- 2261 просмотр
Оценить 3 комментария
SyavaSyava: Я хочу, чтобы сервер, к которому я обращаюсь видел только IP прокси-сервера и DNS провайдера этого прокси-сервера. Вот
А вот повлиять на то, какой DNSбудет смотреть сервер, к которому вы обращаетесь - вы не можете никак. Какой у него в настройках стоит - такой и будет использовать.
Вот видите DNS? Допустим это мой сервер, на котором я поднял Socks5. Я подключился с другого компьютера(comp1) к этому Socks5, и хочу чтобы при обращении к любому ресурсу, ресурс думал, что у меня этот DNS адрес, а не тот что я пропишу в настройках сетевого подключения или мой DNS, который мне выдал провайдер для comp1. Такое возможно?
1. Если у вас стоит в SOCKS-клиенте опция разрешать имена через SOCKS, то никакой UDP-трафик не ходит, просто сокс-клиент вместо IPv4/IPv6 адреса передает серверу имя и сервер сам его разрешает. Разграничить доступ по именам при этом можно и не представляет проблем.
2. Если эта опция в SOCKS-клиенте не стоит, то DNS-запросы вообще в прокси не попадают, скорее всего даже при использовании соксификатора.
3. 3proxy умеет фильтровать любой трафик, в т.ч. UDP, но для того, чтобы дать доступ по именам хостов этого не требуется
4. 3proxy поддерживает разрешение имен по TCP (DNS-серверы поддерживают не только UDP но и TCP). В т.ч. не сложно пустить DNS-запросы (именно полноценные DNS-запросы) через родительский прокси по TCP. Пускать их по UDP через родительский прокси большого смысла нет, т.к. управляющее подключение к прокси при этом все равно устанавливается по TCP.
5. 3proxy имеет службу DNS proxy (dnspr), которая позволяет разрешать/блокировать DNS-запросы по доменам. Можно пустить DNS через эту службу и сделать так, чтобы до провайдера эти запросы никогда не доходили.
Что из этого вам надо или не надо я не представляю, т.к. вместо того, чтобы описать задачу вы описали ваши представления, которые не корректны и ваш вопрос исходит из кучи неверных предпосылок и проблема из него не понятна.
Полностью с вами согласен. Обращался с конкретной задачей не на один форум не получил не одного ответа > отчаяние, неправильно сформулированный вопрос > неправильное представление.
Какая конкретная задача?
Подключиться к Socks5 на Linux так, чтобы при обращении к любым внешним ресурсам, эти ресурсы не знали мой РЕАЛЬНЫЙ ip и МОИ РЕАЛЬНЫЕ IP DNS серверов провайдера. Если проще, хочу ip Socks-a и ip DNS серверов провайдера этого Socks-a. Фуг вроде объяснил.
Владимир Дубровин: Я пробовал с помощью Redsocks, но не получилось, поэтому не принципиально какой клиент. Какой будет лучше для данной задачи?
redsocks для этого скорей всего не годится. Да и вообще вряд ли какой-то бесплатный соксификатор для этого пригоден, т.к. требуется достаточно хитрая логика для "подменного" разрешения имен, она бывает в платных соксификаторах. Вы можете попробовать сделать решение с локальным DNS-прокси примерно в такой конфигурации (этот прокси нужно запустить на клиенте)
auth iponly
nscache 65536
nserver 127.0.0.1:5353/tcp
dnspr -i127.0.0.1
flush
allow *
parent 1000 socks ip_of_the_socks port_of_the_socks login password
tcppm -i127.0.0.1 5353 8.8.8.8 53
на 53м порту на 127.0.0.1 будет DNS-резолвер перенаправляющий все запросы в google DNS по TCP.
Этот прокси (127.0.0.1) следует использовать вместо провайдерского DNS.
Совместно с этим DNS-прокси можно использовать соксификатор.
allow и parent нужны только в том случае, если прокси не будет попадать под соксификатор, иначе перенаправление будет делать сам соксификатор.
Как я уже и писал в другой теме, для клиентов поставить свой dns сервер, который будет отвечать клиентам.
В нем уже указываем нужный вам dns, там где он должен быть и не важно через чего. Будет ли это vpn, просто проброс портов не важно.
Для клиентов вы уже заворачиваете все запросы dns на ваш dns сервер.
Те, что бы в dig при запросе например 8.8.8.8 отвечал ваш dns.
Вы можете да же не использовать socks proxy dns, а тупо ssh сделать проброску 53 порта куда вам надо :)
Доказываем значимость перенаправления DNS запросов через socks
Дело в том, что когда ОС обращается с запросом к DNS серверу нашего провайдера, большинство из которых законодательно обязали хранить весь входящий и исходящий Интернет-трафик своих пользователей, то в лог. файлах ДНС серверов сохраняются все доменные имена, а также дата/время/ИП и пр., которые запрашивал пользователь.
Таким образом наш провайдер, а также все спецслужбы с ним работающие, при желании может иметь на руках полную картину нашей жизни в сети Интернет - получить список всех доменных имен (веб-сайтов), время и дату посещения. Имея на руках подобную статистику можно составить примерный список предпочтений и интересов отдельного пользователя, составить график его работы/отдыха/досуга, выяснить тип ОС и ПО, которое установлено на компьютере пользователя.
В случае, когда мы перенаправим все DNS запросы через сокс прокси, то в лог файлах нашего провайдера будут светится только IP-адреса посещаемых ресурсов, а как многим известно на одном IP адресе могут одновременно размещаться сотни, а то и тысячи веб-сайтов (доменных имён). Таким образом провайдеру или кому-то ещё будет затруднительно выяснить список посещаемых нами веб-ресурсов, хотя эту информацию можно будет вытянуть из заголовков IP-пакета (HTTP запроса), таких как "Request-Line", "Host", "User-Agent".
А почему бы нам просто не юзать сторонние ДНС сервера, такие как например "Comodo SecureDNS", "Norton DNS" или "Google Public DNS"? Именно сторонние DNS сервера мы и будем использовать, но только через сокс прокси, а не на прямо имхо DNS запросы также как и DNSSEC запросы не шифруются и передаются по сети в открытом виде. Про использование "Google Public DNS" в приватной жизни рекомендую забыть сразу же!
В некоторых веб-браузерах есть параметр позволяющий направлять все DNS запросы через socks прокси, например для Firefox - это " network.proxy.socks_remote_dns = true " на странице конфигурации " about:config ". Но, такие фокусы доступны не для всех браузеров и не доступны для прочего ПО, такого как ICQ, Skype, менеджеры закачек, системные вызовы svchost.exe etc..
Благо в своём стремлении быть в тени анонимус не один. Представляем Вашему вниманию относительно молодую (первая версия от 2012-01-13) чудо-программу DNS2SOCKS, которая поможет нам организовать socks туннель для всех наших ДНС запросов, включая ДНС запросы со стороны ICQ, Skype, менеджеров закачки, системных вызовов svchost.exe и пр..
Как работает DNS2SOCKS? Параметры программы:
Пишем bat/cmd файл для скрытого (без консольных окон) запуска DNS2SOCKS:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
В примере выше мы запустили две копии программы, чем создали socks туннель для всех наших ДНС запросов на локальном интерфейсе " 127.0.0.1:53 " (ListenIP:Port) и " 127.0.0.2:53 ", с направлением запросов к "Comodo SecureDNS" серверам (8.26.56.26:53 и 8.20.247.20:53), через локальный TOR сервер.
Теперь в настройках нашего сетевого подключения достаточно удалить все старые ДНС сервера и вписать туда наши 127.0.0.1 и 127.0.0.2. Только нужно помнить что, если используется провайдер локальной сети, то при удалении его ДНС серверов из списка могут стать недоступны внутренние сервисы локальной сети. В таком случае нужно поставить ДНС сервер своего провайдера локальной сети последним в списке предпочтения (например "Сетевые подключения - Подключение по локальной сети - Общие - Протокол Интернета (TCP/IP) - Использовать следующие адреса ДНС-серверов"):
На вкладке "Дополнительно - ДНС" можно указать дополнительные ДНС сервера.
SOCKS server refused connection / Connection refused
При использовании tsocks с некоторыми программами, например сканером портов nmap можно наблюдать проблемы:
В первом случае можно попробовать выполнить команду:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Указанная выше программа может проверить используемую версию любого удалённого SOCKS сервера, а не только локального.
Когда же видим ошибки таокго содержания:
То, по всей видимости они связаны с тем, что nmap требует адимнистративных привилегий. При запуске от имени root проблем не возникает.
Соксификатор dante
Чтобы все время не вводить данные о proxy можно создать файл /etc/socks.conf
Пример для SOCKS:
wget: закачка файлов через proxy
Чтобы все время не указывать --proxy-user и --proxy-password можно их прописать в файл ~/.wgetrc:
Туннелирование DNS запросов: что дальше
Рекомендуемый контент
Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).
tsocks - "соксификатор" для приложений, которые не поддерживают работу через SOCKS прокси сервера. Достаточно запустить " tsocks prog_name " и вуаля. Однако, с некоторыми программами могут возникать проблемы, в т.ч. проблемы конфигурации, которым и посвящён сей материал.
Не будем рассписывать как поставить соксификатор программ tsocks, дурное дело не хитрое, сразу о конфигурации. Главный конфигурационный файл расположен по адресу /etc/tsocks.conf , но если в домашней директории "юзверя" имеется файл " ~/.tsocks.conf ", то будет использован именно этот конфиг. Вот пример такого, полностью рабочего и не вызывающего ошибок, конфига " ~/.tsocks.conf " для работы через ТОР сеть:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Можно "копипастить" конфиг и далее не читать, но в образовательно-познавательных целях почитать далее таки не помешает дабы иметь представление о природе возникновения тех или иных ошибок в работе соксификатора tsocks.
libtsocks(ххххх): Need a password in tsocks.conf or $TSOCKS_PASSWORD
Для устранения в конфиг нужно добавить:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Для проверки правильности/валидности конфигурационного файла tsocks можно использовать:
Рекомендуемый контент
Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).
Меня нет ни в Инстаграмме ни в Фейсбуке, я просто хожу по улицам и рассказываю первым встречным: сколько зарабатываю; с кем дружу; где живу и чем дышу. У меня даже появилось несколько подписчиков: ПСИХоЛОХ и участковый полицай!
Добавить комментарий
АХТУНГ! Все комменты модерасятся модерастом. Мессаги исключительно рекламного или оскорбительного содержания, оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются, а поэтому злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах! Разумная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.
ПиЗе!да видать будет всему, а по тому популярному адресу скоро все соберуться: и русский военный корабэль, и хэрои, и вороженькы, и рашисты, и .
Так і є, словянські свині подуріли и почали вбиватись. Як ті студєнтікі у кіні "Убойные каникулы". Словянам жиди накуй просрали й просцяли увесь мозок .
«Я скажу, чтобы скорее все закончить здесь. Мы не против колхоза, только не в нашей деревне» - так и я не против ЧИПуколИпСОСа, но только шоб не в нашей .
:P Байден аж цветёт и пахнет говоря про войну в Украине ехидненько посмеиваясь - наслаждается плодами многолетних жидомасонских трудов, собака .
В Linux существует много полезных консольных команд, которые при необходимости хотелось бы запустить через proxy. Некоторые приложения имеют встроенную поддержку proxy, а некоторые нет. Далее описано как пользоваться востребованными утилитами через proxy, даже теми, которые этой поддержки не имеют.
Could not open socks configuration file / getpwuid: access denied
В данном случае с "чмодами" на файлы "tsocks.conf" всё гуд, а причина по которой " libtsocks(ххххх): Could not open socks configuration file " не известна.
Занимательно, но tsocks может не работать без разрешения некоторым программам читать /etc/passwd! А на кой им читать /etc/passwd - возникает вопрос? Ответ - а хрен его знает.
Факт в том, что запрещает им чтение /etc/passwd установленный AppArmor, проверить его активность можно в /var/log/syslog , где можно заметить блокировку доступа:
Следует также иметь ввиду, что подобное предупреждение появится в /var/log/syslog только в том случае, если в правилах AppArmor (/etc/apparmor.d/*) для того или иного приложения нет явного запрета на чтение данного файла: " deny /etc/passwd mrwk "!
Для того, чтобы данную проблему вылечить, нам нужно внести правки в правила AppArmor и перезагрузить их:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
АХТУНГ! Ошибка "libtsocks(ххххх): Could not open socks configuration file ((null)), assuming all networks local" влечёт за собой довольно негативные последствия! Даже когда мы в конфигурационном файле установили " fallback = no ", то в данном случае, когда "Could not open socks configuration file", данный параметр не срабатывает и программа не соксифицируется, а "втихую" подключается напрямую в обход socks-сервера!
curl: передача данных через proxy
Часть параметров curl можно записать в файл ~/.curlrc:
С помощью time и curl также можно замерить время отклика сервера:
Результат будет выглядеть так:
ssh: доступ к серверам
Для доступа к серверам через ssh и proxy также лучше использовать соксификатор dante.
Читайте также: