SSH Proxy (SOCKS) przez zdalny komputer - TCP i DNS

0

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ę?

Moz Morris
źródło
Głosowanie w dół, bez wyjaśnienia. Przynajmniej daj mi znać, co jest nie tak z pytaniem.
Moz Morris
jest to bardzo trudne do odczytania z powodu ogromnego użycia pogrubienia i akapitów. rzeczywiste pytanie też nie jest jasne.
Baarn
Dziękuję, usunąłem boldfont (miałem nadzieję, że ułatwi to czytanie, przepraszam)
Moz Morris
Postawiłem też problem na samym szczycie, wszelka pomoc z wdzięcznością przyjęta.
Moz Morris
czy zainstalowałeś serwer dns na REMOTE i ustawiłeś go jako domyślny dla sieci LOCAL?
Baarn

Odpowiedzi:

0

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.

Ronan
źródło
Ronan, spróbuję, ale dane muszą przejść przez SSH.
Moz Morris
Jeśli potrzebujesz danych z ustalonych adresów, aby przejść przez tunel, nie ma sensu przesyłać dalej żądań DNS przez port 53. Nie ma prostego sposobu, aby to zrobić bez konieczności mapowania lokalnego portu na zdalny adres każdego hosta . Dlaczego nie użyć VPN? VPN działa jak tunel ssh, ale kończy się jako interfejs, dzięki czemu pakiety mogą być przez niego przesyłane w sposób przezroczysty.
Ronan