IRCd

редактировать

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

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

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

Содержание
  • 1 История
    • 1.1 Версии побочного потока
  • 2 Функции
    • 2.1 Порты
    • 2.2 Соединения
    • 2.3 TLS (безопасность транспортного уровня)
    • 2.4 IPv4 и IPv6
    • 2.5 Кластеризация
      • 2.5.1 IRCX
      • 2.5.2 P10
      • 2.5.3 TS6
  • 3 Конфигурация
    • 3.1 Jupe
    • 3.2 O-line
    • 3.3 K-line
    • 3.4 G-line
    • 3.5 Z-line
    • 3.6 Q-line
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
История

Исходный IRCd был известен как 'ircd', а автором был Яркко Оикаринен (WiZ на IRC) в 1988 году. Ему помогли другие, такие как Маркку Савела (msa на IRC), который помог с 2.2+ выпуск msa и т. д.

В своих первых воплощениях IRC не имел многих функций, которые сегодня считаются само собой разумеющимися, таких как именованные каналы и операторы каналов. Каналы были пронумерованы (например, канал 4 и канал 57), а тема канала описывала тип разговора, который происходил в канале. Одним из сдерживающих факторов является то, что присоединение к каналу 0 заставляет клиента покинуть все каналы, на которых он в настоящее время находится: «CHANNEL 0» - это исходная команда для выхода из текущего канала.

Первым крупным изменением IRC в версии 2.5 было добавление именованных каналов - «+ каналы». Позже "+ каналы" были заменены на "#channels" в версии 2.7, числовые каналы были полностью удалены, и были реализованы запреты каналов (режим + b).

Примерно с версией 2.7 произошел небольшой, но заметный спор, который привел к ircu - вилке Undernet ircd.

irc2.8 добавил «каналы» (те, которые существуют только на текущем сервере, а не во всей сети) и «! Каналы» (те, которые теоретически безопасны от множества способов, которыми пользователь может использовать канал с помощью «верхом на netsplit »), и это базовый выпуск, из которого основаны почти все текущие реализации.

Примерно в 2.8 появилась концепция задержки по нику и каналу, система, разработанная для предотвращения злоупотреблений, таких как захватов и сплит-райд. Это не было согласовано большинством современных IRC (EFnet, DALnet, Undernet и т. Д.), И, таким образом, 2.8 был разделен на несколько различных демонов, используя противоположную теорию, известную как TS, или отметку времени, в которой хранился уникальный отметка времени с каждым каналом или псевдонимом в сети, чтобы решить, какой из них «правильный» оставить.

Сама отметка времени изменялась несколько раз, чтобы исправить различные проблемы в ее конструкции. Последними версиями таких протоколов являются:

  • протокол TS6, который используется EFnet, а также серверы на базе Hybrid и Ratbox, среди прочих
  • протокол P10, который используется серверами на базе Undernet и ircu.

Хотя протоколы клиент-сервер, по крайней мере, функционально схожи, сервер-сервер Протоколы сильно различаются (серверные протоколы TS5, P10 и ND / CD несовместимы), что делает очень трудным «связать» две отдельные реализации IRC-сервера. Некоторые «мостовые» серверы действительно существуют, чтобы разрешить связывание, например, серверов 2.10 с серверами TS5, но они часто сопровождаются ограничениями на то, какие части каждого протокола могут использоваться, и широко не используются.

Важные выпуски, основанные на 2.8, включали:

  • 2.8.21 + CS, разработанный Крисом Беренсом (Comstud )
  • 2.8+ th, набор патчей Танера Халиджиоглу, который позже стал
    • Гибридный IRCd, первоначально разработанный Джоном Ласки (Роддер ) и Дайан Брюс (Дианора ) как гибрид 2.8 /, к которому позже присоединилась большая группа разработчиков.
  • 2.9, 2.10, 2.11,... продолжить разработку исходной кодовой базы,

Исходная кодовая база продолжала разрабатываться в основном для использования в сети IRCnet. Новые межсерверные протоколы были представлены в версии 2.10, выпущенный в 1998 году, и в 2.11, впервые выпущенный в 2004 году и текущий по состоянию на 2007 год. Этот демон используется IRCnet, и его можно найти на http://www.irc.org / ftp / irc / server / Исходный ircd - это бесплатное программное обеспечение, распространяемое по Стандартной общественной лицензии GNU. Эта линия разработки произвела 4 IRC RFC, выпущенных после RFC 1459, в котором задокументирован исключительно этот протокол сервера.

2.8. 21 + CS и Hybrid IRCd продолжают использоваться в EFnet, причем ircd-ratbox (ответвление ircd-hybrid) по состоянию на 2004 год является самым популярным.

Версии Sidestream

Схема производных и взаимосвязей для распространенных реализаций IRCd.

Совсем недавно несколько демонов irc были написаны с нуля, такие как ithildin, InspIRCd, csircd (также написано Крисом Беренсом), ConferenceRoom, служба чата Microsoft Exchange, WeIRCd или IRCPlus / IRCXPro.

Эти попытки увенчались переменным успехом и большим скептицизмом со стороны существующего сообщества разработчиков IRC. С каждым новым IRCd используется немного другая версия протокола IRC, и многие клиенты IRC и боты вынуждены идти на компромисс в отношении функций или варьировать свою реализацию в зависимости от сервера, на котором они связаны. Они часто реализуются с целью повышения удобства использования, безопасности, разделения полномочий или упрощения интеграции с сервисами. Возможно, одним из наиболее распространенных и видимых отличий является включение или исключение полуоперативного канального оператора status (что не является требованием RFC).

Характеристики

Порты

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

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

Соединения

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

В результате лучшие платформы для ircds - это те, которые предлагают эффективные механизмы для обработки огромного количества соединений в одном потоке. Linux предлагает эту возможность в форме epoll в версиях ядра новее, чем 2.4.x. FreeBSD (начиная с 4.1) и OpenBSD (начиная с 2.9) предлагает kqueue. Solaris имеет / dev / poll с версии 7, а начиная с версии 10 имеет IOCP (порты завершения ввода-вывода). Windows поддерживает IOCP начиная с Windows NT 3.5. Эти новые интерфейсы могут существенно отличаться. Кодировщики IRCU отметили увеличение практической емкости сервера с 10 000 до 20 000 пользователей.

TLS (Transport Layer Security)

Некоторые IRCd поддерживают Transport Layer Security, или TLS, для тех, кто этого не делает, по-прежнему можно использовать SSL через Стуннель. Неофициальный, но наиболее часто используемый порт для соединений TLS IRCd - 6697. Совсем недавно, в целях повышения безопасности и удобства использования, различные авторы клиентов и серверов начали разработку стандарта, известного как стандарт STARTTLS, который позволяет соединениям TLS и обычного текста сосуществовать на одном TCP-порту.

IPv4 и IPv6

Демоны IRC поддерживают IPv4, а некоторые также поддерживают IPv6. В целом, разница между подключениями IPv6 и IPv4 к IRC носит чисто академический характер, и служба работает во многом одинаково по обоим протоколам.

Кластеризация

Большие сети IRC состоят из нескольких серверов для горизонтального масштабирования. Для этих целей существует несколько расширений протокола IRC.

IRCX

IRCX (Internet Relay Chat eXtensions) - это расширение протокола IRC, разработанное Microsoft.

P10

Протокол P10 является расширением протокола Internet Relay Chat для связи между серверами, разработанного Комитетом кодировщиков Undernet для использования в их серверном программном обеспечении ircu. Он аналогичен по назначению протоколам IRCX и EFnet TS5 / TS6 и реализует временные метки ников и каналов для обработки коллизий ников и управления каналом netsplit соответственно. Другие IRCd, которые используют это расширение протокола, включают beware ircd.

TS6

Протокол TS6 является расширением протокола Internet Relay Chat для сервера серверные коммуникации изначально разрабатывались разработчиками ircd-ratbox. Он был расширен различным программным обеспечением IRC и имеет особенность, заключающуюся в том, что правильные реализации TS6 могут связываться друг с другом с помощью согласования функций, даже если функции различаются.

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

Юп

Юпинг сервер, канал или псевдоним относится к практике блокировки указанного канала или псевдонима на сервере или сеть или указанный сервер в сети. Одно из возможных объяснений того, как появился этот термин, состоит в том, что он назван в честь оператора по имени Юпитер, который получил контроль над ником NickServ в EFnet. EFnet не предлагает такие услуги, как NickServ; Юпитер получил контроль над псевдонимом, поскольку он (среди других операторов) не считал, что псевдонимы должны принадлежать. Сегодня EFnet использует псевдонимы, которые используются в качестве сервисов в других сетях.

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

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

На практике операторы IRC теперь используют настройки jupe, чтобы административно сделать канал или никнеймы недоступными. Jupe канала относится к определенному серверу запрету канала, что означает, что конкретный канал не может быть присоединен при подключении к определенному серверу, но другие серверы могут разрешить пользователю присоединиться к каналу. Это способ запретить доступ к проблемным каналам.

O-line

O-line (часто также пишется как O: line ; на IRCd, поддерживающих локальные операторы, O- строки из них называются o: строки с буквой O в нижнем регистре), сокращенные от Operator Line и полученные из строкового файла конфигурации исходного IRCd, представляют собой строку кода в конфигурации демона IRC файл, определяющий, какие пользователи могут стать оператором IRC и какие разрешения они получают при этом. Имя происходит от префикса, используемого для строки в исходном IRCd, заглавной буквы O. Строка O определяет имя пользователя, пароль, флаги оператора и ограничения по маске хоста для конкретного оператора. Сервер может иметь много O-линий в зависимости от административных потребностей сервера и сети.

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

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

K-line

Когда пользователь находится в k-line (сокращенно от kill line ), пользователю запрещается доступ к определенному серверу либо на определенное количество раз или навсегда. После того, как пользователь заблокирован, он не сможет вернуться на этот сервер. Это записывается в виде строки в файле конфигурации демона IRC сервера с префиксом «K», следовательно, «K-line».

Некоторые демоны IRC, включая ircd-hybrid и его потомки, могут быть настроены для распространения K-линий на некоторые или все другие серверы в сети. В такой конфигурации K-линии фактически являются глобальными запретами, подобными G-линиям.

Хотя точная причина отключения варьируется от случая к случаю, обычные причины связаны с некоторыми аспектами клиента или пользователя, против которого оно направлено.

Поведение пользователя
K-линии могут быть заданы из-за несоответствующего поведения со стороны пользователя, такого как «конфликт псевдонимов», режим «взлом», многоканальное переполнение каналов, преследование других пользователей через функции обмена личными сообщениями, «рассылка спама » и т. д. или, в случае более старых сетей без меток времени, разделение на, которое нельзя исправить с помощью канала только привилегии оператора.
Клиентское программное обеспечение
Некоторые демоны IRC могут быть настроены на сканирование на вирусы или другие уязвимости в клиентах, подключающихся к ним, и будут реагировать по-разному в зависимости от результата. Устаревшее и небезопасное клиентское программное обеспечение может быть заблокировано, например, для защиты других пользователей сети от уязвимостей. Некоторые сети, например freenode, отключит клиентов, работающих на открытых прокси-серверах или через них, или работающих с небезопасным веб-сервером.
Географическое положение
Сеть IRC, обслуживающая несколько серверов в разных locales попытаются уменьшить расстояние между клиентом и сервером. Это часто достигается отключением (и / или запретом) клиентов из удаленных регионов в пользу локальных.

Существует ряд других сетевых «линий», относящихся к K-линии. Современные демоны IRC также позволяют операторам IRC устанавливать эти строки во время нормальной работы, когда доступ к файлу конфигурации сервера обычно не требуется.

G-line

A G-line или global kill line (также записывается G: line ) - это глобальный сетевой запрет, применяемый к пользователю ; термин происходит от Undernet, но в DALnet использовалась аналогичная концепция, известная как AKill.

G-линии иногда сохраняются в файл конфигурации IRCd, хотя некоторые сети, которые обрабатывают K-линии через службы IRC, предпочитают хранить их в файлах конфигурации своих служб. Каждый раз, когда пользователь G-line пытается подключиться к сети IRC, службы или демон IRC автоматически отключают клиента, часто отображая сообщение, объясняющее причину запрета.

G-линии - это вариант K-линий, которые работают примерно так же, за исключением того, что K-линии отключают клиентов только на одном сервере сети. G-линии обычно применяются к пользователю, который получил K-линию на одном сервере, но продолжает злоупотреблять сетью, подключаясь через другой сервер. G-линии часто рассматриваются как крайняя мера, которую следует использовать только в случаях неоднократных злоупотреблений, когда предпринимались многочисленные попытки урезонить нарушителя. Поэтому, особенно в более крупных сетях, часто только очень высокопоставленным глобальным операторам IRC разрешается устанавливать их, в то время как K-линии, которые в основном рассматриваются как локальное дело, предоставляются операторам отдельных сервер в сети.

G-линии также работают немного иначе, чем K-линии. G-линии обычно задаются как * @ IPaddress или * @ host, причем первый вариант лучше. Если используется опция * @ host, сервер должен провести обратный поиск в DNS для пользователя, а затем сравнить возвращенный хост с хостами в списке G-line. Это приводит к задержке, и, если DNS не возвращает правильные результаты, заблокированный пользователь все еще может подключиться к сети.

Z-line

A Z-line или zap line (также записывается Z: line ) аналогично K-строке, но применяется в диапазон IP-адресов клиента и считается используемым в крайних случаях. Поскольку Z-линия не обязана проверять имена пользователей (identd) или разрешенные имена хостов, ее можно применить к пользователю, прежде чем он вообще отправит какие-либо данные при соединении. Следовательно, Z-линия более эффективна и использует меньше ресурсов, чем K-линия или G-линия, при запрете большого количества пользователей.

В некоторых демонах IRC, таких как ircd-hybrid, это иногда называется D-строкой (запретить) или X-строкой .

Z-строками. в файле конфигурации IRCd, хотя некоторые сети, которые обрабатывают строки через службы IRC, предпочитают хранить их в файлах конфигурации своих служб. Всякий раз, когда Z-образный человек пытается подключиться к сети IRC, службы или демон IRC автоматически отключают клиента, часто отображая сообщение, объясняющее причину запрета.

Z-линии - это вариант K-линий, которые работают примерно так же. Большинство Z-линий «присуждается» людям, которые злоупотребляют сетью в целом (в небольших сетях они чаще выдаются для отдельных инцидентов).

Z-линии также работают немного иначе, чем K-линии. Z-линии обычно задаются как * @ IP или * @ host, причем первый вариант лучше. Z-строки не ждут ответа идентификатора от подключающегося пользователя, а сразу закрывают сокет, как только IP-адрес пользователя сравнивается со списком Z-строки и найдено совпадение. Если используется опция * @ host, сервер должен провести обратный поиск в DNS для пользователя, а затем сравнить возвращенный хост с хостами в списке Z-line. Это может привести к задержкам или, если DNS не вернется правильно, заблокированные пользователи все еще могут попасть в сеть. На самом деле, опция * @ host полностью противоречит намерениям использования Z-линии, и поэтому некоторые программы IRCd не разрешают ничего, кроме * @ IP, с подстановочными знаками (?, *) Или Длина префикса CIDR (например, / 8) разрешена в разделе IP для блокировки целых подсетей. Еще одно отличие от K-линий (которые влияют только на IRC-клиентов) заключается в том, что если IP-адрес заблокирован, ничто, даже другие серверы, не могут подключиться с этого IP-адреса (или диапазона IP-адресов, в зависимости от маски).

Одно из преимуществ использования Z-линий над K-линиями и G-линиями: с точки зрения сервера или сетевого администратора, Z-линия использует меньшую полосу пропускания, чем K-линия, главным образом потому, что она не ждет для ответа identify или поиска DNS.

Недостатком использования Z-линии вместо K-линии или G-линии является то, что становится сложнее заблокировать целых ISP и очень динамические IP-адреса, что характерно для некоторых dialup и DSL соединения. Например, если сетевой администратор хочет заблокировать весь интернет-провайдер example.com (с гипотетическими диапазонами IP-адресов от 68.0.0.0 до 68.255.255.255 и 37.0.0.0 - 38.255.255.255), G-line может использовать *@*example.com, тогда как Z-line потребует *@37.*.*.*, *@38.*.*.* и *@68.*.*.*, чтобы выполнить то же самое.

Z-линии также могут быть глобальными, в этом случае они называются GZ-линиями . GZ-линии работают так же, как Z-линии, за исключением того, что они распространяются на каждый сервер в сети. Некоторые демоны IRC также могут быть настроены для совместного использования Z-линий с другими серверами.

Q-line

На некоторых IRCd, таких как UnrealIRCd, Q-line запрещает псевдоним или любой псевдоним, соответствующий заданному шаблону. Чаще всего это используется, чтобы запретить использование псевдонимов служб (таких как 'X' или NickServ ) или запретить использование псевдонимов оператора IRC неоператорами. Некоторые демоны IRC могут отключать пользователей при первоначальном применении Q-линии, в то время как другие принудительно изменяют псевдоним или ничего не делают, пока пользователь, покрытый Q-линией, не подключится повторно. Другие IRC-файлы, такие как ircd-hybrid, вместо этого используют команду 'RESV' ("резерв") с буквой статистики, оставшейся как Q. Команда 'RESV' также может запретить использование канала.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-23 07:44:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте