Итак, нужно настроить прокси сервер. Я выбрал squid. Задача - доступ в интернет по паре логин/пароль, запретить доступ к порно сайтам, запретить рекламу и остальную ерунду мешающую работать в интернете.
Обновляем порты и ставим squid
В окне выбора опций компиляции я оставил следующие галочки:
Теперь, когда конфиг готов нужно инициализировать кэш:
Ставим squid в автозагрузку и запускаем:
Проверяем работу процесса:
Должно вывести примерно следующее:
Ну вот, как видно все работает. Пользуемся :)
- # cd /usr/ports/www/squid
- # make install clean
- SQUID_CARP - включить протокол squid CARP
- SQUID_SSL - разрешить защищенные соединения через squid
- SQUID_WCCP - включить протокол WCCP
- SQUID_IDENT - разрешить запросы ident (RFC 931)
- SQUID_ARP_ACL - разрешить использовать в ACL MAC адреса
- SQUID_PF - разрешить прозрачное проксирование через PF
- SQUID_AUFS - включить хранилище aufs
- SQUID_KQUEUE - использовать системный вызов kqueue для работы с сокетами
- SQUID_LARGEFILE - поддержка больших размеров лог файлов
- # Настраиваем авторизацию пользователей
- # Информация о пользователях для авторизации будет браться из файла
- auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/squid.passwd
- # Количество процессов авторизации
- auth_param basic children 1
- # Приглашение выводимое в браузере
- auth_param basic realm Proxy-caching web server on srv-home
- # Как долго сохранять результат удачной попытки авторизации
- auth_param basic credentialsttl 2 hours
- # Учитывать регистр вводимых данных
- auth_param basic casesensitive off
- # Настройка acl
- acl manager proto cache_object
- acl QUERY urlpath_regex cgi-bin \?
- acl localhost src 127.0.0.1/32
- acl to_localhost dst 127.0.0.0/8
- acl all src all
- #acl localnet src 10.0.0.0/8 # RFC1918
- #acl localnet src 172.16.0.0/12 # RFC1918
- #acl localnet src 192.168.0.0/16 # RFC1918
- acl all_net src 192.168.7.0/24
- #acl localnet src 192.168.7.71-192.168.7.100
- acl mac_komp arp 00:1E:8C:E3:B7:36
- acl mac_asus_wifi arp 00:15:AF:A4:F5:2E
- acl mac_asus_eth arp 00:1F:C6:E9:13:9E
- # Локальные ресурсы
- acl local_domain dstdomain .home.ru
- acl no_cache_dlink dst 192.168.7.252
- acl no_cache_acorp dst 192.168.1.1
- # Порты, к которым можно обращаться через squid
- acl SSL_ports port 443 5190 5222 5999
- acl Safe_ports port 80 # http
- acl Safe_ports port 8080 # 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 3128 # squid
- #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 5190 # icq
- acl Safe_ports port 5222 # xmpp
- acl Safe_ports port 5999 # cvs
- acl Safe_ports port 7777 # fora
- acl CONNECT method CONNECT
- acl users proxy_auth REQUIRED
- # Сайты, к которым запрещен доступ
- # Формат файлов очень прост, каждый домен должен быть в новой строке,
- # точка в начале имени домена означает - включая все поддомены.
- acl porn_sites dstdomain "/usr/local/squid/blacklist/porn"
- acl adv_sites dstdomain "/usr/local/squid/blacklist/adv"
- # Собственно правила доступа. Проход останавливается
- # на первом совпавшем правиле.
- http_access allow manager localhost
- http_access deny manager
- http_access deny porn_sites
- http_access deny adv_sites
- http_access deny !Safe_ports
- http_access deny CONNECT !SSL_ports
- http_access deny to_localhost
- http_access allow all_net local_domain
- http_access allow mac_komp
- http_access allow mac_asus_wifi
- http_access allow mac_asus_eth
- #http_access allow localnet
- http_access allow users
- http_access deny all
- # Запрещаем кэширование локальных ресурсов
- cache deny local_domain
- cache deny no_cache_dlink
- cache deny no_cache_acorp
- cache deny QUERY
- # Вешаем сквид на порт 3128 и определенный ip.
- # И указываем ему, что он так же будет работать прозрачно.
- http_port 192.168.7.250:3128 transparent
- # Не кэшировать результаты работы скриптов
- hierarchy_stoplist cgi-bin ?
- # Говорит сквиду, сколько ему можно слопать памяти для внутренних объектов
- cache_mem 256 MB
- # Максимальный размер объекта в памяти
- maximum_object_size_in_memory 512 KB
- # Параметры директории, где будет храниться кэш
- cache_dir aufs /varl/squid/cache 5120 16 256
- # Пути к лог файлам
- access_log /var/squid/logs/access.log squid
- cache_log /var/squid/logs/cache.log
- cache_store_log /var/squid/logs/store.log
- # Параметры кеширования
- refresh_pattern ^ftp: 1440 20% 10080
- refresh_pattern ^gopher: 1440 0% 1440
- refresh_pattern (cgi-bin|\?) 0 0% 0
- refresh_pattern . 0 20% 4320
- # Время кеширования удачных и неудачных ответов от DNS сервера
- positive_dns_ttl 2 minute
- negative_dns_ttl 30 second
- # ICP порт. 0 - вырубить протокол icp
- icp_port 0
- # Не обновлять запросы HTTP к ShoutCast до актуальной версии
- # протокола HTTP.
- acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
- upgrade_http0.9 deny shoutcast
- # Модули Apache - mod_gzip и mod_deflate иногда могут генерить кривые заголовки,
- # поэтому не стоит доверять апачу, а именно что заголовок ETag выставлен
- # правильно.
- # P.S. взято из конфига-примера, оттуда же объяснение.
- acl apache rep_header Server ^Apache
- broken_vary_encoding allow apache
- # Отображаемое имя хоста на страницах об ошибках
- #visible_hostname "srv-home.local"
- # Адрес админа, так же отображаетя на страницах об ошибках
- cache_mgr admin@srv-home.local
- # Шаблоны страниц ошибок
- error_directory /usr/local/etc/squid/errors/Russian-1251
- # Группа и пользователь, под которыми работает squid
- cache_effective_user squid
- cache_effective_group squid
- # Разрешить сквиду оставлять себе память (если сейчас она не нужна)
- # для дальнейшего использования. Выключите, если памяти на вашей
- # машине мало и она может понадобится для других целей.
- memory_pools on
- # Максимальный размер удерживаемого пула. Пулы, превышающие
- # указанный здесь размер будут освобождены.
- memory_pools_limit 1 MB
- # squid -z
- # echo 'squid_enable="YES"' >> /etc/rc.conf
- # /usr/local/etc/rc.d/squid start
- # sockstat | grep squid
- squid ncsa_auth 68011 0 stream -> ??
- squid ncsa_auth 68011 1 stream -> ??
- squid squid 50223 3 dgram -> /var/run/log
- squid squid 50223 8 udp4 *:55454 *:*
- squid squid 50223 10 stream -> ??
- squid squid 50223 14 tcp4 192.168.7.250:3128 *:*
- squid squid 50223 16 udp4 *:3130 *:*
Обсуждение статьи
пн, 16/04/2012 - 15:31
сб, 23/06/2012 - 14:39
вс, 24/06/2012 - 12:14
вт, 10/09/2013 - 01:20
вт, 10/09/2013 - 18:50
пн, 16/04/2012 - 03:21