3 марта 2010 г.

Ускоряемся или экономия трафика

Возможное ускорение и экономию трафика под Ubuntu Linux мы получим в связке:
pdnsd+adzapper+bfilter+polipo
Так как безлимитный интернет не у всех, поэтому всеми возможными способами будем экономить на трафике... Очень простенько напишу о своих действиях, а то ведь не винда, возможно и забуду к тому времени как снова понадобится, а может и поможет кому-нибудь.

### Кэширование DNS ###

Этот пункт опциональный, на любителя, я как-то сделал из любопытства и оставил... При неустойчивой связи разрешение доменных имен может происходить довольно долго и не всегда с первого раза. Помогает локальный кэширующий DNS сервер. К тому же это позволит чуть-чуть сэкономить на трафике, особенно если вы испльзуете gprs :) И не нужно думать, что это плохая идея для домашнего использоания, ведь даже в Chrome/Chromiume сделали "упреждающее чтение DNS для ускорения загрузки страниц", так что вполне сгодится :-) Proxy DNS Server (пакет pdnsd) как раз и создан для наших целей. Он кэширует запросы и хранит кэш на диске.

По умолчанию файл конфигурации /etc/pdnsd.conf игнорируется. Вместо него используется один из файлов из каталога /usr/share/pdnsd/, что задается параметром AUTO_MODE в файле /etc/default/pdnsd. Для ручной настройки этот параметр нужно закомментировать.

Далее правим /etc/pdnsd.conf, добавляя в секцию server адресами DNS серверов своего провайдера, остальное на ваше усмотрение:
server {
ip = 192.168.3.1
, 192.168.3.2
}
Для правильной работы в /etc/resolv.conf должна быть прописано лишь одна строка:
nameserver 127.0.0.1
Но Network Manager ее перезаписывает при подключении pptp (VPN), возможно есть и более правильные решения, но чтобы как-то это исправить в /etc/ppp/ip-up или /etc/ppp/ip-up.local, смотря как у вас настроено соединение, необходимо дописать (параметр sleep необязателен):
sleep 3
echo "nameserver 127.0.0.1" > /etc/resolv.conf
Совет от FOX: "Практика показала, что не стоит сюда (resolv.conf) также вписывать адреса DNS-серверов провайдера. Если сервера недоступны, pdnsd будет возвращать либо закэшированный ответ, либо - немедленно - ошибку. В случае ошибки приложения будут затем запрашивать сервера провайдера и ждать положенный таймаут, задержка не уменьшится. Если же приложения обращаются только к pdnsd, ответ, как было сказано выше, будет получен немедленно. И таймаут можно уменьшить, настроив соответствующий параметр. И доступность серверов будет проверять pdnsd, а не каждое приложение".

Проконтролировать работу можно с помощью команды pdnsd-ctl, например,
sudo pdnsd-ctl status
или
sudo pdnsd-ctl server linux.org.ru retest
N.B. Совет с перезаписью resolv.conf работает с 'sudo pon trion', при использовании nm-аплета гнома - не срабатывает.

### Прокси polipo ###

Нам нужен кэширующий прокси, чтобы немного сэкономить на трафике и ускорить просмотр страниц. Конечно, браузеры тоже кэшируют страницы и картинки, но хотелось бы иметь один общий кэш для всех имеющихся браузеров (Firefox, Chromium, Midori, Dillo)...

Ставим лёгкий, быстрый, удобный кеширующий прокси polipo и инструмент для борьбы с рекламой adzapper (он её просто вырезает):
sudo aptitude install polipo adzapper
Так же решил установить допольнительную фильтрацию рекламы с эвристическим анализом bfilter, так как в репах убунты не нашел, взял из Debian Lenny пакеты:
bfilter_1.1.4-1_i386.deb
bfilter-common_1.1.4-1_all.deb
libmozjs1d_1.9.0.18-1_i386.deb
Конфигурация Polipo по умолчанию вполне работоспособна (документация http://localhost:8123/), но нам нужны небольшие дополнения, правим конфиг:
sudo vim /etc/polipo/config
включаем инструмент для борьбы с рекламой, добавив следующую строку:
redirector = /usr/bin/adzapper
указывает родительский прокси на bfilter:
parentProxy = 127.0.0.1:8080
можете настроить список запрещенных URL здесь:
/etc/polipo/forbidden или ~/.polipo-forbidden
добавляем список некешируемых вещей:
uncachableFile = /etc/polipo/uncachable

\.(php[345]?|[sp]html|cgi|pl|py|[aj]sp)$
\?
/cgi-bin/
Не помню по умочанию или нет, но у меня так: proxyOffline = yes

перезапускаем настроенный прокси: sudo /etc/init.d/polipo restart
Браузер(ы) настраиваем на использоание прокси: 127.0.0.1:8123, конечно, если вы не меняли polipo порт по умолчанию.

### adzapper ###

Чтобы не получать вместо рекламы изображения с надписью "This ad is zapped" с сайта редиректора, в /etc/adzapper.conf изменим параметр:
ZAP_MODE="CLEAR"
Для обновления списков прописал в /etc/crontab строку:
30 19 * * 6 root /usr/share/doc/adzapper/examples/update-zapper
Как оказалось в конце файла /usr/bin/adzapper содержаться и фильтры, которые изменять нет смыслы, ведь при обновлении все исчезнет.

### bfilter ###

Для подключения правил блокировки рекламы от AbBlock Plus переносим модифицированные правила из
/usr/share/doc/bfilter-common/urls.local.example.gz в /etc/bfilter/urls.local

Советы по настройке bfilter-wiki
Advanced Configuration: URL Patterns

Сначала я настроил и долго использовал adzapper+polipo, потом добавил bfilter и с ним намного лучше и возможно adzapper уже не столь необходим, но пусть пока будет, ведь хуже от этого не станет. И очень жаль, что в репозиториях убунту нет bfilter - это отличный блокировщик рекламы.

bfilter может работать и как системный демон, и как пользовательское приложение. В последнем случае он показывает свою иконку в системном лотке и имеет полноценный графический интерфейс для конфигурирования.

N.B. И не забудьте подключить расширение AdBlockPlus и AdBlock+EHH для браузера Firefox и Chromium (в Midori встроенный) для вырезания рекламы и экономии трафика или не забывайте добавлять свои правила фильтрации в bfilter или polipo.

Комментариев нет: