OK, może dlatego, że jestem gęsty, a może po prostu nie znajduję odpowiedniego źródła, ale nie rozumiem, dlaczego jedna z tych konfiguracji IPTABLES byłaby lepsza od drugiej.
Oto moja konfiguracja:
Mam pudełko, które służy jako przezroczysty serwer proxy i router lub sortuje. Ma dwa interfejsy: ETH0 i ETH1 oraz następujący schemat adresów:
ETH0 = DHCP ETH1 = 192.168.5.1/24 obsługujący DHCP dla sieci 192.168.5.0/24 klientom znajdującym się za nim w sieci LAN
Mam zainstalowany pakiet prywatny i nasłuchuję na porcie 8080 jako przezroczysty serwer proxy. Osiągam to dzięki tej konfiguracji, aby móc upuścić to pole do istniejącej sieci przy minimalnej konfiguracji i podłączonych klientach do serwera proxy.
Oto mój oryginalny plik IPTABLES
*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT
Ta konfiguracja działa dobrze, a ruch przepływa tam iz powrotem bez problemu. Dostaję adres IP klienta źródłowego do plików logów prywatnych, a życie jest dobre.
Moje zamieszanie pojawia się, gdy zaczynam patrzeć na konfiguracje innych ludzi i widzę, że używają DNAT zamiast REDIRECT, i staram się zrozumieć prawdziwą korzyść jednej z nich. Oto przykładowa konfiguracja:
*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT
Ponownie ta konfiguracja również działa i daje mi wszystko, czego potrzebuję z perspektywy logowania ...
Która jest właściwa, a może WIĘCEJ, niż druga?
Dziękujemy za poświęcenie czasu na przeczytanie do tej pory ...
REDIRECT
zmienia docelowy adres IP, który ma zostać wysłany do samego urządzenia, zgodnie z odpowiedzią Warner @. Ale powiedziałbym, że odpowiedź nie jest całkowicie poprawna lub nieco myląca.REDIRECT
służy nie tylko do przekierowywania lokalnych pakietów. To jest naprawdęDNAT
to domniemany domyślny docelowy adres IP, 127.0.0.1, jeśli jest to pakiet lokalny lub adres IP interfejsu maszyny w przeciwnym razie, 192.168.5.1 w przypadku OP.Tak więc w tym pytaniu, bez względu na ostateczny cel, pakiety powinny najpierw dotrzeć do serwera proxy, więc
REDIRECT
idealnie nadaje się.Ponieważ
REDIRECT
nie musisz podawać adresu IP, po prostu wybierze właściwy, ma pewne zalety w stosunku doDNAT
:Jeśli adres IP urządzenia zmieni się z jakiegokolwiek powodu, nie musisz modyfikować swoich reguł, a w szczególności
DNAT
nie będzie działać dla interfejsów kontrolowanych przez DHCP.Możesz pisać i utrzymywać te same reguły dla kilku systemów (na przykład kilka instancji proxy) bez utrzymywania różnych nieznacznych wersji z powodu określonych adresów IP.
źródło