Привет всем, надеюсь, что кто-нибудь мне все-таки поможет, уже бьюсь около недели не могу понять, в чем проблема.
Настроено прозрачное проксирование. C циски средствами wccp заворачивается трафик на проксю это FreeBSD5.4 Squid
2.5Stable8 собран руками (перед этим стоял из портов stabl10, версия сквида была понижена в надежде, что проблема уйдет).
Собирался сквид вот с такими параметрами:
configure options: --bindir=/usr/local/sbin --sysconfdir=/usr/local/etc/squid --datadir=/usr/local/etc/squid --libexecdir=/usr/local/libexec/squid --localstatedir=/usr/local/squid '--enable-removal-policies=lru heap' '--enable-storeio=ufs diskd null' --enable-wccp --enable-delay-pools --enable-snmp '--enable-err-languages=English Russian-1251 Russian-koi8-r' --enable-default-err-language=Russian-1251 --prefix=/usr/local --enable-ipf-transparent
в дефолтовом конфиге сквида были изменены лишь несколько строк:
cache_mem 320 MB
cache_dir ufs /usr/local/squid/cache 61500 16 256
acl intranet src 80.80.85.0/255.255.255.192
http_access allow manager intranet
http_access allow intranet
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
wccp_router 80.80.86.89
скрипт с правилами для ipfw содержит следующее:
#!/bin/sh
fw="/sbin/ipfw -q"
$fw -f flush
$fw add fwd 127.0.0.1,3128 ip from any to any via gre0 in
$fw add permit ip from any to any
В ядро включены опции(все не стану перечислять):
options SMP # Symmetric MultiProcessor Kernel
options SCHED_4BSD # 4BSD scheduler
options INET # InterNETworking
options IPFIREWALL # firewall
options IPFIREWALL_VERBOSE # enable logging to syslogd(8)
options IPFIREWALL_FORWARD # enable transparent proxy support
options IPDIVERT # divert sockets
options IPSTEALTH # support for stealth forwarding
options DUMMYNET # enables the "dummynet" bandwidth limiter
options HZ=1000 # used to achieve a smoother scheduling of the traffic
options TCP_DROP_SYNFIN # drop TCP packets with SYN+FIN
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PSEUDOFS # Pseudo-filesystem framework
options PROCFS # Process filesystem (requires PSEUDOFS)
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options KTRACE # ktrace(1) support
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
В rc.conf следующее:
defaultrouter="80.80.86.89"
hostname="proxy.mydomain.ru"
ifconfig_fxp0="inet 80.80.86.90 netmask 255.255.255.248"
cloned_interfaces="gre0"
ifconfig_gre0="link0 tunnel 80.80.86.90 80.80.87.237 up"
sshd_enable="YES"
usbd_enable="NO"
firewall_enable="YES"
firewall_script="/etc/ipfw.sh"
firewall_logging="YES"
squid_enable="YES"
# Apache HTTP Server
apache_enable="YES"
Введем обозначения для простаты:
mail.yandex.ru -- тестовый web ресурс к которому идет обращение со стороны пользователя
user.mydomain.ru -- собственно юзер обращающийся к веб ресурсу трафик которого мы заворачиваем через proxy.mydomain.ru --
proxy.mydomain.ru -- мой "прозрачный" прокси
И вот присутствует проблема:
Трафик от клиента заворачивается на проксю (wccp отрабатывает), если сделать tcpdump -i gre0 то я вижу:
listening on gre0, link-type NULL (BSD loopback), capture size 96 bytes
10:47:07.109619 IP user.mydomain.ru.1919 > mail.yandex.ru.http: S 126138710:126138710(0) win 65535 <mss 1460,nop,nop,sackOK>
10:47:07.110870 IP user.mydomain.ru.1919 > mail.yandex.ru.http: . ack 1996908588 win 65535
10:47:07.111933 IP user.mydomain.ru.1919 > mail.yandex.ru.http: P 0:384(384) ack 1 win 65535
10:47:07.366717 IP user.mydomain.ru.1919 > mail.yandex.ru.http: . ack 2921 win 65535
10:47:07.424560 IP user.mydomain.ru.1919 > mail.yandex.ru.http: . ack 5629 win 65535
10:47:07.451213 IP user.mydomain.ru.1921 > css.yandex.ru.http: S 126254449:126254449(0) win 65535 <mss 1460,nop,nop,sackOK>
10:47:07.452002 IP user.mydomain.ru.1922 > css.yandex.ru.http: S 126300999:126300999(0) win 65535 <mss 1460,nop,nop,sackOK>
10:47:07.452867 IP user.mydomain.ru.1921 > css.yandex.ru.http: . ack 3646506445 win 65535
10:47:07.453853 IP user.mydomain.ru.1922 > css.yandex.ru.http: . ack 1696665147 win 65535
10:47:07.454567 IP user.mydomain.ru.1921 > css.yandex.ru.http: P 0:221(221) ack 1 win 65535
10:47:07.455046 IP user.mydomain.ru.1922 > css.yandex.ru.http: P 0:226(226) ack 1 win 65535
10:47:07.460697 IP user.mydomain.ru.1921 > css.yandex.ru.http: . ack 2921 win 65535
10:47:07.463086 IP user.mydomain.ru.1922 > css.yandex.ru.http: . ack 2921 win 65535
10:47:07.467097 IP user.mydomain.ru.1921 > css.yandex.ru.http: . ack 5115 win 65535
10:47:07.467510 IP user.mydomain.ru.1922 > css.yandex.ru.http: . ack 5841 win 65535
если снять лог с правила момент обращения юзера к ресурсу add fwd 127.0.0.1,3128 log ip from any to any via gre0 in
то в /var/log/security появляються строки:
Aug 26 10:44:41 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1902 213.180.204.8:80 in via gre0
Aug 26 10:44:41 sizif last message repeated 3 times
Aug 26 10:44:41 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1904 213.180.204.19:80 in via gre0
Aug 26 10:44:42 sizif last message repeated 3 times
Aug 26 10:45:41 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1902 213.180.204.8:80 in via gre0
Aug 26 10:45:41 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1904 213.180.204.19:80 in via gre0
Aug 26 10:45:46 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1904 213.180.204.19:80 in via gre0
Aug 26 10:46:08 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1906 213.180.204.25:80 in via gre0
Aug 26 10:46:08 sizif last message repeated 5 times
Aug 26 10:46:08 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1907 213.180.204.25:80 in via gre0
Aug 26 10:46:09 sizif last message repeated 4 times
Aug 26 10:46:09 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1909 213.180.204.21:80 in via gre0
Aug 26 10:46:09 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1910 213.180.204.21:80 in via gre0
Aug 26 10:46:09 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1909 213.180.204.21:80 in via gre0
Aug 26 10:46:09 sizif kernel: ipfw: 100 Forward to 127.0.0.1:3128 TCP 80.80.85.27:1910 213.180.204.21:80 in via gre0
далее если просто запустить tcpdump я вижу:
10:47:07.109575 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.109758 IP mail.yandex.ru.http > user.mydomain.ru.1919: S 1996908587:1996908587(0) ack 126138711 win 65535 <mss 1460,nop,nop,sackOK>
10:47:07.110841 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.111905 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.112492 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: S 1857800636:1857800636(0) win 65535 <mss 1460,nop,nop,sackOK,nop,wscale 1,n
op,nop,timestamp 51806619 0>
10:47:07.186420 IP mail.yandex.ru.http > proxy.mydomain.ru.54437: S 4146630913:4146630913(0) ack 1857800637 win 5592 <mss 1410,sackOK,timestam
p 2415101161 51806619,nop,wscale 2>
10:47:07.186513 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: . ack 1 win 32853 <nop,nop,timestamp 51806693 2415101161>
10:47:07.186811 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: P 1:498(497) ack 1 win 32853 <nop,nop,timestamp 51806694 2415101161>
10:47:07.211686 IP mail.yandex.ru.http > user.mydomain.ru.1919: . ack 385 win 65535
10:47:07.263985 IP mail.yandex.ru.http > proxy.mydomain.ru.54437: . ack 498 win 1666 <nop,nop,timestamp 2415101257 51806694>
10:47:07.315073 802.1d config 81f4.00:0f:f7:ba:20:c0.800b root 81f4.00:0f:f7:ba:20:c0 pathcost 0 age 0 max 20 hello 2 fdelay 15
10:47:07.318447 IP mail.yandex.ru.http > proxy.mydomain.ru.54437: . 1399:2797(1398) ack 498 win 1666 <nop,nop,timestamp 2415101269 51806694>
10:47:07.318591 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: . ack 1 win 32853 <nop,nop,timestamp 51806825 2415101257,nop,nop,sack sack 1
{1399:2797} >
10:47:07.325313 00:0f:f7:ba:20:cb > 00:0f:f7:ba:20:cb, ethertype Loopback (0x9000), length 60:
0x0000: 0000 0100 0000 0000 0000 0000 0000 0000 ................
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0020: 0000 0000 0000 0000 0000 0000 0000 ..............
10:47:07.338972 IP mail.yandex.ru.http > proxy.mydomain.ru.54437: . 2797:4195(1398) ack 498 win 1666 <nop,nop,timestamp 2415101269 51806694>
10:47:07.339055 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: . ack 1 win 32853 <nop,nop,timestamp 51806846 2415101257,nop,nop,sack sack 1
{1399:4195} >
10:47:07.360871 IP mail.yandex.ru.http > proxy.mydomain.ru.54437: . 1:1399(1398) ack 498 win 1666 <nop,nop,timestamp 2415101269 51806694>
10:47:07.360929 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: . ack 4195 win 30756 <nop,nop,timestamp 51806868 2415101269>
10:47:07.361035 IP proxy.mydomain.ru.54437 > mail.yandex.ru.http: . ack 4195 win 32853 <nop,nop,timestamp 51806868 2415101269>
10:47:07.361573 IP mail.yandex.ru.http > user.mydomain.ru.1919: . 1:1461(1460) ack 385 win 65535
10:47:07.361600 IP mail.yandex.ru.http > user.mydomain.ru.1919: . 1461:2921(1460) ack 385 win 65535
10:47:07.366677 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.366837 IP mail.yandex.ru.http > user.mydomain.ru.1919: P 2921:4231(1310) ack 385 win 65535
10:47:07.421117 IP mail.yandex.ru.http > proxy.mydomain.ru.54437: . 4195:5593(1398) ack 498 win 1666 <nop,nop,timestamp 2415101371 51806825>
10:47:07.421322 IP mail.yandex.ru.http > user.mydomain.ru.1919: P 4231:5629(1398) ack 385 win 65535
10:47:07.424527 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.451152 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.451350 IP css.yandex.ru.http > user.mydomain.ru.1921: S 3646506444:3646506444(0) ack 126254450 win 65535 <mss 1460,nop,nop,sackOK>
10:47:07.451960 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.452110 IP css.yandex.ru.http > user.mydomain.ru.1922: S 1696665146:1696665146(0) ack 126301000 win 65535 <mss 1460,nop,nop,sackOK>
10:47:07.452839 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.453824 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.454521 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.455015 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.455550 IP css.yandex.ru.http > user.mydomain.ru.1921: . 1:1461(1460) ack 222 win 65535
10:47:07.455580 IP css.yandex.ru.http > user.mydomain.ru.1921: . 1461:2921(1460) ack 222 win 65535
10:47:07.456458 IP css.yandex.ru.http > user.mydomain.ru.1922: . 1:1461(1460) ack 227 win 65535
10:47:07.456487 IP css.yandex.ru.http > user.mydomain.ru.1922: . 1461:2921(1460) ack 227 win 65535
10:47:07.460636 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.460847 IP css.yandex.ru.http > user.mydomain.ru.1921: . 2921:4381(1460) ack 222 win 65535
10:47:07.460866 IP css.yandex.ru.http > user.mydomain.ru.1921: P 4381:5115(734) ack 222 win 65535
10:47:07.463056 IP 80.80.87.237 > proxy.mydomain.ru: gre-proto-0x883e
10:47:07.463177 IP css.yandex.ru.http > user.mydomain.ru.1922: . 2921:4381(1460) ack 227 win 65535
10:47:07.463196 IP css.yandex.ru.http > user.mydomain.ru.1922: . 4381:5841(1460) ack 227 win 65535
10:47:07.463217 IP css.yandex.ru.http > user.mydomain.ru.1922: . 5841:7301(1460) ack 227 win 65535
В логах сквида я вижу:
1125038681.869 40 80.80.85.27 TCP_IMS_HIT/304 249 GET http://img.yandex.ru/i/logo76x44.gif - NONE/- image/gif
1125038768.393 444 80.80.85.27 TCP_MISS/302 577 GET http://mail.yandex.ru/ - DIRECT/213.180.204.25 text/plain
1125038769.631 2 80.80.85.27 TCP_HIT/200 5014 GET http://img.yandex.ru/i/fp2.js - NONE/- application/x-javascript
1125038769.739 1340 80.80.85.27 TCP_SWAPFAIL_MISS/200 12048 GET http://mail.yandex.ru/login - DIRECT/213.180.204.25 text/html
1125038770.159 565 80.80.85.27 TCP_REFRESH_HIT/200 9326 GET http://css.yandex.ru/css/mail/_yandex-mail-2.css - DIRECT/213.180.204.21 tex
t/css
1125038770.183 629 80.80.85.27 TCP_REFRESH_HIT/200 5105 GET http://css.yandex.ru/css/_yandex-global.css - DIRECT/213.180.204.21 text/css
1125038770.332 147 80.80.85.27 TCP_HIT/200 1479 GET http://img.yandex.ru/i/logo76x33.gif - NONE/- image/gif
1125038770.373 17 80.80.85.27 TCP_HIT/200 632 GET http://img.yandex.ru/mail2/newaddress-arrow.gif - NONE/- image/gif
1125038770.427 53 80.80.85.27 TCP_HIT/200 5169 GET http://img.yandex.ru/mail2/vedro2.gif - NONE/- image/gif
1125038770.427 1 80.80.85.27 TCP_HIT/200 978 GET http://img.yandex.ru/mail2/artlebedev.gif - NONE/- image/gif
1125038770.767 435 80.80.85.27 TCP_MISS/200 167 GET http://clck.yandex.ru/click/dtype=morda/*http://mail.yandex.ru/ - DIRECT/213.180.204
.14 image/gif
1125038770.822 489 80.80.85.27 TCP_MISS/200 738 GET http://img.yandex.ru/mail2/logo.gif - DIRECT/213.180.204.19 image/gif
1125038770.851 519 80.80.85.27 TCP_MISS/200 670 GET http://img.yandex.ru/i/cards.gif - DIRECT/213.180.204.19 image/gif
1125038827.456 2 80.80.85.27 TCP_HIT/200 5114 GET http://css.yandex.ru/css/_yandex-global.css - NONE/- text/css
1125038827.456 1 80.80.85.27 TCP_HIT/200 9335 GET http://css.yandex.ru/css/mail/_yandex-mail-2.css - NONE/- text/css
1125038827.540 1 80.80.85.27 TCP_HIT/200 5014 GET http://img.yandex.ru/i/fp2.js - NONE/- application/x-javascript
1125038827.584 42 80.80.85.27 TCP_HIT/200 1479 GET http://img.yandex.ru/i/logo76x33.gif - NONE/- image/gif
Внимание вопрос к знатокам!
почему со сквида не отдается трафик для user.mydomain.ru, несмотря на то, что сквид закачивает, то о чем его просили и
пишет в своих логах об этом?
То есть почему нет пакетов вида IP proxy.mydomain.ru > user.mydomain.ru.
а так же почему идет движение mail.yandex.ru.http > user.mydomain.ru.: в результате, которого юзер забирает трафик напрямую
а не с прокси?
В случае если настраивать браузер на прокси, то трафик ходит нормально от клиента к прокси и обратно