Klient
gRPC za NAT
Serwer
gRPC za NAT
Czy dało by radę zrobić usługę na serwerze Trzeci
który widzi i Klient
i Serwer
tak aby umożliwić połączenie Klient
<==> Serwer
?
Klient
gRPC za NAT
Serwer
gRPC za NAT
Czy dało by radę zrobić usługę na serwerze Trzeci
który widzi i Klient
i Serwer
tak aby umożliwić połączenie Klient
<==> Serwer
?
A gdzie problem? gRPC używa HTTP2, który używa TCP. Czemu używanie TCP, gdzie po drodze jest NAT miałoby nie działać?
Jest taka sytuacja:
Klient Serwer
[192.168.1.100] <==> [INTERNET] <==> [192.168.7.200]
Jak chce połączyć takie dwa komputery ze sobą to mogę je podłączyć do VPN-a
Klient Serwer
[192.168.1.100] <==> [INTERNET] <==> [192.168.7.200]
[10.8.1.1] <==> [VPN] <==> [10.8.1.2]
To zadziała , zastanawiam sie czy da sie bez VPN-a
Tunele SSH, albo socat może też da radę.
EDIT: czekaj: klient jest widoczny przez trzeci, czy trzeci jest widoczny przez klient?
klient # ssh -L 127.0.0.1:8888:127.0.0.1:9999 user@trzeci
serwer # ssh -R 127.0.0.1:9999:127.0.0.1:${PORT_SERWERA} user@trzeci
chyba jakoś tak bym próbował.
Poczytaj o prywatnym/publicznym ip. Sprawdź, czy dostawca internetu dla Klient
i Server
udostępnia publiczne IP.
Pytanie bardziej DevOpsowe. Poczytaj https://en.wikipedia.org/wiki/NAT_traversal
Natomiast pytanie, czemu nie chcesz VPNa między nimi? I czym są Klient i Serwer?
Myślałem bardziej nad rozwiązaniem które wykorzystuje zbudowane w gRPC mechanizm Reflection
serwer nawiązuje do połączenie do pośredni
, za pomocą Reflection (albo pliku proto wgranego na serwer) udostępnia swój interfejs i czeka na dane
klient wysyła zapytanie które zostaje przekazane do serwer
za pomocą połączenia serwer
->pośredni
serwer
realizuje zapytanie i odstała wynik do pośredni
pośredni
odsyła wynik do klient
Taką pokrętna metodę wymyśliłem :D