Ладно, это может быть из-за того, что я плотный или просто не могу найти правильный источник, но я не могу понять, почему одна из этих установок IPTABLES будет лучше, чем другая.
Вот моя установка:
У меня есть ящик, который служит в качестве прозрачного прокси-сервера и маршрутизатора или сортировки. Он имеет два интерфейса, ETH0 и ETH1, и следующую схему адресов:
ETH0 = DHCP ETH1 = 192.168.5.1/24, обслуживающий DHCP для сети 192.168.5.0/24 клиентам за ним в локальной сети
Я установил privoxy и слушаю порт 8080 как прозрачный прокси. Что я делаю с этой настройкой, так это чтобы у меня была возможность поместить этот ящик в существующую сеть с минимальной конфигурацией и подключенными клиентами к прокси.
Вот мой оригинальный файл 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
Эта конфигурация работает нормально, и трафик течет туда-сюда без проблем. Я получаю IP-адрес исходящих клиентов в лог-файлах privoxy, и жизнь в порядке.
Моя путаница возникает, когда я начинаю смотреть на конфигурации других людей и вижу, что они используют DNAT вместо REDIRECT, и я пытаюсь понять реальное преимущество одного над другим. Вот пример конфигурации:
*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
Опять же, эта конфигурация тоже работает и дает мне все, что мне нужно с точки зрения ведения журнала ...
Что является правильным, или, может быть, более правильным, чем другой?
Спасибо, что нашли время, чтобы прочитать это далеко ...
REDIRECT
изменяет IP-адрес назначения для отправки на саму машину в ответ на вопрос Warner @. Но я бы сказал, что ответ не совсем правильный или немного вводит в заблуждение.REDIRECT
не только для перенаправления локальных пакетов. Это действительно,DNAT
в котором IP-адрес назначения неявный, 127.0.0.1, если это локальный пакет, или IP-адрес интерфейса машины в противном случае, 192.168.5.1 в случае OP.Таким образом, в этом вопросе, независимо от конечного пункта назначения, пакеты должны сначала достичь прокси-сервера, поэтому
REDIRECT
он идеально подходит.Поскольку
REDIRECT
вам не нужно указывать IP-адрес, он просто выберет правильный, у него есть некоторые преимущества передDNAT
:Если по какой-либо причине IP-адрес устройства изменится, вам не нужно изменять свои правила, в частности,
DNAT
он не будет работать для интерфейсов, управляемых DHCP.Вы можете написать и поддерживать одни и те же правила для нескольких систем (например, для нескольких экземпляров прокси-сервера), не сохраняя слегка отличающиеся версии из-за определенных IP-адресов.
источник