У меня есть некоторые правила iptables в шлюзе Linux (сервер ubuntu 12.04), и все работает хорошо. Я настроил прозрачный прокси-сервер squid и тоже работает. Я использую это правило.
$IPT -t nat -A PREROUTING -p tcp --destination-port 80 \
-j REDIRECT --to-ports 3128
Но я должен использовать этот сервер для тестирования и демонстраций веб-разработки и отклоняет все HTTP-запросы из Интернета (eht0). Я без проблем могу получить доступ из локальной сети (eth1).
Когда я комментирую правило выше. Все снова работает. Почему это правило блокирует HTTP-запросы из WAN-сети?
На самом деле это правило не блокирует HTTP-трафик из Wan, а перенаправляет этот трафик на ваш прокси.
Другими словами, ваше фактическое правило перенаправляет как входящий, так и исходящий HTTP-трафик на ваш шлюз на порт 3128.
Я бы предложил указать интерфейсы источника / назначения:
# Traffic from LAN to Internet is redirected to your Proxy
$IPT -t nat -A PREROUTING -p tcp -i eth1 -o eth0 --destination-port 80 -j REDIRECT --to-ports 3128
# Traffic from Internet is redirected to your gateway on port 80
$IPT -t nat -A PREROUTING -p tcp -i eth0 --destination-port 80 -j REDIRECT --to-ports 80