IRCd (IRCd)

Перейти к навигации Перейти к поиску

IRCd (демон Internet Relay Chat) — сервер, который обслуживает протокол Интернет-чата (IRC), позволяя людям общаться друг с другом по Интернету (что предусматривает обмен текстовыми сообщениями в реальном времени).

Сервер принимает соединения от IRC-клиента с определённого порта. Когда сервер является частью IRC-сети, он также поддерживает соединения с другими серверами/демонами.

Термин ircd изначально относился к одной единственной разновидности программ, но в конечном счёте стал относиться к любой реализации IRC-демона. Однако, оригинальная версия до сих пор распространяется под тем же именем.

Автором термина является Ярко Ойкаринен (WiZ в IRC) с 1989 г.

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

Уже в версии 2.5 каналы получили имена, а в 2.7 полностью заменили номера и появилась возможность банов (режим +b). Версия 2.7 ознаменовалась разногласиями, повлёкшими возникновение EFNet-а. В irc2.8 добавлены «&channels» (каналы, которые есть только на данном сервере, а не во всей сети) и «!channels» (которые теоретически безопасны от захвата), эта версия является базисом, из которого и образовались все текущие реализации.

Особенности

[править | править код]

Официально для IRC был назначен порт 194 («irc»), 529 («irc-serv») и 994 («ircs»). Однако, эти порты находятся в привилегированном диапазоне (0-1024), который на Unix-подобных системах означает, что демон будет должен иметь привилегии администратора (superuser), чтобы открыть порты. В целях безопасности это бывает непозволительно.

Обычно порты для IRCd процесса от 6665 до 6669, а по умолчанию 6667. Они могут быть открыты программами любого пользователя и поэтому широко используются.

Несколько соединений

[править | править код]

Запуск IRC сервера, который обычно обслуживает несколько тысяч пользователей одновременно, требует поддержания большого количества TCP соединений, открытых долгий период, поэтому некоторые ircds многопоточны.

В результате лучшими платформами для ircd являются те, которые предлагают эффективные механизмы обработки большого количества соединений на одном потоке. Linux предлагают такую возможность в виде epollа, в ядре позднее 2.4.x. FreeBSD (с 4.1) предлагает kqueue. У Solaris /dev/poll с версии 7. Различия между этими новыми интерфейсами могут быть критическими. Программисты из IRCU упоминали увеличение практической вместительности сервера с 10 до 20 тысяч пользователей.

Некоторые IRCd поддерживают SSL, для остальных до сих пор возможно использование универсального туннеля Stunnel. Не официально, но наиболее часто используемый порт для SSL IRCd соединений 6697.

IRC демоны поддерживают IPv4, а некоторые также IPv6.

Конфигурация

[править | править код]

IRC jup-ингом обычно называется блокировка названного канала или ника на сервере или сети или сервера сети.

Jup-инг ника или сервера обычно полезен, когда определённые идентификаторы уникальны. Используя идентификатор, можно обзавестить эксклюзивным правом на имя, при этом никто из пользователей не сможет извлечь из него выгоды.

На практике операторы IRC используют юпы, чтобы делать каналы или ники недоступными [1] Юпом канала называется бан канала, то есть к нему нельзя будет присоединиться при соединении с сервером, но другие серверы могут позволить пользователю это сделать. Так можно заблокировать проблематичные каналы.

O-line, сокращение от линия оператора (Operator Line) — это строчка кода в конфигурации демона, которая устанавливает, какие пользователи могут стать операторами и какие привилегии они тогда получат. O-line устанавливает ник, пароль, флаги оператора и маску хоста определённого оператора. У сервера может быть много O-line в зависимости от нужд сервера и сети[2].

Флаги оператора описывают его привилегии. Некоторые операторы могут быть назначены на сетевой роутинг, другие следят за порядком.[3] Доступные флаги различаются в зависимости от демона, которым вы пользуетесь. Чем больше возможностей в демоне, тем больше флагов, а у традиционных серверов их меньше.

Можно также установить ограничение хоста по маске или IP-адреса. В таком случае у оператора должен быть статический IP, но это будет более безопасно.

k-line или kill line (также k:line) — это термин, применённый к определённому пользователю. Занесение пользователя в k-line означает бан на этом сервере, либо на определённое время, либо на совсем. Таким пользователям запрещается соединяться с сервером. Такие строки начинаются с буквы К в файле конфигурации.

Другие параметры

[править | править код]

Gline или AKill — это глобальный сетевой бан.

В некоторых IRCds, таких как UnrealIRCd, Zline похож на g-line, но применяется к IP диапазону клиента и считается крайней мерой. Так как Zline не имеет проверки имён пользователей (identd) или резолва хоста, его можно применить к пользователю до того, как он пошлёт какую-либо информацию при соединении. К тому же Zline более эффективна и использует меньше ресурсов, чем Gline и Kline при бане большого количества пользователей. Так как не все IRCd однинаковы, а такие как Charybdis, используют 'Dline' вместо Z.

На некоторых IRCd, например UnrealIRCd, Qline запрещает ник или их группу по маске. Это наиболее часто используется для запрета сервисных ников (таких как 'X', или NickServ) или запрета использования ников операторов не операторами. Некоторые демоны разрывают соединение, когда пользователь использует ник из Qline, а другие требуют изменения ника, или ничего не делают, пока пользователь не соединится ещё раз. В Charybdis для этого используется 'Xline'.

Примечания

[править | править код]
  1. Использование сети IRC-серверов Архивировано 26 февраля 2007 года.  (англ.)  (Дата обращения: 7 июля 2008)
  2. IRC Operator Version 1.1.2. Дата обращения: 7 июля 2008. Архивировано 6 июля 2008 года.
  3. RFC 1459