Моя цель - иметь возможность подключиться к одному и только одному веб-сайту через прокси. Все остальное следует отбросить.
Я смог сделать это успешно без прокси с помощью этого кода:
./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. Я не уверен, что это подходящее место для этого.
Спасибо за вашу помощь!
Вам не нужно отбрасывать HTTP-трафик, кроме трафика, предназначенного для определенного домена с использованием iptables. Вы можете перенаправить http-трафик на свой прокси, используя следующее правило:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination proxy_ip:8080
У вас должен быть работающий прокси-сервер, который поддерживает прозрачное проксирование и прослушивание порта 8080. Затем вы можете настроить свой прокси, чтобы разрешить / запретить все, что вы хотите, например домены / URL-адреса и т. Д.
Обратите внимание, что использование доменных имен в правиле iptables не является хорошей идеей, поскольку изменения в сопоставлении имя-IP не будут видны iptables после ввода правил.
Я думаю, что конфигурация веб-сервера - лучшее место для этого. Пожалуйста, проверьте конфигурацию виртуальных хостов на сервере Apache:
Конфигурация Apache vhosts: http://httpd.apache.org/docs/2.2/vhosts/examples.html
Другие серверы имеют аналогичную конфигурацию. Вы можете указать, какие веб-сайты (по URL) вы хотите, чтобы они обслуживали.