Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Zastosowania sieciowe
NAT
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
HTML (jeden plik)
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

NAT

<- ->
 

NAT (Network Address Translation) w Linuksie można zrobić na dwa sposoby:

  • wykorzystując infrastrukturę netfilter jądra 2.4 i 2.6.

  • korzystając z narzędzi do kontrolowania sieci z pakietu iproute2.

Oryginalna dokumentacja Netfilter w języku angielskim

Najlepszym sposobem jest wykorzystanie możliwości netfilter, gdyż wykonuje on nat przed (PREROUTING) lub po (POSTROUTING) routingu, co daje nam możliwość tak skonfigurowania firewalla, jak by nie było wykonywane NAT. NAT w iptables tworzymy dodając regułki do tabeli "nat". Żeby sprawdzić jakie są dostępne "Chains" w tabeli nat, należy wykonać takie polecenie:

# iptables -t nat -L

W poniższych przykładach założyliśmy, że 1.2.3.4 jest adresem IP podniesionym na interfejsie zewnętrznym ($if_wan) zaś 192.168.1.0/16 to adresy na interfejsie sieci lokalnej ($if_lan).

DNAT

W PREROUTING są regułki do wykonania DNAT (Destination NAT). Zamienia to adres hosta docelowego na nasz prywatny, w ten sposób możemy przekierować ruch na dowolny host w sieci prywatnej:

# iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to 192.168.1.2

Można określić na jakim interfejsie będzie wykonany NAT poprzez opcję -i $inteface. Opcja -o w PREROUTING nie jest dostępna.

Możemy też dokonać przekierowania ruchu kierowanego na konkretny port, zwanego potocznie przekierowaniem portu:

# iptables -t nat -A PREROUTING -i $if_wan -p TCP -d 1.2.3.4 --dport 8000  -j DNAT --to 192.168.1.11:80

SNAT i MASQUERADE

SNAT (Source NAT) zmienia to adres nadawcy np. z puli adresów prywatnych na adres z puli publicznej, co jest wykorzytywane zwykle do "dzielenia łącza".

# iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 1.2.3.4

Jeśli podamy maskę podsieci, zostanie wykorzystana większa ilość adresów.

MASQUERADE wykonuje to samo co SNAT z tym, że na adres interfejsu jakim wychodzi pakiet. Używać go należy tylko kiedy nasz adres publiczny zmienia się. (np. w połączeniach ze zmiennym IP publicznym)

Zakończenie.

Po ustawieniu DNAT na adres wewnętrzny zauważymy, że jest problem z dostępem do ip 1.2.3.4 z wewnątrz sieci. Dzieje się tak dlatego, że adres source zostaje bez zmian, dlatego też pakiet nie wraca do bramy. Musimy więc zmusić, aby host wysyłał odpowiedź do bramy. Możemy wykonać to w następujący sposób:

# iptables -t nat -A POSTROUTING -o $if_lan -s 192.168.0.0/16 \
		    -d 1.2.3.4 -j SNAT --to 192.168.0.1

Gdzie $if_lan to interfejs lokalnej sieci, a 192.168.0.1 to adres na tym interfejsie.

 
<- ->