Iptables - nat

Z openSUSE wiki

NAT (skr. od ang. Network Address Translation) służy do tłumaczenia adresów sieciowych. NAT jest też często nazywany maskaradą. Został opracowany przez firmę Cisco aby zapobiegać wyczerpaniu adresów IP w Internecie.

NAT dzieli się na dwa typy:

  • SNAT - zmiana adresu źródłowego (z prywatnej podsieci) na adres publiczny. SNAT stosowany jest najczęściej w przypadku uzyskania jednego, publicznego adresu internetowego oraz dzieleniu połączenia pomiędzy wiele komputerów w prywatnej sieci. Wykonywany jest zawsze po routingu.
  • DNAT - zmiana adresu docelowego na adres konkretnego hosta w podsieci. DNAT stosowany jest np, gdy za jednym adresem IP kryje się kilka serwerów usług, działających na różnych portach. Wykonywany jest zawsze przed routingiem.

Tak samo, jak w przypadku pozostałych zastosowań, tak i w przypadku NAT, iptables dla nat wymaga tworzenia odowiednich reguł oraz przypisywania ich do odpowiedniej tabeli (NAT) oraz łańcuchów. Tabela NAT, zawiera dwa łańcuchy: PREROUTING (DNAT) oraz POSTROUTING (SNAT)


Opcje iptables dotyczące NAT

  • -t nat - Wskazuje na tablicę (w tym przypadku oczywiście NAT), którą edytujemy
  • -A PREROUTING/POSTROUTING - Dodaje regułę na koniec łańcucha PREROUTING lub POSTROUTING
  • -I PREROUTING/POSTROUTING - Przeciwnie do -A, dodaje regułę na początek łańcucha
  • -s 1.2.3.4/24 - adres źródłowy lub podsieć źródłowa
  • -d 1.2.3.4/24 - adres docelowy lub podsieć docelowa
  • -i eth0 - interfejs wejściowy (może być wskazany tylko PREROUTING)
  • -o eth1 - interfejs wyjściowy (może być wskazany tylko POSTROUTING)