SDB:Кеширующий DNS и Proxy

Перейти к: навигация, поиск
Руководство описывает настройку
  1. DNS — Позволит сократить время отклика.
  2. 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 опцией

root@mypc:$ squid -d10

Эффективность достигает 20-40%

Еще дополнительно надо проверить, чтобы был доступ к папке с кешем. Ибо в противном случае могут быть дурные проблемы...


Стегний Павел --Adramelech 23:46, 4 января 2009 (UTC)