Приветы.
есть четыре виртуальные машины в последовательной цепочке (можно и реальные, у кого есть столько). Первая - клиент с lynx browser-om. Последняя - web-сервер. В середине - два рутера (тоже linux хосты). Есть squid+tproxy (PROXY), двумя интерфейсами подключен к рутерам, а-ля «man in the middle». Такой стенд. Представили? Прям как тут http://www.mfisoft.ru/direction/filtratsiya-trafika/perimetr-f/ картинка. (Да и задача та же. :-) На первом рутере есть, прописанный руками, маршрут на web-сервер через proxy. И получается несимметричный маршрут от клиента до web-сервера. Запросы идут через proxy, ответы напрямую по цепочке. Все работает, клиент может ходить на страницы сервера. Везде разрешен форвардинг и снят rp_filter. Теперь запускаю TPROXY-настройки с целью засунуть трафик на squid. Вот так (по мануалам tproxy):
ip route flush table 100
ip rule add fwmark 0x1/0x1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j 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 --dport 80 -j TPROXY --on-port 3129 --tproxy-mark 0x1/0x1
Не работает! Пакеты от сервера и к серверу ходят, но сессия не поднимается, валится все в конечном итоге по таймауту, о чем говорит squid. Firewall-а нет никакого нигде. Замкнутая лабораторная система. Кому интересно, могу поделиться всем стендом в виде «экспортного» ova файла от virtualbox-а с пятью машинками на разных линуксах.
Вопрос главный - может ли так все работать? Если да, то подозреваю проблему в ACK/SYN, кто-нить поможет?
Благодарю за внимание.