vsafonin |
|
Темы:
9
Сообщения:
60
Участник с: 03 февраля 2012
|
Всем привет! Есть задача настроить squid в прозрачном режиме. 1) добавляю в squid.conf http_port 3129 tproxy 2) Настраиваю iptables iptables -t mangle -N DIVERT iptables -t mangle -A DIVERT -j MARK --set-mark 1 iptables -t mangle -A DIVERT -j ACCEPT iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129 3) Делаю следующее: ip -f inet rule add fwmark 1 lookup 100 ip -f inet route add local default dev eth1 table 100 echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter curl -I4 http://version6.ru/ HTTP/1.1 200 OK X-Powered-By: PHP/5.3.3-7+squeeze14 Set-Cookie: DokuWiki=kefdjai034aifjfrbvpu2365s0; path=/; HttpOnly Set-Cookie: DW68700bfd16c2027de7de74a5a8202a6f=deleted; expires=Mon, 07-Nov-2011 20:22:34 GMT; path=/; httponly Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Type: text/html; charset=utf-8 Date: Tue, 06 Nov 2012 20:22:35 GMT Server: lighttpd/1.4.28 Понимаю что нужно iptables вертеть, но я в нем слабоват! прошу помощи |
kurych |
|
Темы:
0
Сообщения:
1394
Участник с: 06 ноября 2011
|
Попробуйте в п.3 поменять маршрут в маршруте “ip -f inet route add local default dev eth1 table 100” eth1 на lo. Если не заработает, то вывод команд sudo iptables -S -v -t mangle sudo ss -npl | grep squid |
sleepycat |
|
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
когда я тягался с кальмаром, для прозрачного режима надо было гдето дописать transparent чтото в это роде. Правила фаера не глядел, торопился…
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
vsafonin |
|
Темы:
9
Сообщения:
60
Участник с: 03 февраля 2012
|
kurych Не помогло: sudo iptables -S -v -t mangle [sudo] password for vovan: -P PREROUTING ACCEPT -c 275 40777 -P INPUT ACCEPT -c 743 304174 -P FORWARD ACCEPT -c 0 0 -P OUTPUT ACCEPT -c 735 194966 -P POSTROUTING ACCEPT -c 735 194966 -N DIVERT -N prevent_tproxy_loop -A PREROUTING -p tcp -m socket -c 4072 946519 -j prevent_tproxy_loop -A PREROUTING -p tcp -m tcp --dport 80 -c 0 0 -j TPROXY --on-port 3129 --on-ip 0.0.0.0 --tproxy-mark 0x1/0xffffffff -A PREROUTING -p tcp -m socket -c 0 0 -j DIVERT -A PREROUTING -p tcp -m tcp --dport 80 -c 0 0 -j TPROXY --on-port 3129 --on-ip 0.0.0.0 --tproxy-mark 0x1/0x1 -A DIVERT -c 0 0 -j MARK --set-xmark 0x1/0xffffffff -A DIVERT -c 0 0 -j ACCEPT -A prevent_tproxy_loop -c 4072 946519 -j MARK --set-xmark 0x1/0xffffffff -A prevent_tproxy_loop -c 4072 946519 -j ACCEPT sudo ss -npl | grep squid LISTEN 0 128 :::3129 :::* users:(("squid",1970,17)) sleepycat На сколько мне известно это актуально в версии squid 2* у меня же 3.2 в нем такой опции нет вообще, есть только tproxy |
sleepycat |
|
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
понятно, ну да я подозревал , что может опция уже устарела.iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
kurych |
|
Темы:
0
Сообщения:
1394
Участник с: 06 ноября 2011
|
А что это у Вас за цепочка "prevent_tproxy_loop"? Вы ее сами создавали где-нибудь? Все пакеты (смотрим значения счетчиков в -с) уходят через эту цепочку. Может, сначала очистить все таблицы в iptables, а потом уже заново попробовать прописать правила? И еще такой вопрос: обрисуйте поконкретнее схему подключения и кого надо пропускать через прокси прозрачно. То есть, компьютер со squid-ом является шлюзом для клиентов локальной сети или весь трафик генерируется на нем? Сколько интерфейсов на этом компьютере и какой куда смотрит? |
vsafonin |
|
Темы:
9
Сообщения:
60
Участник с: 03 февраля 2012
|
kurych Почистил, удалил, заного прописал: P PREROUTING ACCEPT -c 73 26203 -P INPUT ACCEPT -c 228 39315 -P FORWARD ACCEPT -c 0 0 -P OUTPUT ACCEPT -c 176 14032 -P POSTROUTING ACCEPT -c 176 14032 -N DIVERT -A PREROUTING -p tcp -m socket -c 167 13859 -j DIVERT -A PREROUTING -p tcp -m tcp --dport 80 -c 0 0 -j TPROXY --on-port 3129 --on-ip 0.0.0.0 --tproxy-mark 0x1/0x1 -A DIVERT -c 167 13859 -j MARK --set-xmark 0x1/0xffffffff -A DIVERT -c 167 13859 -j ACCEPT curl -I4 http://version6.ru/ curl: (7) couldn't connect to host Подключение упростил банально до простого: 1) Squid = ничего не запрещает (только кеширует) всем все разрешает (пока не разберусь в чем проблема, в не прозрачном режиме проблем нет, все работает) 2) Iptables = ничего кроме перенаправления на squid не выполняет. 3) Да трафик генерируется на компе где все это добро установлено (рабочий ноут, на нем все оттестирую, после пойду уже на серв ставить). 4) Интерфейс 1. |
kurych |
|
Темы:
0
Сообщения:
1394
Участник с: 06 ноября 2011
|
А Вы так на одном компьютере и не разберетесь. В крайнем случае, можно попробовать клиентов в виртуалке создать. В рассматриваемой конфигурации все правила срабатывают исключительно для пакетов, приходящих из-вне (PREROUTING mangle). Поэтому в цепочку DIVERT попадают только входящие пакеты, для которых соединение установил Ваш компьютер, а в правило с “–dport 80” никто не попадает. Можете с какого-нибудь компьютера попробовать открыть http соединение к этому хосту, тогда увидите и на нем “попадание”. Можете попробовать для тестирования заменить правило “-A PREROUTING -p tcp -m tcp –dport 80 -c 0 0 -j TPROXY …” на правило "iptables -t mangle -A OUTPUT -p tcp -m tcp –dport 80 -c 0 0 -j TPROXY …" Правила для цепочки DIVERT отставить без изменений. Вероятно, это заработает для трафика на данном компьютере. Для того, что бы tproxy работало на сервере, надо учесть, что весь трафик, предназначенный для проксирования, должен проходить через этот сервер в обе стороны. То есть, он должен быть либо шлюзом для клиентов локальной сети, либо необходимый трафик должен на него перенаправляться другими способами. |