2

Лаборатория ИТ заблокирована, поэтому я не могу делать обновления apt-get или устанавливать какие-либо пакеты на машину с Ubuntu. У нас есть рабочий стол Windows RDP с ограниченным доступом в Интернет. У меня есть сервер SSH, работающий на компьютере с Windows, и я могу подключиться к нему по SSH с компьютера Ubuntu с помощью следующего

ssh -CND localhost:1080 me@windowsbox

Проблема в том, что я все еще не могу разрешить любой DNS с компьютера с Ubuntu. Так что я хотел бы также настроить DNS для прохождения через SSH-туннель. И да, я видел много других постов о настройке Firefox или любого другого браузера для этого, но здесь это не относится. Я ищу DNS системного уровня или, по крайней мере, способность apt-get разрешаться через туннель.

Спасибо

1 ответ1

1

У вас есть полный контроль над клиентом, это хорошо. Вы не упоминаете, сколько у вас есть контроль над сервером SSH. Если вы контролируете серверную часть, тогда вы можете запустить прокси UDP-TCP на вашем клиенте, как показано здесь:

socat -T15 udp4-recvfrom:53,reuseaddr,fork tcp:localhost:5353

Затем перенаправьте TCP-соединение через SSH на сервер, где вы запустите демон TCP-to-UDP:

socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53

есть 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .