Моя проблема: необходимо разрешить DNS через мою удаленную машину, а также использовать ее в качестве прокси.

Так что у меня есть УДАЛЕННОЕ, что я могу получить доступ из локального через сервер. Этот REMOTE может получить доступ к хосту TARGET_HOST. TARGET_HOST настраивается в главном файле REMOTE следующим образом: 123.123.123.123 TARGET_HOST

Я хочу получить доступ (в браузере и в моем приложении) к TARGET_HOST из LOCAL. Я настроил «прокси» так:

МЕСТНЫЙ СЕРВЕР:
ssh -L 4567:LOCAL:4568 user@SERVER

СЕРВЕР УДАЛЕНО:
ssh -D 4568 user@REMOTE

Конфигурация сети LOCAL настроена для использования прокси на локальном хосте через порт 4567.

Итак, все отлично, и я вижу TARGET_HOST в моем браузере. Проблема, с которой я столкнулся, заключается в том, что DNS не разрешается из LOCAL, и поэтому некоторый код, содержащийся в моем приложении, завершается неудачно. Может кто-нибудь мне помочь? Кто-нибудь может предложить лучший метод?

1 ответ1

0

Насколько я понимаю ваш вопрос, вы хотите, чтобы ваши DNS-запросы были разрешены на удаленной машине. Это может быть сделано, но возвращенные адреса не гарантируют использование вашего ssh-туннеля. Это выйдет из локальной сети. Это то, что вы действительно хотите? Самое простое решение - просто жестко закодировать имена адресов с их IP-адресами в вашем /etc /hosts. Сложный путь заключается в пересылке DNS-запросов, вам нужно изменить /etc/resolv.conf, чтобы использовать nameserver 127.0.0.1, чтобы DNS-запросы могли быть получены локально. Затем, используя ssh, вам нужно перенаправить локальный порт 53 на удаленный порт 53. Где удаленный IP-адрес компьютера, который может разрешить ваши DNS-запросы. Проблема в том, что вы не можете пересылать этот порт как пользователь без полномочий root. Вы можете обойти это, перенаправив некоторый случайный порт, скажем, 20000 на удаленный порт 53. Затем используйте netcat как root для пересылки udp 53 на localhost 20000.

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