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

Если я использую SSH для прокси-сервера SOCKS, проходят ли DNS-соединения через него?

Я использую ssh -D 8080 my server для создания прокси-сервера SOCKS. Затем я настраиваю OS X для использования localhost:8080 как прокси-сервер SOCKS. Я использую это для доступа к Интернету без наблюдения.

Я использую DNS-серверы Google (8.8.8.8), но как мне убедиться, что DNS-запросы проходят через туннель SSH?

Я знаю, что ответ немного запоздал, но для справки и для тех, кто все еще ищет ответ,

Установить network.proxy.socks_remote_dns в конфигурации firefox (введите about: config в адресной строке) в значение ИСТИНА (просто дважды щелкните свойство, чтобы переключить значение), чтобы включить поиск DNS через локальный / удаленный прокси-сервер socks5.

PS: Насчет других браузеров я не уверен :(

Если это НОСКИ 5 прокси, а клиентская программа его поддерживает, DNS будет проходить через прокси. Большинство браузеров поддерживают DNS через прокси Socks 5, но для этого может потребоваться специальная настройка.

Если ваша цель - конфиденциальность в Интернете, вам действительно стоит использовать что-то вроде Privoxy. Privoxy очистит заголовки ваших веб-запросов и обеспечит прохождение всего трафика, включая DNS, через прокси Socks 5. Бегать privoxy локально, и вы можете использовать ssh для туннелирования трафика Socks 5.

Вы не можете сделать это из коробки, поскольку туннель SSH предназначен только для подключений TCP / IP - трафик UDP не сможет пройти через этот туннель без специальной настройки. По сути, вам нужно создать fifo, чтобы проделать некоторые трюки с netcat, как описано Вот. Тогда вы можете использовать DNS Google из удаленного окна.

Как уже упоминалось там, ваш поиск в системе не туннелируется.

Если вам нужно решение на основе SSH, вы можете почерпнуть вдохновение из Вот или используйте SSHuttle (например, упомянутый Вот). Есть патч для простой пересылки DNS-запросов.

YMMV, но я добился успеха со следующим:

#!/bin/bash
# Taken from http://stackoverflow.com/questions/4594319/shell-replace-cr-lf-by-comma
DNSSERVERS=$(nmcli d show | grep DNS | awk '{print $2}' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d' )
sshuttle  \
    -vvv                \
     --dns-hosts ${DNSSERVERS}   \
    -r server   \
    254.254.254.254/32

Как говорит pfo, туннели SSH предназначены только для трафика TCP, и приложение должно знать о прокси-серверах SOCKS.

Если вы хотите, чтобы все туннелировалось, вам нужен правильный VPN. Взгляните на что-то вроде OpenVPN.

Это зависит от вашего приложения. Firefox, например, отправляет имя хоста прокси-серверу SOCKS, не разрешая его. В этом случае вам не нужно ничего делать для конфиденциальности. Вы можете подтвердить это с помощью wirehark.

PS. Предположим, вы используете прокси-сервер SOCKS5. SOCKS4 не поддерживает имя хоста.