Następna strona Poprzednia strona Spis treści

10. Docelowy NAT (DNAT) do tej samej sieci

Jeśli wykonujesz przekazywanie portów (ang. portforwarding) do tej samej sieci, musisz upewnić się że zarówno przyszłe pakiety jak i odpowiedzi na nie przejdą przez maszynę prowadzącą NAT (by mogły być zmodyfikowane). Kod odpowiedzialny za NAT blokuje obecnie (od 2.4.0-test6) wychodzące pakiety przekierowujące ICMP (ang. ICMP redirect), które produkowane są w momencie gdy pakiety po przejściu przez NAT wychodzą tym samym interfejsem do którego dotarły, ale maszyna do której są skierowane nadal stara się odpowiedzieć bezpośrednio do klienta (który nie rozpozna odpowiedzi).

Klasycznym przykładem jest próba dostępu przez personel wewnętrzny do 'publicznego' serwera WWW, który tak naprawdę przesłonięty jest przez DNAT z publicznego adresu (1.2.3.4) na adres sieci wewnętrznej (192.168.1.1), tak jak poniżej:

# iptables -t nat -A PREROUTING -d 1.2.3.4 \
        -p tcp --dport 80 -j DNAT --to 192.168.1.1

Jednym ze sposobów jest utrzymywanie wewnętrznego serwera DNS który zna prawdziwe (wewnętrzne) adresy IP publicznego serwera WWW i przekazuje wszystkie inne wywołania do zewnętrznego serwera DNS. Oznacza to że logowanie dostępu na twoim serwerze WWW wskaże adresy IP z sieci wewnętrznej poprawnie.

Innym sposobem jest zapewnienie, by maszyna prowadząca NAT mapowała również źródłowy adres IP na jej własny, dla połączeń tego typu, ogłupiając serwer i sprawiając by odpowiadał przez nią. W tym przykładzie, wykonujemy co następuje (zakładając że wewnętrzny adres IP komputera prowadzącego NAT to 192.168.1.250):

# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
        -p tcp --dport 80 -j SNAT --to 192.168.1.250

Ponieważ reguła PREROUTING jest sprawdzana pierwsza, pakiety będą od razu skierowane do wewnętrznego serwera WWW: możemy stwierdzić które wywołania pochodzą z sieci wewnętrznej sprawdzając źródłowe adresy IP.


Następna strona Poprzednia strona Spis treści