LINUX.ORG.RU
ФорумAdmin

Не работает tproxy на squid 3.1.0.15


0

0

Настраиваю прозрачное проксирование на генте (2.6.30 патченое + сквид 3.1.0.15 --enable-netfilter ). Делал все по мануалу официальному, плюс статья http://www.bloggik.net/index.php/articles/2010-05-26-14-30-42/18-cisco/38-squ...

5.50 - машина, с которой экспериментирую.

$IPT -t mangle -A PREROUTING -s 192.168.5.50 -p tcp -m socket -j DIVERT $IPT -t mangle -A DIVERT -j MARK --set-mark 1 $IPT -t mangle -A DIVERT -j ACCEPT $IPT -t mangle -A PREROUTING -p tcp -s 192.168.5.50 --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129

iptables -v показывает, что пакеты проходят последнее правило, но дальше пакеты как пропадают - в цепочке INPUT -t mangle их уже нет. (пытался ловить по -dport 3129). Подозреваю, что проблема где-то в iptables или в модуле Tproxy (кстати, он загружается нормально). Политику по умолчанию для INPUT поставил в ACCEPT Кто настраивал, можете подсказать, в чем может быть косяк или в какую сторону копать


Ответ на: комментарий от nnz

да, конечно..
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
А может можно как нибудь отследить, проходят пакеты через эти правила для маршрутизации или нет? по ним статистика ведется какая-нибудь?

PATRI0T
() автор топика
Ответ на: комментарий от PATRI0T

Емнип, там счетчиков нет.

но дальше пакеты как пропадают - в цепочке INPUT -t mangle их уже нет. (пытался ловить по -dport 3129)


Насколько я помню, при прозрачном проксировании номер порта назначения в заголовке пакета, как и адрес назначения, не меняется, поэтому так отловить пакеты малореально. Попробуй выделять пакеты по метке — это более корректный признак.

nnz ★★★★
()
Ответ на: комментарий от nnz

:( блин. не порадовал. я думал, что решение уже близко.. Просто я сразу пакеты пытался ловить по меткам...

iptables -L PREROUTING -t mangle -n -v --line-numbers
Chain PREROUTING (policy ACCEPT 129M packets, 70G bytes)
num   pkts bytes target     prot opt in     out     source               destination
2      207 14416 DIVERT     tcp  --  *      *       192.168.5.50         0.0.0.0/0           socket
3       68  3264 TPROXY     tcp  --  *      *       192.168.5.50         0.0.0.0/0           tcp dpt:80 TPROXY redirect 0.0.0.0:3129 mark 0x309/0xffffffff
  
iptables -L INPUT -t mangle -n -v --line-numbers
Chain INPUT (policy ACCEPT 211 packets, 12989 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      839  165K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x309 LOG flags 0 level 7 prefix ` INPUT Squid TPROXY '

Некоторые правила опустил за ненадобностью. Они никак не влияют на прозрачное проксирование.

Может что не так делаю?

$IPT -t mangle -A PREROUTING -s 192.168.5.50 -p tcp -m socket -j DIVERT
$IPT -t mangle -A DIVERT -j MARK --set-mark $tproxy
$IPT -t mangle -A DIVERT -j ACCEPT
$IPT -t mangle -A PREROUTING -p tcp -s 192.168.5.50 --dport 80 -j TPROXY --tproxy-mark $tproxy --on-port 3129

PATRI0T
() автор топика
Ответ на: комментарий от PATRI0T

Все, готово как всегда ССЗБ :)
Действительно не так делал, нужно указать помимо порта еще и адрес сквида, на котором он слушает. --on-ip 192.168.200.2
Вот так вот..
Nnz - спасибо большое за помощь и за статью на вики про Iptables

PATRI0T
() автор топика
Ответ на: комментарий от PATRI0T

Пожалуйста.
И аккуратнее с порядком правил (у тебя mark/LOG был после ESTABLISHED/ACCEPT, поэтому регистрировались только пакеты, открывающие новые соединения).

Про --on-ip надо будет в статью добавить, кстати.

nnz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.