ГОРЯЧИЙ ПРОКСИ-СЕРВЕР. Докучаев Дмитрий aka Forb Спецвыпуск Xakep, номер #033, стр. 033-030-2 no_cache deny QUERY ## Запрещение кеширования файлов в каталоге /cgi-bin. cache_dir ufs /usr/local/squid/cache 100 16 256 cache_access_log /usr/local/squid/logs/access.log cache_log /dev/null cache_store_log /dev/null ## Директория для кеша, а также пути к логам. В моем случае логируются только входящие запросы к проксику. pid_filename /usr/local/squid/logs/squid.pid ## Путь к pid демона. ftp_user anonymous@mail.ru ## E-mail адрес, который будет при анонимном ftp-соединении. unlinkd_program /usr/local/squid/libexec/unlinkd ## Путь к внешней программе unlinkd - нужна для отключения ненужных cache-файлов. # ACCESS CONTROLS ## Самое интересное - настройка доступа к демону по ip-адресам. acl all src 0.0.0.0/0.0.0.0 ## Добавим запись all, которая имеет сорц, равный произвольному ip-адресу. acl password src 192.168.0.0/24 192.168.1.0/24 ## А также две локальные подсетки (допустим, на этих адресах будут находиться клиенты и работники твоей локалки). acl CONNECT method CONNECT ## Добавим поддержку метода CONNECT (куда современному проксику без него?). http_access allow password ## Разрешим юзать прокси-сервер клиентам (смотри acl password). http_access deny CONNECT !password ## Использовать SSL CONNECT разрешаем только password-группе. http_access deny all ## Остальные пусть идут лесом ;). ## С ACL разобрались. Мы еще вернемся к контролю при разборе полетов. Идем дальше. cache_mgr admin@localnet.ru cache_effective_user admin cache_effective_group root ## Задаем мыло владельца проксика, а также его права (Squid при запуске сделает setuid() и будет работать с кешем с этими правами). forwarded_for off ## Мутим прозрачный прокси-сервер. Благодаря этой опции ip-адрес, с которого осуществлялся коннект на демон, отображаться не будет. dns_testnames ns.localnet.ru as_whois_server whois.ripn.net ## Напоследок задаем два параметра: ns-сервер локалки и whois-сервер (нужны для корректной работы проксика). Вот, собственно, и весь конфиг, который схиляет для нормальной работы Squid. Разумеется, если ты хочешь большего, этих опций мало - полный перечень параметров демона, а также описание к ним ты можешь найти, например, на www.opennet.ru. Следующим шагом для тебя будет создание кеш-директорий. Перед этим необходимо поставить владельца и группу на каталог /usr/local/squid/cache. В нашем случае команда будет выглядеть следующим образом: # chown admin:root /usr/local/squid/cache Теперь переходим в /usr/local/squid/sbin и запускаем бинарник squid с параметром -z. Демон попросит подождать и высветит надпись, которая дает понять, что создание директорий в процессе. На 486dx эта операция выполняется около 10-15 минут, так что потерпи и ни в коем случае не прерывай работу Squid. ДОВЕРЯЙ, НО ПРОВЕРЯЙ! Создали? Замечательно! Настало время проверить работу проксика. Первым делом запустим его (без параметров). Если конф настроен правильно, то ошибок при запуске не будет. Телнетимся на порт 3128 и видим connection refused. Поторопились... Но как узнать, в чем дело и почему прокси не работает? Ответ прост - запустить squid с параметром -v 2 (полный дебаг). После старта картина становится ясной - Squid не может подгрузить файлы с сообщениями об ошибках. На самом деле, в каталоге /usr/local/squid/share/errors содержится много подкаталогов, которые имеют названия стран. Являясь патриотом, выбираем Россию, кодировку cp-1251 (или koi8, на твой выбор). Копируем внутренности этого каталога в /usr/local/squid/share/errors, например, командой |