Trasa / NAT / Przekazywanie portów tylko dla jednego portu?

1

Nie jestem pewien, jaki jest właściwy termin i nie wiem, jakich narzędzi należy użyć. Jedyne, co mam, to cel, który chciałbym osiągnąć.

Mam dwa komputery z systemem Linux (A i B) oraz usługę zdalną. Usługa nasłuchuje na porcie 16000. Połączenie wychodzące z komputera A na porcie 16000 jest blokowane przez zaporę, ale na B nie jest. Muszę uzyskać dostęp do usługi z A. Więc prawdopodobnie będzie musiał zostać przekierowany (poprawny termin?) Przez B. Nie mogę modyfikować programu, który uzyskuje dostęp do usługi (więc zawsze będzie próbował na porcie 16000).

Wiem, że jest wiele samouczków na podobne tematy, ale nie wiem, który powinienem podążać, ponieważ istnieje wiele możliwości. Mam pełny dostęp do obu maszyn. Jestem prostym programistą, a nie administratorem Linuksa, ale to jest dla mnie naprawdę blokerem :( Jaki jest najlepszy sposób, aby to osiągnąć? Co należy wykonać na komputerze A i na komputerze B?

Dzięki.

NeplatnyUdaj
źródło

Odpowiedzi:

3

Nie wiem najlepiej, jest ich kilka

Napraw zaporę

Wydaje mi się to najlepsze. Nie jest jasne z twojego pytania, gdzie jest firewall (czy jest to oddzielne urządzenie, funkcja routera lub zapora programowa na A?)

Routing

Prawdopodobnie możesz przekierować cały ruch z A do B, ale uniknę tego.

Musisz skonfigurować A przy pomocy statycznej konfiguracji sieci Adres B jako domyślna brama.

Musisz skonfigurować B jako jednoręki router.

Być może będziesz musiał wykonać kilka dodatkowych sztuczek NAT na prawdziwym routerze LAN-Internet, aby ruch powrotny dla A został dostarczony do B.

Prawdopodobnie łatwiej byłoby umieścić A w podsieci samodzielnie i dodać NIC do B.

Poczekaj i zobacz, czy ktoś wymyśli proste rozwiązanie. Najpierw wypróbuję mój inny pomysł.

Przekierowanie

Możesz na przykład dodać a /etc/host wpis na A, który kojarzy nazwę DNS usługi z adresem IP B. Zwykle nazwa-resolvers najpierw przegląda / etc / hosts (jeśli nie, możesz określić kolejność - szczegóły zależą od systemu operacyjnego)

Na B użyj czegoś takiego socat aby skonfigurować usługę przesyłania dalej / przekazywania na porcie 16000, który działa jako serwer proxy. Zobacz trzeci przykład w socat dokumentacja.

RedGrittyBrick
źródło
Napraw zaporę niestety nie jest opcją (jestem tylko małym programistą w dużej firmie) Routing: Potrzebuję tylko jednego portu Przekazywanie: To wygląda dobrze. Spróbuję tego
NeplatnyUdaj
Bądź ostrożny z przekazywaniem / routingiem. Jeśli nie możesz przekonać osób powyżej ciebie w swojej firmie lub grupy, która utrzymuje zaporę / zabezpieczenia Twojej firmy, że żądana zmiana jest uzasadniona, prawdopodobnie nie będziesz miał zbyt wiele szczęścia, aby się bronić, gdy odkryjesz, że ominąłeś ich zaporę. W zależności od rodzaju przepisów, które Twoja firma musi przestrzegać, możesz skończyć w sądzie w obliczu zarzutów karnych, a także utraty pracy.
chuck
Dzięki za wszystkie dane wejściowe. W końcu udało mi się przekonać dział IT, że naprawdę tego potrzebuję, więc teraz nie są potrzebne żadne obejścia.
NeplatnyUdaj
1

Jeśli jakiekolwiek połączenie wychodzące z 16000 z serwera A jest zablokowane, a aplikacja może połączyć się tylko z portem 16000, jedyną nadzieją jest to, że można połączyć się z lokalnym portem 16000 (lokalnym jak w serwerze A).

Jeśli to możliwe, skonfiguruj przekierowanie portu SSH z lokalnego portu 16000 na serwer B:

ssh -L 16000:service:16000 server_b
Martin Prikryl
źródło
Nie muszę robić nic innego na maszynie B? Wygląda dziwnie. A co jeśli chciałbym skierować port 16000 do wszystkich miejsc docelowych? Połączenie między A i B jest całkowicie nieograniczone. Mam problem z dosięgnięciem czegoś w Internecie od A.
NeplatnyUdaj
Tak długo, jak na serwerze B jest serwer SSH i masz tam konto ORAZ możesz połączyć się z SSH na B, nie musisz nic robić na B. Z twojego komentarza wygląda jednak na to, że nie możesz połączyć się z SSH na B. Co nie zostało określone w pytaniu.
Martin Prikryl
Mam tam ssh. Czy mogę zamiast tego umieścić coś innego niż: service :? Chcę, aby cały ruch na porcie 16000 był kierowany przez B.
NeplatnyUdaj
Kiedy robię to, co zasugerowałeś i włączasz pełny tryb ssh, widzę to na wyjściu: Local connections to LOCALHOST:16000 forwarded to remote address service:16000 Nie jestem pewien, czy to jest dokładnie to, czego potrzebuję. Albo to jest? To wyjście ze zdalnej maszyny?
NeplatnyUdaj
The service jest po prostu symbolem zastępczym nazwy hosta, na którym uruchomiona jest usługa zdalna.
Martin Prikryl