Надо настроить полностью прозрачный прокси, для фильтрации некоторых url. Сделал как написано в мануале, вроде работает:
ip -f inet rule add fwmark 1 lookup 100
ip -f inet route add local default dev eth0 table 100
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
Проблема в том, что этот сервер у меня еще как firewall, который в цепочке FORWARD блочит определенные ip,
а http трафик, который уходит на squid c помощью tproxy, через FORWARD уже не проходит.
Как это можно реализовать?
Tproxy не хочет лезть в POSTROUTING
TPROXY target: used from hooks POSTROUTING, but only usable from PREROUTING
Все идет от непонимания работы iptables) А именно того, что через цепочку FORWARD идет только транзитный трафик, в то время как вы хотите обрабатывать локальный (он же на проксю идет локальную?) Выводы следующие: фильтровать придется также и н INPUT (ну или OUTPUT). Посмотрите внимательно порядок прохождения пакетов.