Mój problem: trzeba rozwiązać problem DNS za pośrednictwem mojego komputera zdalnego, używając go również jako serwera proxy.
Mam więc REMOTE, do którego mogę uzyskać dostęp z LOCAL poprzez SERVER. Ten REMOTE może uzyskać dostęp do hosta TARGET_HOST. TARGET_HOST jest skonfigurowany w pliku hosta REMOTE w następujący sposób: 123.123.123.123 TARGET_HOST
Chcę mieć dostęp (w przeglądarce i mojej aplikacji) do TARGET_HOST z LOCAL. Ustawiłem „proxy” w ten sposób:
LOKALNIE NA SERWER:
ssh -L 4567:LOCAL:4568 user@SERVER
SERVER na REMOTE:
ssh -D 4568 user@REMOTE
Konfiguracja sieci LOCAL jest skonfigurowana do używania proxy na localhost przez port 4567.
Więc wszystko jest świetne i widzę TARGET_HOST w mojej przeglądarce. Mam problem z tym, że DNS nie rozwiązuje się z LOCAL i dlatego jakiś kod, który mam w mojej aplikacji, kończy się niepowodzeniem. Czy ktoś może mi pomóc? Czy ktoś może zaproponować lepszą metodę?
Odpowiedzi:
Gdy rozumiem twoje pytanie, chcesz, aby Twoje żądania DNS były rozwiązywane na zdalnym komputerze. Można to zrobić, ale zwrócone adresy nie gwarantują korzystania z tunelu ssh. Wyjdzie z sieci lokalnej. Czy tego naprawdę chcesz? Najprostszym rozwiązaniem jest po prostu zakodowanie nazw adresów za pomocą ich adresów IP w pliku / etc / hosts. Trudnym sposobem jest przekazanie żądań DNS, musisz zmodyfikować /etc/resolv.conf, aby używał serwera nazw 127.0.0.1, aby żądania dns mogły być przechwytywane lokalnie. Następnie za pomocą ssh musisz przekazać lokalny port 53 do zdalnego portu 53. Gdzie zdalny jest adres IP maszyny, który może rozwiązać twoje żądania dns. Problem polega na tym, że nie możesz przekazać tego portu jako użytkownik root. Możesz obejść to, przesyłając jakiś losowy port, powiedzmy 20000 do zdalnego portu 53. Następnie użyj netcat jako root, aby przekazać udp 53 do localhost 20000.
źródło