Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja Ostatnia wersja Both sides next revision | ||
sk1:nf [2019/06/03 00:03] jkonczak [NAT (Network Address Translation) – translacja adresów] |
sk1:nf [2020/06/08 16:23] jkonczak [[Ekstra] Appendix] |
||
---|---|---|---|
Linia 125: | Linia 125: | ||
Jeśli zachodzi konieczność by ruch z sieci publicznej trafiał do komputera wewnątrz sieci lokalnej, trzeba zmienić adres docelowy (destination address), stąd nazwa //Destination NAT// (//DNAT//). Naturalnie urządzenie na styku sieci musi zmienić adres zanim podejmie decyzję o routingu (tj. decyzję gdzie pakiet ma trafić). | Jeśli zachodzi konieczność by ruch z sieci publicznej trafiał do komputera wewnątrz sieci lokalnej, trzeba zmienić adres docelowy (destination address), stąd nazwa //Destination NAT// (//DNAT//). Naturalnie urządzenie na styku sieci musi zmienić adres zanim podejmie decyzję o routingu (tj. decyzję gdzie pakiet ma trafić). | ||
+ | ++++ Ilustracja do NATów | | ||
+ | <html><div style="border: 1px gray solid"></html> | ||
+ | {{:sk1:nat.svg|}} | ||
+ | SNAT: | ||
+ | - PC1 chce wysłać pytanie DNS pod jakim adresem znajdzie serwer put.poznan.pl | ||
+ | - PC1 adresuje wiadomość: | ||
+ | * w polu odbiorcy wpisuje 1.1.1.1 (znany adres serwera DNS) | ||
+ | * w polu nadawcy wpisuje 192.168.0.2 (swój adres IP) | ||
+ | - PC1 wysyła wiadomość przez bramę domyślną - router R1, adres 192.168.0.1 | ||
+ | - R1 wybiera trasę dla pakietu (wykonuje routing) i kieruje pakiet w stronę internetu | ||
+ | - R1 po wykonaniu trasowania (POSTROUTING) dokonuje **translacji adres źródłowego**: \\ zamienia adres źródłowy z 192.168.0.2 na 93.184.216.34 | ||
+ | - R1 wysyła wiadomość w intenet | ||
+ | - Serwer DNS (pod adresem 1.1.1.1) dostaje wiadomość adresowaną do niego z adresu 93.184.216.34 i odpowiada na nią adresując ją: | ||
+ | * od 1.1.1.1 (od siebie) | ||
+ | * do 93.184.216.34 (do adresu, z którego otrzymał pytanie) | ||
+ | - R1 otrzymuje wiadomość z adresu 1.1.1.1 kierowaną na adres 93.184.216.34 | ||
+ | - Przed wykonaniem trasowania R1 sprawdza, czy pakiet należy do połączenia dla którego już wykonuje translację adresów. W tym przypadku tak – zamienia więc adres //docelowy// z 93.184.216.34 na 192.168.0.2 | ||
+ | - R1 wykonuje trasowanie i określa, że pakiet kierowany do 192.168.0.2 ma trafić do PC1 | ||
+ | - PC1 otrzymuje odpowiedź z adresem źródłowym 1.1.1.1 i docelowym 192.168.0.2 | ||
+ | DNAT: | ||
+ | - PC1 wysyła żądanie nawiązania połączenia TCP na port 443 ze swojego do adresu 150.254.5.114 | ||
+ | - R1 wykonuje translację SNAT i wysyła w internet pakiet: | ||
+ | * z adresu 93.184.216.34 | ||
+ | * do adresu 150.254.5.114 | ||
+ | * protokołu TCP, na port docelowy 443 | ||
+ | - R2 dostaje wiadomość z 93.184.216.34 na swój adres IP | ||
+ | - Przed wykonaniem trasowania (PREROUTING) R2 sprawdza czy dla tego pakietu powinien wykonać trasowanie | ||
+ | - R2 znajduje regułę: //pakiety TCP adresowane na port 443 tego komputera mają trafiać do 192.168.0.3//, więc dokonuje **translacji adresu docelowego**: zmienia adres docelowy 150.254.5.114 na 192.168.0.3 | ||
+ | - R2 wykonuje trasowanie i określa, że pakiet kierowany do 192.168.0.3 ma trafić do //Serwer WWW// | ||
+ | - //Serwer WWW// otrzymuje pakiet: | ||
+ | * z adresu 93.184.216.34 | ||
+ | * do adresu 192.168.0.3 | ||
+ | - //Serwer WWW// generuje w odpowiedzi pakiet i adresuje go: | ||
+ | * od 192.168.0.3 (od siebie) | ||
+ | * do 93.184.216.34 (do adresu, z którego otrzymał pytanie) | ||
+ | - //Serwer WWW// przesyła odpowiedź do bramy domyślnej 192.168.0.1 (R2) | ||
+ | - R2 określa, że pakiet kierowany do 93.184.216.34 ma iść do internetu i go tam kieruje | ||
+ | - R2 po wykonaniu trasowania sprawdza, czy pakiet należy do połączenia dla którego już wykonuje translację adresów. W tym przypadku tak – zamienia więc adres //źródłowy// z 192.168.0.3 na 150.254.5.114. | ||
+ | - R2 wysyła pakiet do internetu | ||
+ | - R1 otrzymuje pakiet | ||
+ | * z adresu 150.254.5.114 | ||
+ | * do adresu 93.184.216.34 | ||
+ | - R1 wykonuje translację SNAT, wysyła pakiet do PC1 | ||
+ | <html></div></html> | ||
+ | ++++ | ||
=== iptables i stanowość firewalla === | === iptables i stanowość firewalla === | ||
Linia 155: | Linia 200: | ||
===== [Ekstra] Appendix ===== | ===== [Ekstra] Appendix ===== | ||
- | Dobry artykuł o nftables, z wstępem opisującym historię filtrowania pakietów w Linuksie: <del>https://badsector.pl/w-praktyce/artykuly/nftables-nowy-firewall-linuksa-cz-1.195.html?full=1</del> ([[http://www.cs.put.poznan.pl/jkonczak/archive/Nftables_nowy_firewall_Linuksa_BADSECTOR_PL.html|kopia]]) | + | Dobry artykuł o nftables, z wstępem opisującym historię filtrowania pakietów w Linuksie:https://randomseed.pl/pub/analizy/nftables-nowy-firewall-linuksa/ ([[http://www.cs.put.poznan.pl/jkonczak/archive/Nftables_nowy_firewall_Linuksa_BADSECTOR_PL.html|kopia]]) |
Inne moduły: | Inne moduły: |