Страница 1 из 3
Squid Transparent Proxy
Добавлено: 2010-07-08 15:07:41
priest.romeo
Доброго времени суток уважаемые форумчане.
Возникла необходимость организовать прозрачный прокси на базе Squid 2.7 stable.
Вроде всё заработало, кроме возможности прикрутить squid на 80 порт.
http_port 192.168.0.1:3128 transparent ;работает, но нужно прописывать в браузере
http_port 192.168.0.1:80 transparent ;не работает
Squid в логах пишет: commBind: Cannot bind socket FD12 to 192.168.0.1:80 : 13 Permission denied
FATAL: Cannot open HTTP port
В результате изысканий нашёл 2 варианта причины проблемы:
1 - порт занят другим процессом
2 - непривилигрованный пользователь не может занять порт ниже 1024. Отсюда вопрос как сделать Squid привелигированным?
Если кто то сталкивался, пожалуйста подскажите.
Re: Squid Transparent Proxy
Добавлено: 2010-07-08 18:47:17
Burner
сделаить редирект портов с 80 на 3128. Сквид при этом нужно собрать с поддержкой используемого фильтра
Re: Squid Transparent Proxy
Добавлено: 2010-07-09 12:10:11
priest.romeo
Может ли кто нибудь выложить свой рабочий конфиг Squid'а. Прозрачный версии 2.7?
Заранее СПАСИБО!
Re: Squid Transparent Proxy
Добавлено: 2010-07-09 21:28:05
skeletor
Код: Выделить всё
http_port 127.0.0.1:3128 transparent
maximum_object_size 16384 KB
maximum_object_size_in_memory 8 KB
cache_mem 128 MB
cache_dir ufs /usr/local/squid/cache 40000 16 256
coredump_dir /usr/local/squid/cache
logformat skel_squid %{%d/%b/%Y:%H:%M:%S}tl %6tr %>a %Ss/%03Hs %
access_log /usr/local/squid/logs/access.log skel_squid
cache_log /usr/local/squid/logs/cache.log
cache_store_log /usr/local/squid/logs/store.log
pid_filename /usr/local/squid/logs/squid.pid
logfile_rotate 10
acl all src 0.0.0.0/0.0.0.0
acl CONNECT method CONNECT
http_access allow all
cache_mgr hostmaster@domain.ua
cache_effective_user squid
cache_effective_group squid
visible_hostname server.domain.ua
cachemgr_passwd QuErY all
Re: Squid Transparent Proxy
Добавлено: 2010-07-12 18:46:26
priest.romeo
Так и не получилось локализовать проблему и пришёл я в тупик

. Поэтому прошу вашей помощи уважаемые форумчане.
OS: FreeBSD 8
SQUID: 2.7.9
Interfaces:
Код: Выделить всё
em0 - 192.168.0.1 - смотрит в локаль
re0 - 10.5.96.100 - смотрит в инет, точнее в маршрутизатор, который в свою очередь смотрит в инет
Kernel options:
Код: Выделить всё
IPFIREWALL
IPFIREWALL_VERBOSE
IPFIREWALL_DEFAULT_TO_ACCEPT
IPFIREWALL_FORWARD
IPDIVERT
DUMMYNET
squid.conf
Код: Выделить всё
http_port 127.0.0.1:3128 transparent
cache_mem 1024 MB
maximum_object_size 4096 KB
maximum_object_size_in_memory 512 KB
cache_dir ufs /cache 98304 1024 512
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_mgr hostmaster@roga.ru
cache_effective_user squid
cache_effective_group squid
visible_hostname proxy.roga.ru
acl ALL src 0.0.0.0/0.0.0.0
acl CONNECT method CONNECT
http_access allow ALL
rc.firewall - по-умолчанию
+ ipfw -q add 100 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 recv em0
rc.conf
gateway_enable="YES"
squid_enable="YES"
Пропинговать из клиентской сети и внешний и внутренний интерфейс прокси могу. Такое впечатление что сквид не поинмает куда нужно отправлять пактеы дальше либо он их просто не принимает. С самой прокси в инет ходить могу.
Re: Squid Transparent Proxy
Добавлено: 2010-07-12 21:57:12
skeletor
А что в логах /var/log/squid/access.log?
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 11:11:44
priest.romeo
В логах тишина. Вообще ничего.
Добавил правило посмотреть форвардит что-нить ipfw или нет. 0 реакции в логах чисто. Какая то мистика, хотя клиент тестовый напрямую подключён к локальному интерфейсу прокси 192.168.0.2 (клиент) -> 192.168.0.1 (интерф. прокси на локаль)
ipfw add 100 forward 127.0.0.1,3128 log tcp from 192.168.0.2 to any 80 recv em0
и ничего. Может правило как то неправильно написал?
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 11:13:35
skeletor
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 11:18:40
priest.romeo
А вот теперь интересно. Когда указываю в браузере клиента
http://192.168.0.1 тогда в логах фаера появляется запись о перебросе на порт сквида. Т.е. получается форвард отрабатывает корректно только тогда, когда адрес назначения 192.168.0.1 - входящий интерфейс прокси. Это бред, а как же тогда все остальные адреса? Хм.....что то с правилом не то или с ipfw не хватает чего то, может модуля какого?
recv em0 - не убирал пока, сейчас попробую
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 13:11:49
priest.romeo
убрал recv em0, а результат тот же при указании шлюзом назначения интерфейс прокси всё норм переправляет на сквид, а вот если любой другой адрес то ничего не перенаправляет.
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 14:31:12
priest.romeo
судя по всему затык где то в работе IPDIVERT и данная связка не работает на 8, жаль... может кто то делал данное с IPFilter ом.
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 19:45:22
priest.romeo
Попытался это на IPFiltre организовать. Пересобрал сквид и тоже самое.
Re: Squid Transparent Proxy
Добавлено: 2010-07-13 19:57:39
priest.romeo
Неужели придется всё делать на долбаных форточках!?

Re: Squid Transparent Proxy
Добавлено: 2010-07-14 6:21:26
Burner
запускайте tcpdump и смотрите что куда идет. Еще PF попробовать можно.
Re: Squid Transparent Proxy
Добавлено: 2010-07-15 10:21:57
priest.romeo
А вот ради интереса, у кого нибудь вообще на 8-ке прозрачный работает? В 8-ке архитикуру маршрутизации измениили, все маны, которые удалось встретить написаны под 7.3 и ниже.
Re: Squid Transparent Proxy
Добавлено: 2010-07-26 17:34:31
folax
у меня работает на 8 прозрачный
http_port 3128 intercept
mics# squid -v
Squid Cache: Version 3.1.4
поставь сквид нормальный скину конфиг минимальный

Re: Squid Transparent Proxy
Добавлено: 2010-07-28 17:17:29
hranitel_y2k
А можно увидеть cache.log и вывод squid -v?
Re: Squid Transparent Proxy
Добавлено: 2010-07-28 17:18:43
priest.romeo
Удалось сделать на 7.3
Squid 2.7 + PF
Re: Squid Transparent Proxy
Добавлено: 2010-09-08 17:30:06
vodolaz
удалось на 8.0 + squid 2.7 + PF
только вот при авторизации ncsa_auth при прозрачном прокси доступ запрещен, а если браузер настроить вручную все норм((
редирект идет с конкретного ip(192.168.10.78/32). может кто с таким сталкивался?
Re: Squid Transparent Proxy
Добавлено: 2010-09-10 7:07:47
gekz
вы не запустите сквид если занят 80-й прорт
да и зачем прокси слушать его
у него есть 3128
по 80 бегает http трафик, который вы заврачиваете на 3128
по всей видимости у вас ещё апачь стартанутый, который как раз и висит на 80 порту
вот у меня форвард
Код: Выделить всё
02500 5386006 437363309 fwd 10.10.10.254,3128 tcp from table(1) to any dst-port 80
Код: Выделить всё
# squid -v
Squid Cache: Version 2.7.STABLE7
Код: Выделить всё
# uname -a
FreeBSD 8.0-RELEASE FreeBSD 8.0-RELEASE #1: Sat Jun 12 01:11:09 VLAST 2010 support@:/usr/obj/usr/src/sys/khab i386
Re: Squid Transparent Proxy
Добавлено: 2010-11-10 17:57:29
set
Код: Выделить всё
FreeBSD freebsd.localhost 8.1-RELEASE FreeBSD 8.1-RELEASE #1
squid 2.7.9
pf
squid.conf
Код: Выделить всё
#auth_param basic program <uncomment and complete this line>
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#Recommended minimum configuration:
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
#Allow ICP queries from local networks only
icp_access allow localnet
icp_access deny all
# Squid normally listens to port 3128
http_port 3128 transparent
access_log /var/squid/logs/access.log squid
#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
# Leave coredumps in the first cache dir
coredump_dir /var/squid/cache
pf.conf
Код: Выделить всё
#Interfaces
wan="fxp0"
lan="rl0"
web="{80:83 1080 8080:8088 11523}"
set block-policy drop
set skip on lo0
scrub in all
rdr pass on $lan inet proto tcp from any to $lan port $web -> 127.0.0.1 port 3128
nat on $lan inet proto tcp tagged FTP -> ($wan)
Ядро конфигурировал под pf со следующими параметрами:
Код: Выделить всё
# PF support
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
При установки squid ставил поддержку pf, ставил все версии которые у меня лежат в портах 2.7 3.0 3.1, два дня гуглю, результат один. Прозрачный прокси не работает. В access.log, если в режиме прозрачности пытаюсь перейти на сайт, ничего не отображается. Если ставлю в настройках браузера адрес шлюза и порт 80 (или 8080 или любой порт из$web) все работает. Если кто может, подскажите пожалуйста, где я ошибаюсь.
Re: Squid Transparent Proxy
Добавлено: 2010-11-10 23:28:36
Burner
rdr pass on $lan inet proto tcp from any to $lan port $web -> 127.0.0.1 port 3128 - это правило что должно делать?
И не помню, какое в pf дефолтное правило, но для тестов дефолтный accept бы добавил
Re: Squid Transparent Proxy
Добавлено: 2010-11-11 9:42:19
set
Burner писал(а):rdr pass on $lan inet proto tcp from any to $lan port $web -> 127.0.0.1 port 3128 - это правило что должно делать?
И не помню, какое в pf дефолтное правило, но для тестов дефолтный accept бы добавил
Это правило ретранслирует на порт 3128 кольцевого интефейса 127.0.0.1 тсп траффик идущий через $lan из откудаугодно в $lan с портами назначения $web (формулеровка возможно не совсем точна, но правило отрабатывает, порт маппинг работает если в браузере точно задать адрес ($lan) и порт(80), но мне нужен прозрачный прокси, я думаю дело не в pf...)
Правила стояли и пропускать все (pass in all) и такие разницы нет, pf отрабатывает одинаково.
Re: Squid Transparent Proxy
Добавлено: 2010-11-11 9:55:39
set
set писал(а):Burner писал(а):rdr pass on $lan inet proto tcp from any to $lan port $web -> 127.0.0.1 port 3128 - это правило что должно делать?
И не помню, какое в pf дефолтное правило, но для тестов дефолтный accept бы добавил
Это правило ретранслирует на порт 3128 кольцевого интефейса 127.0.0.1 тсп траффик идущий через $lan из откудаугодно в $lan с портами назначения $web (формулеровка возможно не совсем точна, но правило отрабатывает, порт маппинг работает если в браузере точно задать адрес ($lan) и порт(80), но мне нужен прозрачный прокси, я думаю дело не в pf...)
Правила стояли и пропускать все (pass in all) и такие разницы нет, pf отрабатывает одинаково.
вру, вот мой pf.conf
Код: Выделить всё
#Interfaces
wan="fxp0"
lan="rl0"
web="{80:83 1080 8080:8088 11523}"
set block-policy drop
set skip on lo0
scrub in all
#WWW transperent
rdr pass on $lan inet proto tcp from any to $lan port $web -> $loop port 3128
nat on $lan inet proto tcp tagged FTP -> ($wan)
pass in all
pass out all
Переброска с 80 на 3128 работает, сквид не хочет пахать в прозрачном режиме....

Re: Squid Transparent Proxy
Добавлено: 2010-11-11 10:39:54
pimlab
set писал(а):rdr pass on $lan inet proto tcp from any to
$lan port $web -> 127.0.0.1 port 3128 - это правило что должно делать?
И не помню, какое
Код: Выделить всё
#Interfaces
wan="fxp0"
lan="rl0"
web="{80:83 1080 8080:8088 11523}"
set block-policy drop
set skip on lo0
scrub in all
#WWW transperent
rdr pass on $lan inet proto tcp from any to $lan port $web -> $loop port 3128
nat on $lan inet proto tcp tagged FTP -> ($wan)
pass in all
pass out all
Переброска с 80 на 3128 работает, сквид не хочет пахать в прозрачном режиме....

Код: Выделить всё
table <home_lan> const { 192.168.0.0/24 }
rdr pass on $lan inet proto tcp from <home_lan> to any port $web -> $loop port 3128