iptables не перенаправляет трафик http на мой прокси Squid!

Я организовал прозрачный прокси-сервер Squid, который прослушивает порт 3128 на localhost, чтобы заблокировать некоторые веб-сайты.

Я протестировал прокси с помощью Firefox, и он работает.

Затем я запустил это, надеясь перенаправить все http-запросы на прокси:

sudo iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 3128

К сожалению, ничего не происходит. Другие браузеры в моей системе, похоже, не используют прокси. Я не хочу настраивать каждый браузер, также использовать прокси.

sudo iptables -L показывает, что правила не назначены.

Я нахожусь на Ubuntu 13.04 и использую USB-модем 3G (ppp0) для подключения к Интернету. Любой совет приветствуется!

7
задан 13 April 2013 в 11:30

1 ответ

Я думаю, что Вы пропускаете целевой порт, пробуете следующее

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128

Без dport Вы передаете трафик с целевым портом 3128 к локальному порту 3128. То, что Вы хотите, является трафиком с целевым портом 80 вперед к локальному порту 3128.

Кроме того, для показа туземных правил использовать

iptables -t nat -L

Однако вышеупомянутые правила не будут работать на прозрачную установку прокси на той же машине браузера, потому что цепочка PREROUTING изменяет packges прежде, чем направить от удаленного клиента, и это ничего не сделает для локально сгенерированных пакетов. Таким образом мы должны использовать ВЫХОДНУЮ цепочку для пакетов, локально сгенерированных, которые идут из системы.

Попробуйте следующее вместо этого

iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner proxy --dport 80 -j REDIRECT --to-port 3128

Это только перенаправит трафик для процессов кроме тех принадлежавших proxy пользователь.

Без -m owner ! --uid-owner proxy, это не будет работать, потому что правила будут, также поймал исходящий трафик прокси-сервера, и закончите в цикле.

12
ответ дан 13 April 2013 в 11:30

Другие вопросы по тегам:

Похожие вопросы: