Устанавливаем IRC сервер — ngIRCd. Устанавливаем IRC сервер — ngIRCd Открылся irc сервер

В хранилищах (репозиториях) Ubuntu находится много серверов IRC (Internet Relay Chat). В этой секции будет рассмотрено как установить и настроить оригинальный IRC сервер ircd-irc2 .

Установка

Чтобы установить ircd-irc2 , выполните следующую команду в командной строке:

Sudo apt-get install ircd-irc2

Файлы настройки сохраняться в каталоге /etc/ircd. Документация будет доступна в каталоге /usr/share/doc/ircd-irc2.

Настройка

Установки IRC могут быть сделаны в конфигурационном файле /etc/ircd/ircd.conf. Вы можете задать сетевое имя сервера в этом файле изменив следующую строку:

M:irc.localhost::Debian ircd default configuration::000A

Пожалуйста, убедитесь, что вы добавили DNS записи для сетевого имени IRC сервера. Например, если вы установили в качестве сетевого имени IRC irc.livecipher.com, убедитесь, что irc.livecipher.com разрешается вашим DNS сервером. Сетевое имя IRC не обязательно должно совпадать с общим сетевым именем.

Информация об администраторе IRC может быть настроена редактированием следующей строки:

A:Organization, IRC dept.:Daemon :Client Server::IRCnet:

Вы можете добавить отдельные строки для настройки списка прослушиваемых IRC портов, для настройки информации по Оператору, для настройки авторизации клиентов и т.д. За подробностями обратитесь к примеру файла настройки /usr/share/doc/ircd-irc2/ircd.conf.example.gz.

Заголовок IRC , который будет показан на IRC клиенте при соединении с сервером, может быть установлен в файле /etc/ircd/ircd.motd.

После внесения необходимых изменений в файл настройки, вам надо перезапустить IRC сервер, используя следующую команду:

Sudo /etc/init.d/ircd-irc2 restart

Одной из целей знакомства части пользователей Linux является изучение работы и настроек различных серверов и сервисов. В силу открытости этой операционной системы научиться администрировать систему гораздо проще, чем в Windows, для которой большинство проектов далеко не бесплатны, да и найти дистрибутив бывает не просто. В этой статье поможем читателям, разобрав настройку одного из IRC серверов. Почему именно IRC? Если поискать на тематических ресурсах, можно обнаружить, что для Linux и Unix существует большое количество руководств по настройке Интернет серверов, чаще всего Apache, различных вариантов почтовых систем, отличающихся используемыми компонентами и вариациями на тему борьбы со спамом и вирусами. Найти руководство по остальным на порядок тяжелее. Особенно это касается старичка IRC, который уже несколько десятков лет честно исполняет свой долг, выдерживая многочисленные баталии, основные ресурсы IRC, отлично держатся на ногах. И не смотря на нашествие более новых сервисов вроде ЖЖ, сдаваться похоже не собираются. Постоянно появляются новички. Сегодня уже никого не удивишь сетями связывающими целые районы, поэтому почему бы не испытать себя в администрировании IRC.

На сегодняшний день известно несколько десятков, если не сотен решений предназначенных для построения IRC сервера. Некоторые из этих проектов берут свое начало от первого сервера IRCD (http://www.nic.funet.fi/~irc/server/), соответственно и часто тащат за собой его наследство. Существуют системы, рассчитанные на большое количество пользователей, требующие наличия базы данных, поддерживающие обмен информации по защищенному протоколу SSL. Сравнить некоторые возможности популярных решений можно по адресу http://en.wikipedia.org/wiki/Comparison_of_IRCds. Мы же обратимся к проекту, который не претендует на роль первого, лучшего и так далее, не может он похвастаться и наличием большого числа дополнительных возможностей. Стабильность и безопасность вот ключевые слова — ngIRCd (Next generation IRC Daemon).

?Возможности ngIRCd

Этот сервер написан автором Александром Бартоном (Alexander Barton) полностью с нуля, на языке С. Основное внимание при его проектировании было уделено переносимости кода и чистоте кода. Как результат ngIRCd легко собирается на большинстве платформ. Кроме Linux это: AIX, A/UX, FreeBSD, HP-UX 9.10/10.20, HP-UX, IRIX, Mac OS X, NetBSD, OpenBSD, Solaris, и Windows с библиотеками Cygwin. Во время сборки ngIRCd не требует никаких скрытых зависимостей, компилируется он просто идеально. Удобств настройке придает понятный конфигурационный файл, возможно с увеличением функциональности он несколько усложнится, но базовый принцип я надеюсь, останется таким же. Также ngIRCd?совместим со всеми IRC серверами,?соблюдающими спецификации RFC 1459, 2810-2813, а значит, большинство команд и все что ожидает от подобного сервиса обычный пользователь. В больших сетях пока использовать его, наверное, рановато. Да и автор сам честно предупреждает,?что?ngIRCd пока не?тестировался?на?оживленных IRC-сетях?с высокой нагрузкой. Но в небольших сетях и в целях обучения его вполне можно рекомендовать. Тем более как показывает опыт, он не сильно боится большой нагрузки. Кстати сервер ngIRCd может работать не только со статическим адресом, но нормально себя ведет, если адрес системе назначается динамически. Только бы пользователи знали куда присоединяться. Для повышения безопасности сервер легко может работать переходить chroot окружение, и при возникновении проблем злоумышленник дальше указанного каталога не пройдет. Домашний сайт проекта — http://ngircd.barton.de/.

Устанавливаем ngIRCd

В репозитарии дистрибутива KUbuntu 6.06 Daper Drake, который использовался при тестовой установке, ngIRCd есть. Установить его просто.

$ sudo apt-get update

$ sudo apt-get install ngircd

Правда на момент написания это была уже не актуальная на текущий момент версия — 0.9.2, тогда как на сайте проекта была доступна 0.10.1. Тем, кто не хочет компилировать можно взять готовый пакет к Ubuntu 7.04, где собрана версия 0.10 или альтернативный пакет к Debian ftp://arthur.barton.de/debian/pool/main/n/ngircd/, который поддерживается Александром. Компилирование проходит без проблем, поэтому проще собрать его самому.

$ wget -c ftp://ftp.berlios.de/pub/ngircd/ngircd-0.хх.1.tar.gz

$ tar xzvf ngircd-0.хх.1.tar.gz

$ cd ngircd-0.хх

И конфигурируем. Можно запустить скрипт без параметров, но я включил захват IRC трафика, весьма полезная возможность при изучении протокола. Также я не люблю, когда программы устанавливаются в /usr/local, а конфигурационный файлы раскиданы по всему дереву. Поэтому в качестве каталога для установки указал /usr, а конфигурационный файл будет лежать в /etc.

$ ./configure —enable-sniffer —sysconfdir=/etc –prefix=/usr
По окончании конфигурирования будет выдано резюме по установкам.

ngIRCd 0.хх has been configured with the following options:

Target: i686-pc-linux-gnu

Compiler flags: -pedantic -g -O2 -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes -DSYSCONFDIR="»$(sysconfdir)»‘

Libraries: -lz -lnsl

‘ngircd’ binary: /usr/sbin

Configuration file: /etc

Manual pages: /usr/man

Documentation: /usr/share/doc/ngircd

Syslog support: yes Enable debug code: yes

zlib compression: yes IRC sniffer: yes

Use TCP Wrappers: no Strict RFC mode: no

Zeroconf support: no IRC+ protocol: yes

IDENT support: no I/O backend: «epoll()»

И затем стандартная компиляция.

$ sudo make install

Вот собственно и все. Весь процесс сборки не отнимет у вас времени больше двух-трех минут.

Конфигурационный файл ngIRCd

При запуске все настройки демон считывает из единственного конфигурационного файла ngircd.conf. Если конфигурирование производилось, как показано выше, то он сейчас располагается в каталоге /etc. Структура файла традиционная для Unix, примерно так выглядят настройки большинства серверов. Файл разбит на несколько секций, в каждой указываются определенные настройки. Причем если планируется работа нескольких виртуальных серверов ngIRCd, их настройки описываются в одном файле. Удобно, что он хорошо комментирован, а ключевые слова поняты по смыслу, поэтому разобраться в значении параметра, можно даже не заглядывая в документацию. Знак диез «#» и точка с запятой «;» означают комментарий. Документация также стоит отдельных похвал, написана просто и понятно, при знании базового английского, сориентироваться будет просто. Большую часть параметров можно оставить по умолчанию, то есть закомментированными.

Приступаем к редактированию.

$ sudo mkedit /etc/ngircd.conf

# Секция описывает основные настройки сервера

# Имя сервера в сети IRC network.

Name = irc.grinder.net

# информация о сервере, которая будет выводиться при использовании команд WHOIS и

Info = My First IRC Server

# Пароль для присоединения к серверу, если не установлен, то пользователи будут соединяться без пароля

# информация о сервере и администраторе

AdminInfo1 = My IRC

AdminInfo2 = Home

AdminEMail = [email protected]

# По умолчанию сервер использует 6667 порт, через запятую можно указать другие значения

;Ports = 6667, 6668, 6669

# По умолчанию сервер ожидает соединение на всех сетевых интерфейсах, что не всегда

# нужно. Использовав этот параметр, можно указать на нужный интерфейс

;Listen = 1.2.3.4

MotdFile = /etc/ngircd.motd

# Если не используется файл motd, здесь можно указать короткое (256 знаков) сообщение

;MotdPhrase = «Hello world!»

# По умолчанию демон будет работать как пользователь nobody

# Наличие больного числа таких nobody в системе, делает этого пользователя не менее

# значимым чем root. Использовав эти параметры, можно указать пользователя и группу

# от имени, которого будет работать демон после запуска

# Он должен быть в системе и все файлы должны принадлежать этому пользователю

ServerUID = ngircd

ServerGID = ngircd

# chroot каталог, в который будет переходить демон после запуска

;ChrootDir = /var/empty

# Файл с номером процесса демона ngircd, если не планируется chroot можно не трогать

;PidFile = /var/run/ngircd/ngircd.pid

# По истечении этого времени клиенту будет послан PING, чтобы выяснить «жив» он или нет

PingTimeout = 120

# если клиент не ответит на PING сообщением PONG, по истечении этого времени он будет отключен

PongTimeout = 20

# промежуток времени, через которые будет производиться попытка соединения с другими серверами

;ConnectRetry = 60

# Разрешение использования команды MODE, устанавливающего режим канала

;OperCanUseMode = no

# маскирование запроса как будто он идет от сервера

;OperServerMode = no

# использование только предустановленных каналов

;PredefChannelsOnly = no

# максимальное количество соединений, которое будет принимать сервер

# (<=0: без ограничений):

;MaxConnections = -1

# тоже только с одного IP-адреса

;MaxConnectionsIP = 5

# максимальное количество каналов, в которых может присутствовать пользователь

# В этой секции определяются операторы IRC, для каждого создается своя секция

Name = Operator1

Password = password

# IRC каналы автоматически создаваемые сервером.

# Каждый канал описывается в отдельной секции

# Название канала

# Тема для канала

Теперь осталось завести пользователя ngircd, и назначить его владельцем /etc/ngircd.motd.

$ sudo adduser ngircd —no-create-home —disabled-login

Adding user `ngircd’…

Adding new group `ngircd’ (1003).

Adding new user `ngircd’ (1003) with group `ngircd’.

Not creating home directory `/home/ngircd’.

Changing the user information for ngircd

$ sudo chown ngircd:ngircd /etc/ngircd.motd

Все готово. Запускаем.

Настраиваем IRC клиента на новый сервер и общаемся. Проверил работу сервера со всеми кодировками CP1251, KOI8R, KOI8U и UTF8. При использовании ngIRCd никаких проблем с выводом сообщений на кириллице не возникало, главное, чтобы клиенты были настроены одинаково.

Просмотреть процесс обмена сообщениями можно в файле /var/log/messages.

$ sudo cat /var/log/messages | grep ngircd

Feb 25 19:14:01 localhost ngircd: Reading configuration from «/etc/ngircd.conf» …

Feb 25 19:14:01 localhost ngircd: No administrative information configured but required by RFC!

Feb 25 19:14:01 localhost ngircd: Running as user ngircd(1003), group ngircd(1003), with PID 10801.

Feb 25 19:14:01 localhost ngircd: Not running chrooted.

Feb 25 19:14:01 localhost ngircd: IO subsystem: epoll (hint size 100, initial maxfd 100, masterfd 4).

Feb 25 19:14:01 localhost ngircd: Now listening on 0.0.0.0:6667 (socket 5).

Feb 25 19:14:50 localhost ngircd: Accepted connection 6 from 192.168.1.58:59018 on socket 5.

Feb 25 19:14:50 localhost ngircd: Possible forgery: 192.168.1.58 resolved to grinder (which is at ip 127.0.0.1!)

Feb 25 19:14:50 localhost ngircd: User «[email protected]» registered (connection 6).

Feb 25 19:15:24 localhost ngircd: Accepted connection 7 from 192.168.1.58:59019 on socket 5.

Feb 25 19:15:24 localhost ngircd: Possible forgery: 192.168.1.58 resolved to grinder (which is at ip 127.0.0.1!)

Feb 25 19:15:30 localhost ngircd: User «[email protected]» registered (connection 7).
Вот мы и научились настраивать свой IRC сервер. Хотя ngIRCd?не?обладает некоторой функциональностью присущих более развитым продуктам, но это только начало. Linux forever!