[решено]squid и прозрачное проксирование (По отдельности все нормально, вместе не работают :()

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Vit00-00
Сообщения: 16
ОС: Gentoo

[решено]squid и прозрачное проксирование

Сообщение Vit00-00 »

Поставил себе на компьютер Gentoo (то этого стояла FC 5), профиль 2007,0 x86 gcc-4.1.1. Настраиваю прозрачное проксирование:

перенаправление на порт squid (1110):

Код:

$IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -d ! $LAN_IP -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 1110 $IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -d ! $LAN_IP -p udp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 1110 $IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -d ! $LAN_IP -p tcp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8888,777 -j REDIRECT --to-port 1110 $IPTABLES -t nat -A PREROUTING -s $LAN_IP_RANGE -d ! $LAN_IP -p udp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8888,777 -j REDIRECT --to-port 1110


Squid скомпилирован со следующими флагами:

Код:

- - elibc_uclibc : <unknown> - - ipf-transparent : Adds transparent proxy support for systems using IP-Filter (only for *bsd) + + kernel_linux : <unknown> + + ldap : Adds LDAP support (Lightweight Directory Access Protocol) - - logrotate : Use logrotate for rotating logs - - nis : Support for NIS/YP services + + pam : Adds support PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip - - pf-transparent : Adds transparent proxy support for systems using PF (only for *bsd) - - samba : Adds support for SAMBA (Windows File and Printer sharing) - - sasl : Adds support for the Simple Authentication and Security Layer - - selinux : !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur + + snmp : Adds support for the Simple Network Management Protocol if available + + ssl : Adds support for Secure Socket Layer connections - - zero-penalty-hit : Adds Zero Penalty Hit patch (http://www.it-academy.bg/zph/)


Вот что вижу в броузере:

Код:

ERROR The requested URL could not be retrieved While trying to process the request: GET /index.jsp HTTP/1.1 User-Agent: Opera/9.20 (Windows NT 5.1; U; ru) Host: www.linux.org.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Cookie: StyleCookie=black Cookie2: $Version=1 Connection: Keep-Alive The following error was encountered: Invalid Request Some aspect of the HTTP Request is invalid. Possible problems: Missing or unknown request method Missing URL Missing HTTP Identifier (HTTP/1.0) Request is too large Content-Length missing for POST or PUT requests Illegal character in hostname; underscores are not allowed Your cache administrator is root.


Путем рытья в документации выяснил, что при компиляции необходим ключ --enable-linux-netfilter. Судя по ebuild'у для компиляции с этим ключем необходим флаг kernel_linux, который у меня уже есть.

squid.conf:

Код:

http_port 192.168.0.1:1110 visible_hostname vitserver icp_port 0 acl QUERY urlpath_regex -i download\d+.avast\.com no_cache deny QUERY cache_mem 64 MB maximum_object_size 100 MB minimum_object_size 0 KB maximum_object_size_in_memory 8 KB cache_dir ufs /var/spool/squid 10000 16 256 cache_store_log /var/log/squid/store.log negative_ttl 1 minutes range_offset_limit 0 KB peer_connect_timeout 3 seconds read_timeout 5 minutes request_timeout 60 seconds half_closed_clients off acl clients src 192.168.0.0/255.255.255.240 acl all src 0.0.0.0/0.0.0.0 http_access allow clients http_access deny all httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on nonhierarchical_direct off redirect_program /opt/rejik3/redirector /opt/rejik3/redirector.conf cache_effective_user squid cache_effective_group squid forwarded_for off


В логах ошибки нет...

Если настроить прокси в броузере то все работает замечательно...

При запуске выдает, что:

2007/05/16 20:26:42| parseConfigFile: line 28 unrecognized: 'httpd_accel_host virtual'
2007/05/16 20:26:42| parseConfigFile: line 29 unrecognized: 'httpd_accel_port 80'
2007/05/16 20:26:42| parseConfigFile: line 30 unrecognized: 'httpd_accel_with_proxy on'
2007/05/16 20:26:42| parseConfigFile: line 31 unrecognized: 'httpd_accel_uses_host_header on'

Все указанные конфиги перенесены из федоры, где все замечательно работало.

Подскажите, где грабли. Очень нехочется собирать сабж вручную, когда все должно работать после emerge squid... :wacko:
Спасибо сказали:
Vit00-00
Сообщения: 16
ОС: Gentoo

Re: [решено]squid и прозрачное проксирование

Сообщение Vit00-00 »

Как всегда, обратишься за помощью и сам найдешь ответ :)

В новых версиях squid'а (>2.6) вместо:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Достаточно написать:

http_port 192.168.0.1:1110 transparent

И все!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение serzh-z »

Vit00-00 писал(а):
16.05.2007 20:59
Как всегда, обратишься за помощью и сам найдешь ответ smile.gif
Это как обычно - либо налетят одни и закричат "ты лох, не умеешь пользоваться гуглом", либо же тихо прикусят язык и будут молчать, так как сами не знают или же леняться написать... В данном случае вам повезло - немногочисленные в этом разделе, налететь не успели (ну а вторые как обычно промолчали) и вы все верно поняли насчет версий squid. :)
Спасибо сказали:
Аватара пользователя
OnkelDen
Сообщения: 15
ОС: Kubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение OnkelDen »

У меня возникла похожая трабла.
Есть сервер к которому юзеры конектятся через впн, есть сквид(2.6 stable 7), если конектиться к сквиду в обход впн, прямо из браузера, то все работает.
Если пытаюсь завернуть трафик с впн на сквид то работать не хотит, браузер пишет connection refused

вот правило из иптаблеса
iptables -t nat -A PREROUTING -i ppp+ -s vpn_ip_range -d ! vpn_server_ip -p tcp --dport 80 -j REDIRECT --to 127.0.0.1 --to-port 3128

в squid.conf
http_port 127.0.0.1:3128 transparent

Правила для иптаблес пробовал писать по всякому, непомогает.
Кто что дельного подскажет?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение serzh-z »

OnkelDen, в вашем случае squid слушает порт на интерфейсе внутренней петли. Он не получает пакеты с ppp*.
Спасибо сказали:
Аватара пользователя
OnkelDen
Сообщения: 15
ОС: Kubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение OnkelDen »

Ну тогда следущий вопрос, как заставить его получать пакеты с ppp ?
У меня тоже было чувство что на сквид пакеты не доходят, но вот сам допетрить немогу :unsure:
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: [решено]squid и прозрачное проксирование

Сообщение DaemonTux »

Покажи вывод
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
OnkelDen
Сообщения: 15
ОС: Kubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение OnkelDen »

Код: Выделить всё

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.75.100  *               255.255.255.255 UH    0      0        0 ppp7
192.168.75.11   *               255.255.255.255 UH    0      0        0 ppp2
192.168.75.10   *               255.255.255.255 UH    0      0        0 ppp1
192.168.75.15   *               255.255.255.255 UH    0      0        0 ppp6
192.168.75.14   *               255.255.255.255 UH    0      0        0 ppp5
195.162.x.x *                         255.255.255.255 UH    0      0        0 ppp0
192.168.75.13   *               255.255.255.255 UH    0      0        0 ppp4
192.168.75.12   *               255.255.255.255 UH    0      0        0 ppp3
localnet        *               255.255.252.0   U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         195.162.x.x 0.0.0.0              UG    0      0        0 ppp0
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение serzh-z »

OnkelDen писал(а):
12.06.2007 08:47
как заставить его получать пакеты с ppp
См. /var/log/squid/access.log на предмет запрещённых запросов (что-то наподобие REJECTED или FORBIDEN). Если подобные записи есть, значит до сквида все доходит и нужно добавить соотв. acl.
Спасибо сказали:
Аватара пользователя
OnkelDen
Сообщения: 15
ОС: Kubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение OnkelDen »

В том то и фишка что ниче там нету, тоесть не доходит. Когда в конфиге сквида было просто http_port 3128 то он там в логах все фиксировал и на каждый запрос выдавал invalid request а в браузере было написано что типа запрос неправильно сформирован, после того как прописал в конфиг transparent в логах не стало ничего записываться и сквид молчит, а в браузере connection refused.
Спасибо сказали:
Аватара пользователя
OnkelDen
Сообщения: 15
ОС: Kubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение OnkelDen »

Прбовал вот так :

$IPT -t nat -A PREROUTING -i ppp+ -s vpn_ip_range -d ! vpn_server_ip -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPT -t nat -A PREROUTING -s vpn_ip_range -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
$IPT -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to 127.0.0.1 --to-port 3128

В любом случае выдает connection refused.
Что делать?
Спасибо сказали:
Аватара пользователя
OnkelDen
Сообщения: 15
ОС: Kubuntu

Re: [решено]squid и прозрачное проксирование

Сообщение OnkelDen »

Проблема решена :

в squid.conf
http_port 3128 transparent

в иптаблес
iptables -t nat -A PREROUTING -i ppp+ -s vpn_ip_range -d ! vpn_server_ip -p tcp --dport 80 -j REDIRECT --to-ports 3128

И все будет работать :happy:
Спасибо сказали: