однострочники sed Скрипт случайного выбора :)
Создано: 02-06-2009 17:42:00 изменено: 02-07-2015 12:00:51  Метки: squid
http://ru.wikipedia.org/wiki/Squid
В сочетании с некоторыми межсетевыми экранами и маршрутизаторами squid может работать в режиме прозрачного прокси (англ. transparent proxy). В этом режиме маршрутизатор вместо того, чтобы сразу пересылать http-запросы пользователя http-серверу в Интернете, перенаправляет их прокси-серверу, который может работать как на отдельном хосте, так и на самом маршрутизаторе. Прокси-сервер обрабатывает запрос (с возможной отдачей содержимого из кеша), это содержимое направляется к запросившему пользователю, для которого оно выглядит как «ответ» сервера, к которому адресовался запрос. Таким образом, пользователь может даже не знать, что все запросы и ответы прошли через прокси-сервер.

Создадим простейшую конфигурацию:
aptitude install squid sarg
mv /etc/squid/squid.conf /etc/squid/squid.conf.old
# конфиг приложен
cp squid.conf /etc/squid/squid.conf
nano /etc/squid/squid.conf
http_port REPLACEHOST:3128 transparent # REPLACEHOST надо заменить на ip-адрес интерфейса смотрящего в локалку
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563      # https, snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
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 Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl blocks url_regex "/etc/squid/block.acl" # тут мы блокируем нежелательные ресурсы (точку надо экранировать \.)
acl our_networks src REPLACENET # REPLACENET заменяется на адрес локальной сети вида: 192.168.0.0/24
### whitelist
#acl whitelist url_regex "/etc/squid/whitelist"
#http_access allow our_networks whitelist
#http_access deny all
###
http_access allow our_networks !blocks
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
always_direct allow all
forwarded_for off
visible_hostname unknown
cache_mgr webmaster@localhost
coredump_dir /var/spool/squid
error_directory /usr/share/squid/errors/Russian-1251

В этом файле необходимо поменять всего 2 переменные REPLACEHOST и REPLACENET. В остальном это практически стандартный конфиг. Например если интерфейс локальной сети выглядит так:
ip a l ath0
5: ath0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc noqueue
    link/ether 00:17:9a:c0:44:b1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/29 brd 192.168.2.7 scope global ath0

то REPLACEHOST надо заменить на 192.168.2.1, а REPLACENET надо заменить на 192.168.2.0/29.
Эта строка: http_port 192.168.2.1:3128 transparent, означает что запросы на прокси-сервер буду приниматься только на ip-адрес 192.168.2.1 и порт 3128, причем в режиме "прозрачности".
В файле /etc/squid/block.acl лежат адреса заблокированных ресурсов, например:
cat /etc/squid/block.acl
img-fotki\.yandex\.ru
odnoklassniki\.ru
vkontakte\.ru
fotki\.yandex\.ru
avatars\.yandex\.net
count\.rbc\.ru
ad\.adriver\.ru
pics\.rbc\.ru\/img\/autonews
pics\.rbc\.ru\/img\/cnews
pics\.rbc\.ru\/*.js
irr\.ru
macromedia\.com
sb\.google\.com

поскольку в регулярных выражениях точка означает любой символ, во избежание ложных срабатываний мы ее экранируем.
Теперь как эту самую "прозрачность" включить. Здесь все зависит от используемого интерфейса к netfilter.
В статьях Shorewall на роутере и Быстрая настройка NAT эти случай рассмотрены. Рассмотрим для нашего примера:
# разрешаем запросы из локалки к прокси-серверу
iptables -A INPUT -s 192.168.2.0/29 -d 192.168.2.1 -p tcp --destination-port 3128 -j ACCEPT
# запросы на 80 порт к данной машине пропускаем
iptables -t nat -A PREROUTING -s 192.168.2.0/29 -d 192.168.2.1 -p tcp --destination-port 80 -j ACCEPT
# остальные запросы на 80 порт заворачиваем на прокси-сервер
iptables -t nat -A PREROUTING -s 192.168.2.0/29 -p tcp --destination-port 80 -j REDIRECT --to-port 3128
# перезапускаем прокси
/etc/init.d/squid restart

Осталось рассмотреть генерирование отчетов с помощью sarg, но это в следующей статье...

2182 просмотров комментировать
Создано: guest 17-06-2009 13:56:03 Ответить
твой squid не кэширует?
не вижу в конфиге
/var/cache/squid/

как быть?
Создано: sanych 17-06-2009 19:29:40 Ответить
Ну по умолчанию у сквида 100 Мб кэш, лежит в /var/spool/squid.
Если этого недостаточно то можно почитать соответвующую секцию в /etc/squid/squid.conf.old

однострочники sed Скрипт случайного выбора :)