Группа 20..25 человек, terminal server под виндой + AD, половина ходит со своими буками. Всё за FreeBSD шлюзом (DHCP, DNS, www, mail, squid, nat на PIII-850, 512RAM, SCSI hdds, avr. CPU load <1%). Канал «наружу» слабый, платный и не слишком надежный. Я админ поневоле (далеко от специальности и вечное «нет времени»).
Задача такая:
Контролируемый доступ в сеть на основе AD паролей с любых машин и браузеров. Открытый доступ внутри локалки, к внешней почте (mail.ru etc) + желательно иметь доступ к TS из внешней сети.
Но: 1. Есть корпоративные приложения, не умеющее прокси.
2. Есть почтовые ящики за пределами локалки.
Из-за всего этого пока слепил так: ipfw явно закрыл часть портов (отдельная тема), на шлюзе поднял squid c ACL + AD-авторизацию + lightsquid, все остальное пнул ч-з nat. TS просто через порт-форвард выпускать наружу побаиваюсь, более безопасного решения пока не придумал.
Проблема: не могу настроить squid - процент попаданий не более 0,1% (в среднем 0.0, игры с настройками не помогли), часто ч-з прокси страницы практически не грузятся (timeout), в то время как напрямую легко… Про работу squid'a в сети нарыл много и хорошего, и плохого. Похоже, что у нас (пока?) плохое перевешивает.
Вопрос: есть простые варианты решения задачи без squid'a? Или все-таки добивать squid?
Конфиг сквида
Код: Выделить всё
#debug_options ALL,3
tcp_outgoing_address xx.xx.xx.21
#udp_outgoing_address xx.xx.xx.21
udp_incoming_address xx.xx.xx.21
http_port 192.168.0.1:3128
http_port 127.0.0.1:3128 transparent
access_log /usr/local/squid/logs/access.log
#cache_peer ххх.yyy.ru parent 3128 3130 no-query
cache_peer ххх.yyy.ru parent 3128 3130 no-query proxy-only
#no-delay
cache_mem 600 MB
#cache_swap_low 97
#cache_swap_high 99
# добавлено 27.05.2010 после еще одной статьи
cache_swap_low 70
cache_swap_high 90
memory_pools on
memory_pools_limit 200 Mb
maximum_object_size 1024 KB
minimum_object_size 0 Kb
maximum_object_size_in_memory 48 KB
request_header_max_size 12 Kb
request_body_max_size 0 Kb
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024000
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
# Добавлено 29.09.2009 после чтения статьи по оптимизации кэша /нифига не помогло 27.05.2010
reload_into_ims on
refresh_pattern \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://ad\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://ads\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://adv\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://click\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://count\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://counter\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://engine\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://img\.readme\.ru 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://userpic\.livejournal\.com 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.ru/bf-analyze 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.ru/bf-si 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern /advs/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern /banners/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern /cgi-bin/iframe/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 80% 14400
cache_dir ufs /usr/local/squid/cache 16384 16 256
#cache_dir diskd /usr/local/squid/cache 4096 16 256 Q1=72 Q2=64 - сбоит :(
cache_store_log none
#cache_store_log none - указывает активность менеджера хранилища
#cache_access_log
#cache_log /dev/null
#useragent_log none
#log_fqdn off
ftp_list_width 50
dns_nameservers xx.xx.xx.33
dns_testnames www.ru
visible_hostname www.myname.ru
hosts_file /etc/hosts
#httpd_accel host vitrual
#httpd_accel port 80
#httpd_accel_with_proxy on
#httpd_accel_uses_host_header on
#authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/passwd
append_domain .myname.ru
forwarded_for off
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#-------------------------------------------------------------------------
# авторизация
#
#
# Native WinXX authorization
#
auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on
#Basic WinXX authrosation (для программ, которые не умеют native)
#
auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 2
#Заголовок окна авторизации
#
auth_param basic realm Пожалуйста, наберите свой логин и пароль в домене
auth_param basic credentialsttl 1 hours
#-------------------------------------------------------------------------
# Внешняя alc для разбивки по группам
external_acl_type nt_group ttl=120 %LOGIN /usr/local/libexec/squid/wbinfo_group
#external_acl_type nt_group ttl=120 %LOGIN /usr/local/libexec/squid/wbinfo_group.pl
#external_acl_type nt_group ttl=120 %LOGIN /usr/local/libexec/squid/wbinfo_group.sh
# Просто пользователи
acl inet_users external nt_group inet_users
# Пользователи с полным доступом
acl inet_full external nt_group inet_full
# Пользователи, которым разрешен метод Connect
acl inet_connect external nt_group inet_connect
# ACL авторизации на прокси
acl MET proxy_auth REQUIRED
acl Safe_ports port 80 81 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https, snews
#acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 3128 # Squid
acl Safe_ports port 5190 # ICQ
acl SSL_ports port 443 563
acl CONNECT method CONNECT
acl purge method PURGE
acl manager proto cache_object
#acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl localnet src 192.168.0.0/255.255.255.0
#До сайтов, куда можно всем
acl mydomain_site dstdomain "/usr/local/etc/squid/db/allow_all.txt"
#До сайтов, в адресе которых запр. слова
acl bad_url url_regex "/usr/local/etc/squid/db/deny_url.txt"
#Запрещенные доменные имена
acl deny_domains dstdomain "/usr/local/etc/squid/db/deny_domains.txt"
#Для клиент-банка напрямую
acl client_banks dst "/usr/local/etc/squid/db/client_banks.txt"
#Сети, куда ходить не надо
acl bad_networks dst "/usr/local/etc/squid/db/bad_networks.txt"
# Выход для неавторизуемых
acl not_authorized src "/usr/local/etc/squid/db/not_authorized.txt"
# Настройки доступа для разбора причин отлупа
# у тех, кто не может открыть какой-то сайт
#deny_info ERR_BAD_URL bad_url
#deny_info ERR_BAD_NETWORKS bad_networks
#deny_info ERR_DENY_DOMAINS deny_domains
#deny_info ERR_SAFE_PORTS Safe_ports
#deny_info ERR_SSL_PORTS SSL_ports
# Пропускаем sqstat
http_access allow manager localhost
#http_access allow manager localhost localnet
http_access deny manager
# Выпускаем на неавторизуемые сайты
http_access allow client_banks
# Выпускаем всех неавторизованных???
#http_access allow not_authrized
# Выпускаем на сайт универа и отрубаем всех неавторизованных
http_access allow MET mydomain_site
# Разрешаем доступ группе inet_full
http_access allow inet_full all
# Блокируем все запрещенные куски в url
http_access deny bad_url
# Блокируем запрещенные сети
http_access deny bad_networks
# Блокируем запрещенные домены
http_access deny deny_domains
# Запрет соединений типа CONNECT на открытые порты
http_access deny CONNECT !SSL_ports
# Блокируем все порты, кроме открытых
http_access deny !Safe_ports
# Разрешаем инет обычным пользователям
http_access allow inet_users
# И запрещаем все остальное
http_access deny all
#http_access allow purge localhost
#http_access deny purge
#http_access deny CONNECT !SSL_ports
#http_access deny !localnet
# acl allow-url dstdom_regex -i "/etc/squid/allow-urls"
# acl allow-words url_regex -i "/etc/squid/allow-words"
# http_access allow allow-url
# http_access allow allow-words
# acl deny-url dstdom_regex -i "/etc/squid/deny-urls"
# acl deny-words url_regex -i "/etc/squid/deny-words"
# http_access deny deny-url
# http_access deny deny-words
#-------------------------------------------------------------------------
acl direct-domains dstdomain -i "/usr/local/etc/squid/direct-domains"
#acl directs dst "/usr/local/etc/squid/directs"
always_direct allow direct-domains
#always_direct allow directs
always_direct deny all
#never_direct allow !direct-domains
#never_direct allow !directs
#never_direct deny all
#-------------------------------------------------------------------------
#acl snmppublic snmp_community public
#snmp_port 3401
#snmp_access allow localnet all
error_directory /usr/local/etc/squid/errors/Russian-koi8-r
#error_directory c:/squid/share/errors/English
