Назад | Перейти на главную страницу

squid + tproxy не работает должным образом при использовании url_rewriter и локального скрипта apache для кеширования youtube

Я использую прозрачный прокси-сервер squid для кеширования, и у меня также есть кеширование YouTube, выполненное с помощью url_rewrite и скрипта apache, запущенного на той же машине, что и squid.

Все работало нормально, пока я не решил использовать TPROXY, так как у него много преимуществ. Когда я реализовал правила tproxy в iptables, все продолжало работать, кроме воспроизведения видео на YouTube, где в игру вступают url_rewriter и скрипт apache. Url_rewriter перенаправляет запросы youtube на локальный сценарий .php, работающий на Apache (на той же машине).

Я думаю, что это как-то связано с тем, как squid взаимодействует с локальным процессом apache (где работает программное обеспечение для кеширования youtube), и каким-то образом tproxy портит это, потому что после реализации tproxy запросы к Apache отправляются с USER- IP (предыдущий без tproxy, это было с SQUID-IP), и ответ от сценария apache, вероятно, идет напрямую пользователю, а не возвращается через процесс squid.

Также скрипт apache должен иметь возможность свободно связываться с реальными серверами YouTube, чтобы получать оттуда видео.

Вот мои правила для tproxy, но я думаю, что они довольно стандартные:

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 -i eth1 -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 8081 


echo 1 > /proc/sys/net/ipv4/ip_forward 
ip rule add fwmark 1 lookup 100 
ip route add local 0.0.0.0/0 dev lo table 100 

Система - UBUNTU 12.04 с версией squid 3.1.19.

Кто-нибудь испытывал ту же проблему и, в конечном итоге, какое-то обходное решение с параметрами Squid или с правилами iptables?