Różnice między wybraną wersją a wersją aktualną.
| Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
|
sk1:nf [2019/06/03 00:03] jkonczak [NAT (Network Address Translation) – translacja adresów] |
sk1:nf [2020/06/09 12:20] (aktualna) 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: | ||
| Linia 163: | Linia 208: | ||
| *''-p icmp'' pozwala na filtrowania icmp, np: \\ ''iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT'' | *''-p icmp'' pozwala na filtrowania icmp, np: \\ ''iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT'' | ||
| - | API systrmów Windows do tworzenia firewalli: https://msdn.microsoft.com/en-us/library/aa366510%28v=vs.85%29.aspx | + | API systemów Windows do tworzenia firewalli: https://msdn.microsoft.com/en-us/library/aa366510%28v=vs.85%29.aspx |