|
Bog BOS: nntpcache: кеширование новостей USENET (NNTP)
|
Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2024.11.23
Bog BOS: nntpcache: кеширование новостей USENET (NNTP)
Каждый кто пробовал установить такой
сервер новостей (NNTP, USENET) как, например,
INN, обязательно сталкивался с проблемой чрезмерной
загрузки канала. Например, полный поток с основного российского news-сервера
gamma.ru составляет более 100 GB в день!
Вы готовы оплачивать канал 10 Mb/sec полностью занятый под перекачку
новостей, 99.99% которых никем и никогда не будут востребованы?
В то же время жестко ограничивать список доступных новостных групп
нежелательно. Выходом является установка кеширующего прокси-сервера
между клиентским компьютером и "настоящим" NNTP-сервером. Одним из таких
прокси-серверов является nntpcache (смотри также NewsCache и Leafnode
в обзорной статье о USENET).
nntpcache взаимодействует с клиентскими программами чтения новостей как
сервер NNRP, преобразует запросы клиентов и выступает от их имени при
взаимодействии со старшим NNTP-сервером. Таким образом, с точки зрения
клиентов nntpcache выступает как NNTP (NNRP) сервер,
а с точки зрения вышестоящего сервера как NNTP (NNRP) клиент, только
с разнообразными интересами :). В качестве "старшего" (upstream)
сервера может выступать любой NNTP-сервер (или сервера). В частности,
им может быть другой nntpcache, т.е. прокси-сервера могут образовывать
иерархию. nntpcache кеширует статьи и некоторую служебную информацию
(список групп, описания групп, оглавления, заголовки), что ускоряет доступ к
популярным группам.
Не умеет принимать и передавать статьи в режиме потока (feed).
Фильтрует спам на основе сообщений формата NoCeM (криптогрфически подписанные)
извлекаемых из news.lists.filters и alt.nocem.misc.
Может работать под chroot.
Может контролировать права доступа на основе протокола ident (RFC-931).
Позволяет фильтровать статьи на основе текстов заголовков и содержимого
для отдельных пользователей (защита детей, цензура, борьба со спамом).
Имеет встроенный http-сервер для сбора статистики.
Для коммерческого использования - платный.
- предполагается, что nntpcache будет работать от имени пользователя news:news
- создать отдельный раздел под кеш достаточного размера и обеспечить его монтирование
- создать в нем директорию с правами 700 для news:news
- ./configure
- подправить X-Cache в cf/nconf.h
- меняем в Makefile директорию кеша (/usr/local/var/nntpcache) на нужную
нам
- make
- make install (под root)
- /usr/local/libexec
- nntpcache-gdb.sh (посылает разработчику информацию об ошибке)
- nntpcache.gdb (сбор информации для nntpcache-gdb.sh)
- unixauth (setuid root!)
- nntpcached.debug
- /usr/local/bin
- mmap_tests (проверяет, правильно ли работает mmap)
- confused (разбор конфигурационных файлов)
- /usr/local/include
- mmap_results.h (результаты проверки mmap)
- /usr/local/var/nntpcache
- /usr/local/etc/nntpcache
- VERSION
- nntpcache.config-dist
- nntpcache.access-dist
- nntpcache.servers-dist
- spam.filter
- http/ (index.html, nntpcache.jpg, moose.gif, innreport/pics/)
- pubring.pgp-dist
- pubring.asc-dist
- newshound.conf-dist
- innreport.conf-dist
- innreport.pl
- innreport.pm
- /usr/local/sbin
- nntpcached
- newshound
- newshound.pl
- innreport.sh
- /usr/local/man/man8/ (nntpcached.8, newshound.8)
- удалить /usr/local/libexec/nntpcache-gdb.sh,
/usr/local/libexec/nntpcache.gdb, /usr/local/libexec/unixauth как
потенциально вредные
- переместить содержимое /usr/local/var/nntpcache на раздел, выбранный под
кеш, саму директорию удалить, вместо нее сделать ссылку
- /usr/local/etc/nntpcache/nntpcache.config
- cacheDir кеш-раздел/nntpcache
- adminEmail email-администратора
- добавить & к safeGroup
- listSecurity on
- contentFilters no
- xoverFilters no
- nocem off
- relayUnknowns yes
- Organization (текст для соответствующего заголовка при посылке статьи)
- bindAddr явный-адрес:119 (у меня слишком много интерфейсов)
- anonMmap yes (информация не сохраняется между сеансами)
- minFilesFreePercent 10
- minBlocksFreePercent 10
- maxArtAge 8w
- logListMerge no (слишком большой объем)
- logListMergeCorrelation no (слишком большой объем)
- logDebug no
- httpBindAddr явный-адрес:9119
- idleTimeout 10m (как у uplink-а)
- remoteIdleTimeout 1m (не надо надоедать uplink-у)
- serverDownRecheck 1m
- /usr/local/etc/nntpcache/nntpcache.servers определяет список
используемых nntp-серверов. Файл просматривается сверху вниз, к
действию принимается последний подошедший шаблон. Строки
шаблонов имеют следующий формат:
- хост:порт
- интерфейс (если наш компьютер имеет несколько
интерфейсов, иначе слово "DEFAULT"; не забудь также про localhost)
- active timeout
- active.times timeout
- newsgroups timeout
- group list timeout
- xover timeout
- arts timeout
Комментарии можно заключать в скобки /* */ или ставить '#'
в начале строки. Timeout задается в виде числа, за которым
следует единица измерения (m - минут, h - часов, d -
дней, w - недель). После описания
серверов идет строка "%BeginGroups", за которой идут строки,
определяющие с какого сервера будут браться
соответствующие группы (все лишнее
отключить). Каждая строка состоит из двух полей:
- шаблон имени запрашиваемой группы
- имя сервера, с которого брать статьи из данной группы
- /usr/local/etc/nntpcache/nntpcache.access - каждая строка содержит поля:
- шаблон имени/адреса хоста
- шаблон имени группы (слово "connect" используется для
авторизации подключения клиента к nntpcache; слово "http" в
угловых скобках - для доступа к web-порту статистики)
- права (через запятую)
- read
- post
- deny
- quick (не просматривать остаток файла)
- filter/censor (фильтр удаляет "вредную" информацию, цензор
заменяет на что-то приличное)
- ihave
- strip (удалять имена групп из active, active.times,
newsgroups и т.д.)
- auth (требуется AUTHINFO, не работает)
- список имен файлов, содержащих фильтры
- имя файла со списком пользователей
определив имя хоста (перед именем хоста ставится строка
"имя-пользователя@", определяемая с помощью ident; если
определить не удалось, то "unknown@") и имя группы, nntpcache
просматривает весь файл сверху вниз. Действует последняя
подошедшая строка.
- spam.filter
- pubring.pgp
- pubring.asc
- newshound.conf
- innreport.conf
- обеспечить запись в syslog news.debug
- сделать дырку в ipchains для порта nntpcache и 9119 (http-сервер статистики)
- включить news.debug в syslog
- автоматический запуск/остановка
- предполагается, что nntpcache будет работать от имени пользователя news:news
- создать отдельный раздел под кеш достаточного размера и обеспечить его монтирование
- ./configure --without-authinfo-passwd --without-authinfo-pipe (полезные ключи)
[pgp, hostname, gethostbyname, socket, syslog, setproctitle]
- подправить X-Cache в cf/nconf.h
- в config.h убрать AUTHINFO_PAM (иначе не компилируется)
- make (чудовищное количество предупреждений)
- make install (под root)
- /usr/local/libexec
- nntpcache-gdb.sh (посылает разработчику информацию об ошибке)
- nntpcache.gdb (сбор информации для nntpcache-gdb.sh)
- unixauth (setuid root!)
- /usr/local/bin
- mmap_tests (проверяет, правильно ли работает mmap)
- confused (разбор конфигурационных файлов)
- /usr/local/include
- mmap_results.h (результаты проверки mmap)
- /usr/local/var/nntpcache
- /usr/local/etc/nntpcache
- VERSION
- nntpcache.config-dist
- nntpcache.access-dist
- nntpcache.servers-dist
- spam.filter
- http/ (index.html, nntpcache.jpg, moose.gif, innreport/pics/)
- pubring.pgp-dist
- pubring.asc-dist
- newshound.conf-dist
- innreport.conf-dist
- innreport.pl
- innreport.pm
- /usr/local/sbin
- nntpcached
- newshound
- innreport.sh
- /usr/local/man/man8/ (nntpcached.8, newshound.8)
- удалить /usr/local/libexec/nntpcache-gdb.sh,
/usr/local/libexec/nntpcache.gdb, /usr/local/libexec/unixauth как
потенциально вредные
- переместить /usr/local/var/nntpcache на раздел, выбранный под кеш
- скопировать nntpcache.config-dist в nntpcache.config и отредактировать его
- cacheDir кеш-раздел/nntpcache
- adminEmail email-администратора
- listSecurity on
- contentFilters on
- xoverFilters on
- nocem off
- relayUnknowns yes
- Organization (текст для соответствующего заголовка при посылке статьи)
- bindAddr 127.0.0.1:119
- anonMmap yes (информация не сохраняется между сеансами)
- minFilesFreePercent 30
- minBlocksFreePercent 30
- logListMerge no (слишком большой объем)
- logListMergeCorrelation no (слишком большой объем)
- logDebug no
- httpBindAddr 127.0.0.1:9119
- idleTimeout 10m (как у uplink-а)
- скопировать nntpcache.servers-dist в nntpcache.servers и отредактировать его
- --prefix=/usr/local
- --with-authinfo-passwd
- --with-authinfo-pipe
- --with-authinfo-ldap
- --with-authinfo-radius
- --enable-debug
- --with-optimise
Установка (2.3.3 на RH Linux 6.0/7.0 из исходников).
- Нового пользователя не заводил - пусть работает с правами news/news
- ./configure
- редактируем cf/nnconf.cf,cf/nntpcache.config-dist (или cf/nnconf.cf.in до ./configure)
- директория под кеш (cacheDir)
- adminEmail
- ihaveServers (кому будут передаваться команды IHAVE)
- maxMsgIDsearch (сколько серверов
опрашивать для поиска статьи по Message-ID)
- contentFilters (пока выключил)
- xoverFilters (пока выключил)
- nocem (пока выключил)
- Organization (текст для соответствующего заголовка при посылке
статьи)
- minBlocksFree (очистка начинается только когда в разделе
остается меньше свободных блоков, нужен
отдельный раздел)
- bindAddr (119 порт уже занят "нормальным" INN)
- rfc931 (выключить, какой ident от MS W98?!)
- log From/To Client/Server (от сервера и к
клиенту включать только на время отладки - сюда попадает
результат команд типа "list active")
- logListMerge* (огромный объем, выключить, а то syslog просто умирает)
- statsArticleID (Message-ID, по которму извлекается
статистика, поменять, чтобы посторонние не читали)
- idleTimeout (сделать таким же, как и у оригинального INN)
- remoteIdleTimeout - уменьшить до минуты, чтобы не
надоедать?
- serverDownRecheck (сделать поменьше - пусть долбит, пока не
проснется)
- просматриваем cf/nconf.h и убираем X-Cache
- меняем в Makefile директорию кеша (/usr/local/var/nntpcache) на нужное нам
- make (чудовищное количество предупреждений)
- make install (под root)
- /usr/local/bin
- /usr/local/include
- директория кеша
- /usr/local/etc/nntpcache
- nntpcache.config-dist
- nntpcache.servers-dist
- nntpcache.access-dist
- VERSION
- spam.filter
- http/
- http/innreport/
- http/innreport/pics/
- pubring.pgp-dist
- pubring.asc-dist
- newshound.conf-dist
- innreport.conf-dist
- innreport.pl
- innreport.pm
- /usr/local/sbin
- nntpcached (собственно NNTP-кеш)
- -e (выполнить expire и завершить работу; не запускать
параллельно работающему nntpcached!)
- -b адрес:порт (к какому порту прислушиваться; по
умолчанию берется из конфигурационного файла)
- -c полный-путь-к-файлу-конфигурации (по
умолчанию, /usr/local/etc/nntpcache/nntpcache.config)
- -n (не отсоединяться от терминала при запуске - для
запуска из crontab и rc)
- -r (удалить старую базу данных - history и cache.mmap
перед запуском)
Сигналы:
- HUP - перечитать
конфигурацию (может не работать, если
привилегии процесса сброшены после
запуска - по умолчанию, так оно и есть)
- USR1 - немедленно загрузить active, active.times и newsgroups
со всех серверов
- USR2 - запустить expire
- TERM/INT - аккуратно завершить работу
- newshound
- innreport.sh
- /usr/local/man/man8
- файлы конфигурации (в /usr/local/etc/nntpcache; делаются из
соответствующих -dist):
- nntpcache.config - то же самое, что и в cf/nnconf.cf
- nntpcache.servers - определяет список
используемых nntp-серверов. Файл просматривается сверху вниз, к
действию принимается последняя подошедшая строка. Строки
шаблонов имеют следующий формат:
- хост:порт
- интерфейс (если наш компьютер имеет несколько
интерфейсов, иначе слово "DEFAULT"; не забудь также про localhost)
- active timeout
- active.times timeout
- newsgroups timeout
- group list timeout
- xover timeout
- arts timeout
Начало файла является
комментарием (заключено в скобки /* */), так что
редактировать эту часть не надо ;). Timeout
задается в виде числа, за которым
следует единица измерения (m - минут, h - часов, d -
дней, w - недель). Все "левые" сервера (в т.ч. nntpcache.org)
лучше отключить. После описания
серверов идет строка "%BeginGroups", за которой идут строки,
определяющие с какого сервера будут браться
соответствующие группы (все лишнее
отключить). Каждая строка состоит из двух полей:
- шаблон имени запрашиваемой группы
- имя сервера, с которого брать статьи из данной группы
- nntpcache.access - каждая строка содержит поля:
- шаблон имени/адреса хоста
-
шаблон имени группы (слово "connect"
используется для
авторизации
подключения клиента к nntpcache; слово "http" в
угловых скобках - для доступа к web-порту
статистики)
- права (через запятую)
- read
- post
- deny
- quick (не просматривать остаток файла)
- filter/censor (фильтр удаляет "вредную" информацию, цензор
заменяет на что-то приличное)
- ihave
- strip (удалять имена групп из active, active.times,
newsgroups и т.д.)
- auth (требуется AUTHINFO, не работает)
- список имен файлов, содержащих фильтры
- имя файла со списком пользователей (не работает)
определив имя хоста (перед именем хоста ставится строка
"имя-пользователя@", определяемая с помощью ident; если
определить не удалось, то "unknown@") и имя группы, nntpcache
просматривает весь файл сверху вниз. Действует последняя
подошедшая строка.
- spam.filter
- pubring.pgp
- pubring.asc
- newshound.conf
- innreport.conf
- сделать дырку в firewall для порта nntpcache и 9119 (http-сервер
статистики)
- включить news.debug в syslog
- автоматический запуск/остановка (пока в rc.local))
- натравить newshound на популярные группы
От версии 2.3.3 до 3.0.1:
- ограничения на занимаемый объем и количество файлов выражаются в процентах
- аутентификация при обращении к серверу
- аутентификация при запросах клиентов (/etc/passwd, LDAP, radius)
- убран сбор статистики через протокол NNTP
- борьба с Y2k
- поддержка tcpwrappers (useLibWrap)
- поддержка PAM
- (был на http://www.nntpcache.org) сайт разработчиков
|
Bog BOS: nntpcache: кеширование новостей USENET (NNTP)
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru