Страница 1 из 1
ipfw fwd и прозрачный прокси
Добавлено: 2008-01-10 16:47:06
zumer
Есть машина с FreeBSD 6.1-RELEASE с ОДНИМ интерфейсом 192.168.0.5 (на которой просто вертится самба). На ней, перекомпилил ядро с поддержкой IPFW, поднял сквид и сделал его прозрачным. Но где-то вкралась ошибка, которую никак не могу найти. У юзеров GateWay натравлен на эту машинку и есть циска с адресом 192.168.0.1 с поднятым натом. Если в IE юзеров назначаешь прокси - все работает, а как ставишь "не использовать прокси" - все сдыхает. Версия сквида - squid-3.0.1. Вот конфиги:
ipfw show
00010 9176 3952596 allow tcp from any to any established
00020 564 256046 allow ip from any to any via lo0
00030 0 0 deny ip from any to 127.0.0.0/8
00040 0 0 deny ip from 127.0.0.0/8 to any
00050 0 0 check-state
00060 191 12224 allow tcp from 192.168.0.5 to any keep-state
00070 49 3042 allow udp from 192.168.0.0/24 to 192.168.0.5 dst-port 53,123
00080 250 39312 allow udp from 192.168.0.5 to any dst-port 53,123 keep-state
00090 0 0 deny ip from any to any frag
00100 0 0 allow log udp from any to any dst-port 67
00110 34 1632 allow tcp from 192.168.0.0/24 to 192.168.0.5 dst-port 110,25
00100 0 0 allow tcp from any to 192.168.0.5 dst-port 20,21,22
00120 134 16880 allow udp from 192.168.0.0/24 to 192.168.0.0/24 dst-port 137,138,139
00130 0 0 deny icmp from any to any icmptypes 5,9,13,14,15,16,17
00140 28 1998 allow icmp from any to any
00150 0 0 allow log tcp from 192.168.0.5 to any dst-port 80
00160 7 336 allow log tcp from 192.168.0.0/24 to any dst-port 80,443,21 in
00170 7 336 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80,443,21
00300 130 16574 allow log ip from any to any
65535 0 0 deny ip from any to any
в squid.conf
http_port 3128 transparent
присутствует.
Как видно правило 170 выполняется, но куда же уходят пакеты? В логах сквида ничего не отображается (т.е. отображаются запросы только тех у кого в IE сказано ходить через проски). Может ipfw не работает с одной сетевой картой, или какое-то правило отсутствует, или сквид неправильно настроен? Подскажите плиз. И еще попутно вопросик - как пишется правило fwd чтоб оно в лог писАло?
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-10 19:25:39
dikens3
В ядре присутствует?
Код: Выделить всё
35900 0 0 fwd 127.0.0.1 log logamount 300 tcp from any to any dst-port 80,3128,8000,8001,8080,8081 out via fxp0
Такой вот у меня есть пример.
И ещё, 443 порт можешь убрать, SSL не работает прозрачно. Да и 21 FTP скорее всего тоже.(сам не пробовал)
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-11 11:22:55
Гость
[quote="dikens3"]
В ядре присутствует?
Конечно.
Код: Выделить всё
35900 0 0 fwd 127.0.0.1 log logamount 300 tcp from any to any dst-port 80,3128,8000,8001,8080,8081 out via fxp0
Такой вот у меня есть пример.
127.0.0.1 указан без порта - будет работать? Ведь пакеты на 80 порт идут, а их на 3128 завернуть нужно. Вообще их все заворачивать нужно.
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-11 13:36:42
dikens3
127.0.0.1 указан без порта - будет работать?
Не проверял. :-)
Код: Выделить всё
36000 fwd 127.0.0.1,3128 log logamount 300 tcp from any to any dst-port 80,3128,8000,8001,8080,8081 out via fxp0
И ещё:
00170 7 336 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80,443,21
Если есть отправленные пакеты на squid, значит должны быть логи в нём.
в squid.conf
http_port 127.0.0.1:3128 transparent
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-11 15:44:19
zumer
00170 7 336 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80,443,21
Если есть отправленные пакеты на squid, значит должны быть логи в нём.
В том то и дело, что нету! Не видит сквид эти пакеты. я переделал fwd 192.168.0.5,3128 чтоб он на этот порт слал, так как другие машины (пока) ходят в принудиловке. Но ни так, ни иначе, ни вообще без IP - не видит. А в сквиде есть опция - вести расширенный лог?
в squid.conf
http_port 127.0.0.1:3128 transparent
здесь тоже сделал http_port 192.168.0.5:3128 transparent.
Не хочет сквид видеть завернутые пакеты, но охотно обслуживает кто в принудиловке. Даже с моей машины: ставлю прокси - лезет (и в логах пишет) снимаю - ничего. В IE "Не возможно отобразить страницу". Может это 3 версия сквида глючит? Или кроме этой строчки в конфе сквида что-то еще ВАЖНОЕ для прозрачности нужно прописать?
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-11 15:51:37
dikens3
И в проксе и в ipfw нужно сделать 127.0.0.1. Пробуй.
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-13 13:51:47
begemoto
Такая же проблема. FreeBSD6.2+ipfw+Squid2.6r7
Transparent proxy не работает

Причем при компиляции есть опции на включение поддержку transparent IPF и transparent IPFilter. Про IPFW не слова.
По всем мануалам:
в конфиге:
в ядре
в IPFW
Код: Выделить всё
fwd 127.0.0.1,3128 tcp from $local_net to any 80
Принудительно работает, прозрачно нет. В счетчиках ipfw show видно, что пакеты на 3128 заворачиваются.
Гугль молчит. Что делать?
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-13 14:10:43
dikens3
Принудительно работает, прозрачно нет. В счетчиках ipfw show видно, что пакеты на 3128 заворачиваются.
Гугль молчит. Что делать?
Я тоже буду молчать, ибо дома на pf прозрачный прокси, а на работе ещё squid 2.5 + ipfw.
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-13 14:29:47
begemoto
И еще, tcpdump -i xxx "port
3128" на всех интерфейсах ничего не находит.
Зато tcpdump -i $int_if
"port 80" показывает:
Код: Выделить всё
listening on rl1, link-type EN10MB (Ethernet), capture size 96 bytes
14:26:21.825189 IP 192.168.1.1.2176 > yandex.ru.http: S 3883930653:3883930653(0) win 16384 <mss 1460,nop,nop,sackOK>
14:26:21.825380 IP yandex.ru.http > 192.168.1.1.2176: S 28885556:28885556(0) ack 3883930654 win 65535 <mss 1460,sackOK,eol>
14:26:21.825513 IP 192.168.1.1.2176 > yandex.ru.http: . ack 1 win 17520
14:26:21.825936 IP 192.168.1.1.2176 > yandex.ru.http: P 1:408(407) ack 1 win 17520
14:26:21.834949 IP yandex.ru.http > 192.168.1.1.2176: R 28885557:28885557(0) win 0
14:26:21.839741 IP yandex.ru.http > 192.168.1.1.2176: R 28885557:28885557(0) win 0
14:26:24.824819 IP yandex.ru.http > 192.168.1.1.2176: S 28885556:28885556(0) ack 3883930654 win 65535 <mss 1460,sackOK,eol>
14:26:24.824981 IP 192.168.1.1.2176 > yandex.ru.http: R 3883930654:3883930654(0) win 0
14:26:30.823906 IP yandex.ru.http > 192.168.1.1.2176: S 28885556:28885556(0) ack 3883930654 win 65535 <mss 1460,sackOK,eol>
14:26:30.824069 IP 192.168.1.1.2176 > yandex.ru.http: R 3883930654:3883930654(0) win 0
Т.е. пакеты на 3128 не заворачиваются??? доходят до места! (через НАТ видимо), ответ возвращается!, но до источника запроса не доходят!
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-13 14:35:12
begemoto
Отлично! Разобрался. Правило fwd после NAT'a стояло. Поставил перед ним - все ОК!
Кстати, адрес везде (в fwd и конфиге squid) прописан не 127.0.0.1, а 192.168.1.x. Т.к. в первую очередь не хотел поднимать squid на всех интерфейсах.
И еще: после того, как все заработало
tcpdump -i rl1 "port 3128" по прежнему ничего не выдает... Странно, почему он не видит перенаправленных пакетов. Хоть к делу это не относится, но... неаккуратненько как то

)))))
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-13 21:47:31
dikens3
И еще: после того, как все заработало tcpdump -i rl1 "port 3128" по прежнему ничего не выдает... Странно, почему он не видит перенаправленных пакетов.
потому что пакет идёт на 80 порт!!! Т.е. tcpdump -i rl1 port 80
А вот на 3128 он уже идёт с Lo.
Я так думаю, сам пробуй.
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-14 0:53:10
begemoto
Проверил, на lo0 никакой активности ни на 80, ни на 3128. На rl1 3128 тоже не появляется
Код: Выделить всё
# tcpdump -i rl1 | grep 3128
... пусто ... :)
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-14 8:33:21
zumer
begemoto писал(а):Отлично! Разобрался. Правило fwd после NAT'a стояло. Поставил перед ним - все ОК!
Это везде написано, но у меня НЕТ ната. Этат машина выходит в нет через нат который на циске. Получается что без ната и сквид работать не будет? Если так, то придется поднимать нат на фре - он не будет конфликтовать с цисковским натом?
Re: ipfw fwd и прозрачный прокси
Добавлено: 2008-01-14 10:42:45
dikens3
begemoto писал(а):Проверил, на lo0 никакой активности ни на 80, ни на 3128. На rl1 3128 тоже не появляется
Код: Выделить всё
# tcpdump -i rl1 | grep 3128
... пусто ... :)
У меня всё отлично работает. :-)
Код: Выделить всё
tcpdump -n -i xl0 dst port 80
xl0 - внутренняя сетевая карта