Как
известно, скорость загрузки страниц
зависит не только от ширины канала,
который предоставляет вам ваш
интернет-провайдер, но и от такого
важного параметра как время
задержки (Латентность
или Latency). Не буду об этом долго
распространятся, замечу только, что
из-за наличия задержки при увеличении
полосы пропускания вашего интернет-канала
с 5 Мб/с до 10 Мб/с скорость загрузки может
увеличится всего на 5%, что красноречиво
демонстрируют следующие графики:
Отчасти проблему с задержками может решить кэширование запросов к DNS. Для этих целей в Ubuntu есть несколько пакетов:
- dnsmasqd - начиная с версии Ubuntu 12.04 установлен по умолчанию, кэш держит только в памяти, поэтому хранит адреса только до первой перезагрузки
- bind - подходит для больших сложных систем, не очень быстрый
- pdnsd - легкий в настройке и быстрый - его мы и будем устанавливать
Установка pdnsd
sudo apt-get install pdnsd
Запуск
- sudo service pdnsd start
Настройка многократно описывалась на разных сайтах, см. например Делаем свой локальный DNS (PDNSD), с блэкджеком и быстрее Google Public DNS.
Я же сосредоточусь на возможных проблемах
Проверку состояния pdnsd можно выполнить с помощью следующей команды:
- sudo pdnsd-ctl status
при этом я получил следующую ошибку:
Error: could not open socket /var/cache/pdnsd/pdnsd.status: No such file or directory
Решение
Во-первых пробуете вручную запустить pdnsd
- sudo service pdnsd stop
- sudo pdnsd
и по результату определяем в чем именно проблема. Например, в моем случае было вот что:
* 04/09 01:54:22| pdnsd: error: Could not bind tcp socket: Address already in use
* 04/09 01:54:22| pdnsd: error: Could not bind to udp socket: Address already in use
* 04/09 01:54:22| pdnsd: error: tcp and udp initialization failed. Exiting.
Дальше ищем что пишут об этой ошибке в интернете. Одной из причин может быть то, что порт с которым по-умолчанию работает pdnsd, может быть занят. Чтобы это проверить выполняем:
- sudo netstat -lpn | grep 127.0.0.1:53
получаем:
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3453/dnsmasq
udp 0 0 127.0.0.1:53 0.0.0.0:* 3453/dnsmasq
откуда видно, что порт 53 уже занял демон dnsmasq
Для того чтобы освободить порт редактируем NetworkManager.conf
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3453/dnsmasq
udp 0 0 127.0.0.1:53 0.0.0.0:* 3453/dnsmasq
откуда видно, что порт 53 уже занял демон dnsmasq
Для того чтобы освободить порт редактируем NetworkManager.conf
- sudo gedit /etc/NetworkManager/NetworkManager.conf
и закомментируем строчку
- dns=dnsmasq
следующим
образом
- #dns=dnsmasq
Сохраняем файл и перезагружаем network-manager
- sudo service restart network-manager
И снова запускаем pdnsd
- sudo service pdnsd start
для проверки времени обработки запроса к dns можно использовать команду dig
- dig @127.0.0.1 ubuntu-forward.blogspot.com | grep "Query time"
Query
time: 55 msec
повторный запрос выполняется почти мгновенно:
Query time: 0 msec
Для того, чтобы все запросы с вашего компьютера направлялись через pdns, в настройках подключения network-manager нужно в графе
DNS Servers указать 127.0.0.1
И снова проверить работу pdnsd уже без указания какой именно сервер использовать
повторный запрос выполняется почти мгновенно:
Query time: 0 msec
Для того, чтобы все запросы с вашего компьютера направлялись через pdns, в настройках подключения network-manager нужно в графе
DNS Servers указать 127.0.0.1
И снова проверить работу pdnsd уже без указания какой именно сервер использовать
- dig ubuntu-forward.blogspot.com | grep "Query time"
Query
time: 0 msec
Для проверки реальной скорости работы pdnsd в рабочих условиях можно использовать namebench.
Для проверки реальной скорости работы pdnsd в рабочих условиях можно использовать namebench.
Комментариев нет:
Отправить комментарий