iptables перенаправляет трафик с одного сайта на порт 8080
Моя цель - установить соединение с одним и только одним веб-сайтом через прокси-сервер. Все остальное должно быть отброшено.
Я смог сделать это успешно без прокси с этим кодом:
./iptables -I INPUT 1 -i lo -j ACCEPT
./iptabels -A OUTPUT -p udp --dport 53 -j ACCEPT
./iptables -A OUTPUT -p tcp -d www.website.com --dport 80 -j ACCEPT
./iptables -A INPUT -m conntrack --cstate ESTABLISHED,RELATED -j ACCEPT
./iptables -P INPUT DROP
./iptables -P OUTPUT DROP
Как я могу сделать то же самое, кроме перенаправления трафика на порт 8080 где-нибудь? Я пытался перенаправить в цепочке PREROUTING в таблице nat. Я не уверен, что это подходящее место для этого.
Спасибо за вашу помощь!
2 ответа
Я думаю, что конфигурация веб-сервера является лучшим местом для этого. Пожалуйста, проверьте конфигурацию виртуальных хостов сервера Apache:
Конфигурация Apache vhosts: http://httpd.apache.org/docs/2.2/vhosts/examples.html
Другие серверы имеют аналогичную конфигурацию. Вы можете указать, какие сайты (по URL) вы хотите, чтобы они обрабатывали.
Вам не нужно отбрасывать http-трафик, кроме трафика, предназначенного для конкретного домена, с использованием iptables. Вы можете перенаправить трафик http на ваш прокси-сервер, используя такое правило:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination proxy_ip:8080
У вас должен быть запущенный прокси-сервер, который поддерживает прозрачное проксирование и прослушивание порта 8080. Затем вы можете настроить прокси-сервер так, чтобы он разрешал / запрещал все, что вы хотите, например домены /URL-адреса и т. Д.
Обратите внимание, что использование доменных имен в правиле iptables не является хорошей идеей, поскольку изменения в отображении имени-IP не будут видны iptables после ввода правил.