On Sat, 03 Nov 2018 13:32:14 +0100, m wrote:
> Wydawało mi się że nie trzeba. Tj sądziłem zawsze że jeżeli to third
> party odbiera połączenie, to wie z którego portu to połaczenie jest
> wykonywane.
To się oczywiście zgadza.
> Pakiety które idą potem na ten sam port, trafiają na port
> wyjściowy kompa za NATem.
Tablica sesji NAT to nie tylko relacja "port zewnętrzny = klient w
środku". To zestaw kilku informacji: port po translacji + adres IP po
translacji + zdalny host + zdalny port + interfejs wyjściowy routera.
Zatem to co piszesz jest prawdą, ale tylko i wyłącznie w kontekście
połączenia/sesji między "kompem za NATem" a serwerem "third-party". Nikt
inny z zewnątrz nie "wstrzeli się" w tą samą sesję.
W praktyce pojedynczy wpis tablicy sesji wygląda tak (przykład na
FreeBSD, zależnie od implementacji routera może być wyświetlony nieco
inaczej):
em0 tcp 85.86.45.1:54887 (192.168.0.8:56309) -> 80.88.105.69:80
Powyższe, w luźnym tłumaczeniu brzmi "host 192.168.0.8 użył swojego portu
56309 by nawiązać połączenie z 80.88.105.69 na porcie 80, po NAT
podmieniłem adres prywatny na mój własny 85.86.45.1 i zmieniłem port na
54887, następnie wypuściłem pakiet interfejsem em0".
W drodze powrotnej, tylko i wyłącznie pakiety odpowiadające temu wzorcowi
trafią do 192.168.0.8 (czyli pakiety pochodzące od 80.88.105.69 z portu
80, zaadresowane do 85.86.45.1 na port 54887 i pojawiające się na
interfejsie em0 routera).
Mateusz
|