SDB:Кеширующий DNS и Proxy
- DNS — Позволит сократить время отклика.
- Squid — ну само собой кеш.
Кеширующий DNS
Ставим пакет BIND (как ставим не описываю, так как установка ничем не отличается от обычной) заполняем файл /etc/named.conf следующим содержанием
acl "corpnets" { 192.168.0.0/24; 127.0.0.1; }; options { directory "/etc/named.d"; pid-file "/var/run/named.pid"; allow-query { "corpnets"; }; forwarders { 192.168.100.1; }; }; zone "." { type hint; file "named.root"; }; zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; notify no; };
где 192.168.0.0 и 127.0.0.1 — это сети из которых разрешёно посылать запрос через наш DNS directory "/etc/named.d"; - рабочая директория pid-file "/var/run/named.pid"; - собственно id процесса allow-query { "corpnets"; }; - разрешение на посылку запроса для группы corpnets forwarders { 192.168.100.1; }; - что бы уменьшить количество трафика от нашего DNS сервера провайдера, в таком случае при попытке резолвинга DNS имени, ваш DNS сервер будет сначала обращаться к кэшу на сервере провайдера.
Теперь нужно создать файлы, которые мы указали в named.conf, а именно: named.root и localhost.rev. named.root скачиваем c FTP-сервера ftp.internic.net
root@mypc:$ cd /etc/named.d/ root@mypc:$ wget ftp://ftp.internic.net/domain/named.root
Создадим и отредактируем файл localhost.rev
root@mypc:$ touch /etc/named.d/localhost.rev && vi /etc/named.d/localhost.rev следующий текст
$TTL 3600
@ IN SOA zm.domain.com. root.zm.domain.com. ( 20040603 ; Serial 3600 ; Refresh 900 ; Retry 3600000 ; Expire 3600 ) ; Minimum IN NS zm.domain.com. 1 IN PTR localhost.domain.com.
Теперь можно попробовать запустить наш DNS
root@mypc:$/etc/init.d/named start
Если процесс запущен и работает, пробуем послать запрос через наш DNS-сервер:
root@mypc:$ dig @127.0.0.1 ya.ru
В ответ на этот запрос мы должны получить некий положительный ответ, например:
root@mypc:$ dig @127.0.0.1 ya.ru
; <<>> DiG 9.2.1 <<>> @127.0.0.1 ya.ru ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36843 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0 ;; QUESTION SECTION: ;ya.ru. IN A ;; ANSWER SECTION: ya.ru. 36000 IN A 213.180.193.123 ;; AUTHORITY SECTION: ya.ru. 36000 IN NS ns1.yandex.ru. ya.ru. 36000 IN NS ns2.yandex.ru. ya.ru. 36000 IN NS ns3.yandex.ru. ya.ru. 36000 IN NS ns.ispm.ru. ;; Query time: 2639 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Jen 1 22:28:50 2009 ;; MSG SIZE rcvd: 122
Если ответа нет, идем смотреть логи системы в /var/log/messages, читаем, что нам пишет наш bind, и пытаемся понять, с чем это может быть связано. Надеюсь, вы догадаетесь при необходимости настроить соответствующим образом ваш фаервол для работы DNS-сервера.
Если положительный ответ получен, значит ваш DNS-сервер работает и теоретически может обслуживать вашу сеть :)
Теперь давайте настроим ваш компьютер на работу с установленным DNS-сервером. Для этого необходимо внести изменения в файл /etc/resolv.conf. Выглядеть он будет примерно следующим образом:
root@mypc:$ vi /etc/resolv.conf # Ваш домен domain domain.com # IP адрес либо 127.0.0.1 либо адрес вашей машины nameserver 127.0.0.1
Проверяем, обращается ли ваша машина к установленному DNS-серверу:
# nslookup yandex.ru Server: localhost.domain.com Address: 127.0.0.1 Non-authoritative answer: Name: yandex.ru Address: 213.180.216.200
Если получен ответ, аналогичный тому, что вы видите выше, значит, обращение происходит успешно.
Настройка squid
Здесь все проще и объяснять в силу большого количества мануалов по данному прокси и прекрасному example config file
создадим файл /etc/squid/squid.conf следующего содержания
http_port 3128 #IP Нашего DNS сервера dns_nameservers 192.168.0.1 cache_dir ufs /var/log/squid/cache/cache 100 16 256 cache_log /var/log/squid/cache.log cache_store_log /var/log/squid//store.log pid_filename /var/log/squid/squid.pid hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY emulate_httpd_log on # (или не действовать) ограничения acl director src 192.168.0.2 # весь диапазон ip-адресов локальной сети acl office src 192.168.0.0/255.255.255.0 # все возможные ip-адреса 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 SSL_ports port 443 563 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 CONNECT method CONNECT # закрыть доступ к прокси всем, кроме локальной сети, # а то любители бесплатных прокси намотат вам трафик :-) http_access deny all !office http_access deny !Safe_ports icp_access allow all httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on error_directory /etc/squid/errors
запускаем squid -z для создания структуры кеша && /etc/init.d/squid start если что то не работает, запустите Squid c опцией
Эффективность достигает 20-40%
Еще дополнительно надо проверить, чтобы был доступ к папке с кешем. Ибо в противном случае могут быть дурные проблемы...
Стегний Павел --Adramelech 23:46, 4 января 2009 (UTC)