Jak się obchodzi programowo NAT (Network Address Translation)? Zainstalowałem sobie virtualną maszynę z Windowsem XP. VM jest za NAT-em. Z VM mogę pingować na HOST-a, ale z HOST-a na VM już nie bo jest za NAT-em. Jak programowe obchodzenie NAT-u wygląda w praktyce?
możesz na routerze przekierować port na twój adres IP lub tunelować połączenie, ale wtedy musisz posiadać zewnętrzny serwer (komputer z publicznym adresem IP) np programem putty.
Ale jak programowo? Chcesz aby cudownie porty twojego komputera za natem były widziane z zewnątrz? Tak się nie da. Jeśli nie chcesz tunelu to musisz postawić serwer, który będzie pośrednikiem między klientami. Programowo nazywa się to aplikacja klient - serwer.
Można tak: http://en.wikipedia.org/wiki/STUN
maszynaz napisał(a)
a programowo jak?
Chcesz poznać wewnętrzny adres ip hosta znajdującego się za routerem? Ty wiesz o czym mówisz czy mówimy o czym innym? Przecież router tłumaczy adres (Address Translation) na zewnętrzny i tylko ten adres znasz (pomijam tu tunelowanie i przekierowanie portów).
Bo w jedną stronę da się komunikować, więc można przesłać jakieś dane potrzebne do komunikacji w drugą stronę. Da się tak?
Albo tak, że jak VM wysyła wiadomość po UDP do Hosta to host automatycznie po odebraniu wiadomości (Receive) odsyła wiadomość na tym samym sockecie.
Edit:
I tak właśnie działa bo właśnie sprawdziłem.
no przecież jak już nawiążesz połączenie to ono jest nawiązane. Jak jeden komp ma publiczne IP to po prostu ten za NATem musi inicjować połączenie
To jest opcja w VM. Zmień w ustawienie sieci w VM z NAT na Bridged.