Różnica między SNAT a Maskaradą

39

Jestem zdezorientowany, jaka jest faktyczna różnica między SNAT a Masquerade?

Jeśli chcę udostępnić moje połączenie internetowe w sieci lokalnej, to czy powinienem wybrać SNAT czy Masquerade?

Chankey Pathak
źródło

Odpowiedzi:

41

SNATCel wymaga, aby nadać mu adres IP, aby zastosować do wszystkich pakietów wychodzących. MASQUERADECel pozwala nadać mu interfejs, a co jest na adres tego interfejsu to adres, który jest stosowany do wszystkich pakietów wychodzących. Ponadto, za pomocą SNAT, śledzenie połączeń jądra śledzi wszystkie połączenia, gdy interfejs zostanie zdjęty i przywrócony; to samo nie dotyczy MASQUERADEcelu.

Dobre dokumenty obejmują HOWTO na stronie Netfilter i stronie podręcznika iptablesman .

Shawn J. Goff
źródło
2
Mam problem ze zrozumieniem korzyści płynących z SNAT. Dlaczego to ważne, czy jądro śledzi połączenia, czy nie, gdy interfejs się psuje? W odniesieniu do MASQUERADE, dokumenty netfiltra mówią: „Ale co ważniejsze, jeśli link się zepsuje, połączenia (które i tak zostały utracone) zostaną zapomniane, co oznacza mniej zakłóceń, gdy połączenie zostanie przywrócone z nowym adresem IP”. Brzmi rozsądnie (choć jakie są usterki?) Patrząc teraz na SNAT, jaka jest korzyść ze śledzenia utraconych połączeń? Dlaczego nie skorzystać z MASQUERADE za każdym razem?
Carl G
1
@CarlG, myślę, że usterki wystąpiłyby w przypadku stałego śledzenia -j SNAT(w przeciwieństwie do śledzenia recyklingu za pomocą -j MASQUERADE), gdy nowe połączenie wychodzące z węzła LAN używa tego samego numeru portu źródłowego, co zerwane połączenie wychodzące z tego samego węzła LAN. W takim przypadku mogę sobie wyobrazić, że przychodzące pakiety ze starego połączenia wychodzącego są wysyłane do węzła, myląc jego stos TCP. Co do korzyści -j SNAT, co jeśli pole NAT jest skonfigurowane z tym samym zewnętrznym adresem IP, a jądro nadal przesyła pakiety ze starych połączeń zamiast odpowiadać za pomocą RST?
węgorz ghEEz
SNAT jest przydatny, jeśli na przykład masz wiele adresów IP przypisanych do interfejsu wychodzącego i chcesz, aby źródło NAT było jednym z nich.
pgoetz
20

Zasadniczo SNATi MASQUERADEwykonaj tę samą źródłową rzecz NAT w tabeli nat w łańcuchu POSTROUTING.

Różnice

  • MASQUERADEnie wymaga, --to-sourceponieważ został stworzony do pracy z dynamicznie przypisywanymi adresami IP

  • SNAT działa tylko ze statycznymi adresami IP, dlatego tak jest --to-source

  • MASQUERADEma dodatkowy narzut i jest wolniejszy niż SNATdlatego, że za każdym razem, gdy MASQUERADEcel zostanie trafiony przez pakiet, musi sprawdzić adres IP, aby go użyć.

UWAGA : Typowy przypadek użycia MASQUERADE: Instancja AWS EC2 w VPC, ma prywatny adres IP w VPC CIDR (np. 10.10.1.0/24) - na przykład 10.10.1.100, ma również publiczny adres IP, aby komunikować się z Internet (zakładając, że jest w publicznej podsieci), przez który prywatny NAT 1: 1 NAT. Publiczny adres IP może się zmienić po ponownym uruchomieniu instancji (jeśli NIE jest to EIP), MASQUERADEjest lepszą opcją w tym przypadku użycia.

Ważne: Nadal można używać MASQUERADEcelu ze statycznym adresem IP, należy jednak pamiętać o dodatkowym obciążeniu.

Referencje

Terry Wang
źródło