IRCd
Этот раздел нуждается в дополнительных цитатах для проверки . ( сентябрь 2009 г. ) |
IRCd , , сокращение от Internet Relay Chat daemon , — это серверное программное обеспечение реализующее IRC протокол , позволяющее людям общаться друг с другом через Интернет (обмен текстовыми сообщениями в реальном времени). [ 1 ] [ 2 ] Он отличается от бота IRC , который подключается к каналу IRC.
Сервер прослушивает соединения от IRC-клиентов. [ 3 ] на наборе TCP-портов . [ 4 ] Когда сервер является частью сети IRC, он также поддерживает одно или несколько установленных соединений с другими серверами/демонами. [ 5 ]
Термин ircd первоначально относился только к одному программному обеспечению. [ 6 ] но со временем оно стало общей ссылкой на любую реализацию демона IRC. [ 7 ] [ 8 ] Однако оригинальная версия по-прежнему распространяется под тем же названием. [ 9 ] и в этой статье обсуждаются оба варианта использования.
История
[ редактировать ]Этот раздел необходимо обновить . ( январь 2015 г. ) |
Оригинальный IRCd был известен как «ircd», и его автором был Яркко Ойкаринен (WiZ на IRC) в 1988 году. [ 10 ] [ 11 ] Он получил помощь от ряда других людей, таких как Маркку Савела (MSA в IRC), который помог с выпуском 2.2+MSA и т. д.
В своих первых версиях IRC не имел многих функций, которые сегодня считаются само собой разумеющимися, таких как именованные каналы и операторы каналов . Каналы были пронумерованы (например, канал 4 и канал 57), а тема канала описывала тип разговора, который происходил на канале. Одним из последствий этого является то, что присоединение к каналу 0 заставляет клиента покинуть все каналы, на которых он в данный момент находится: «КАНАЛ 0» является исходной командой покинуть текущий канал.
Первым крупным изменением в IRC в версии 2.5 было добавление именованных каналов – «+каналы». «+каналы» позже были заменены на «#каналы» в версии 2.7, числовые каналы были полностью удалены и были реализованы запреты каналов (режим +b).
Вокруг версии 2.7 возник небольшой, но заметный спор [ нужны разъяснения ] , что привело к созданию ircu — ответвления ircd для Undernet .
В 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 год. [update]. Этот демон используется IRCnet , и его можно найти по адресу http://www.irc.org/ftp/irc/server/. Оригинальный ircd является свободным программным обеспечением , распространяемым по лицензии GNU General Public License . В рамках этой линии разработки были выпущены 4 документа IRC RFC, выпущенные после RFC 1459, которые документируют исключительно этот серверный протокол.
2.8.21+CS и Hybrid IRCd продолжают использоваться в EFnet с ircd-ratbox (ответвление ircd-hybrid) с 2004 г. [update] являющийся самым популярным.
Версии с боковым потоком
[ редактировать ]Совсем недавно с нуля было написано несколько irc-демонов, таких как ithildin, [ 12 ] InspIRCd, [ 13 ] csircd (также написанный Крисом Беренсом), ConferenceRoom, [ 14 ] Служба чата Microsoft Exchange, WeIRCd, [ 15 ] или IRCPlus/IRCXPro. [ 16 ]
Эти попытки увенчались переменным успехом и вызвали большую дозу скептицизма со стороны существующего сообщества разработчиков IRC. С каждым новым IRCd используется немного другая версия протокола IRC. [ 17 ] [ 18 ] и многие IRC-клиенты и боты вынуждены идти на компромисс в отношении функций или изменять их реализацию в зависимости от сервера, к которому они подключены. [ 19 ] Их часто реализуют с целью повышения удобства использования, безопасности, разделения полномочий или простоты интеграции со службами . Возможно, одним из наиболее распространенных и видимых отличий является включение или исключение статуса оператора полуоперационного канала (что не является требованием RFC).
Функции
[ редактировать ]Порты
[ редактировать ]Официально присвоенные номера портов: 194 («irc»), 529 («irc-serv») и 994 («ircs»). [ 20 ] Однако эти порты находятся в привилегированном диапазоне (0–1024), что в Unix-подобной системе означает, что демону исторически приходилось иметь привилегии суперпользователя , чтобы открыть их. Раньше по различным соображениям безопасности это было нежелательно.
Общие порты для процесса IRCd — от 6665 до 6669, причем историческим значением по умолчанию является 6667. [ 21 ] Эти порты могут быть открыты процессом, не являющимся суперпользователем, и они стали широко использоваться.
Соединения
[ редактировать ]Для работы большого IRC-сервера, на котором одновременно работают более нескольких тысяч пользователей, требуется поддерживать очень большое количество TCP-соединений открытыми в течение длительного времени. Очень немногие ircd являются многопоточными , поскольку почти каждое действие требует доступа (по крайней мере, чтения и, возможно, изменения) к глобальному состоянию.
В результате лучшие платформы для 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 (безопасность транспортного уровня)
[ редактировать ]Некоторые IRCd поддерживают Transport Layer Security или TLS, для тех, кто этого не делает, все еще можно использовать SSL через Stunnel . Неофициальный, но наиболее часто используемый порт для TLS IRCd-соединений — 6697 . Совсем недавно, в целях повышения безопасности и удобства использования, различные авторы клиентов и серверов начали разработку стандарта, известного как стандарт STARTTLS. [ 22 ] что позволяет TLS и обычным текстовым соединениям сосуществовать на одном и том же TCP-порту.
IPv4 и IPv6
[ редактировать ]Демоны IRC поддерживают IPv4 , а некоторые также поддерживают IPv6 . В целом, разница между подключениями IPv6 и IPv4 к IRC чисто академическая, и служба работает практически одинаково через любой протокол.
Кластеризация
[ редактировать ]Крупные сети IRC состоят из нескольких серверов для целей горизонтального масштабирования . Для этих целей существует несколько расширений протокола IRC. [ 23 ]
IRCX
[ редактировать ]IRCX (Internet Relay Chat eXtensions) — это расширение протокола IRC, разработанное Microsoft.
Р10
[ редактировать ]Протокол P10 является расширением протокола Internet Relay Chat для связи между серверами, разработанного Undernet Coder Committee для использования в их серверном программном обеспечении ircu. По назначению он аналогичен протоколам IRCX и EFnet TS5/TS6 и реализует метку времени псевдонима и канала для обработки коллизий псевдонимов и использования канала netsplit соответственно. Другие IRCd, использующие это расширение протокола, включают ircd . [ 23 ] [ 24 ] [ 25 ]
ТС6
[ редактировать ]Протокол TS6 является расширением протокола Internet Relay Chat для связи между серверами, первоначально разработанного разработчиками ircd-ratbox. Он был расширен различным программным обеспечением IRC и имеет функцию, благодаря которой правильные реализации TS6 могут связываться друг с другом посредством согласования функций, даже если функции несопоставимы.
Конфигурация
[ редактировать ]Юбка
[ редактировать ]Подмена сервера, канала или псевдонима относится к практике блокировки указанного канала или псевдонима на сервере или в сети или указанного сервера в сети. Одно из возможных объяснений того, как появился этот термин, заключается в том, что он назван в честь опера по имени Юпитер, который получил контроль над ником NickServ в EFnet . [ 26 ] [ нужна ссылка ] EFnet не предлагает такие услуги, как NickServ; Юпитер получил контроль над псевдонимом, поскольку он (среди других операторов) не считал, что псевдонимы должны быть собственностью. Сегодня EFnet использует псевдонимы jupe, которые используются в качестве сервисов в других сетях.
Никнейм или серверный Юп использует тот факт, что определенные идентификаторы уникальны; используя идентификатор, вы получаете исключительную блокировку, которая не позволяет другим пользователям использовать его.
Официально санкционированные жупы могут также использовать службы или параметры конфигурации сервера для обеспечения соблюдения жупа, например, когда взломан скомпрометированный сервер, чтобы предотвратить его причинение вреда сети.
На практике операторы IRC теперь используют конфигурации jupe, чтобы административно сделать канал или псевдонимы недоступными. [ 27 ] Юп канала относится к запрету канала на конкретном сервере, что означает, что к определенному каналу нельзя присоединиться при подключении к определенному серверу, но другие серверы могут разрешить пользователю присоединиться к каналу. Это способ запрета доступа к проблемным каналам.
О-линия
[ редактировать ]O -линия (часто также пишется как O:line). [ нужна ссылка ] ; на IRCd, которые поддерживают локальных операторов, их O-строки называются o:lines с маленькой буквой O. [ нужна ссылка ] ), сокращенное от «Операторская строка» и полученное из строкового файла конфигурации исходного IRCd, представляет собой строку кода в файле конфигурации демона IRC, которая определяет, какие пользователи могут стать оператором IRC и какие разрешения они получают при этом. Имя происходит от префикса, используемого для строки в исходном IRCd, заглавной буквы O. O-строка определяет имя пользователя, пароль, флаги оператора и ограничения маски хоста для конкретного оператора. Сервер может иметь множество O-линий в зависимости от административных потребностей сервера и сети. [ 28 ]
Флаги оператора используются для описания разрешений, предоставляемых оператору. В то время как некоторые операторы IRC могут отвечать за сетевую маршрутизацию, другие могут отвечать за злоупотребления в сети, что делает их потребности в определенных разрешениях разными. [ 4 ] Доступные флаги операторов сильно различаются в зависимости от того, какой демон IRC используется. Как правило, более многофункциональные демоны IRC обычно имеют больше флагов оператора, а более традиционные демоны IRC — меньше.
O-линию также можно настроить так, чтобы только пользователи определенной маски хоста или IP-адреса могли получить статус оператора IRC, используя эту O-линию. Использование масок хоста и IP-адресов в O-линии требует, чтобы IP-адрес оставался прежним, но обеспечивает дополнительную безопасность.
К-линия
[ редактировать ]Когда пользователь имеет k-line (сокращение от kill line ), пользователю запрещается доступ к определенному серверу либо на определенное время, либо навсегда. Как только пользователь забанен, ему не разрешается вернуться на этот сервер. Это записывается как строка в файле конфигурации демона IRC сервера с префиксом буквы «K», отсюда и «K-line».
Некоторые демоны IRC, включая ircd-hybrid и его потомки, можно настроить для распространения K-линий на некоторые или все другие серверы в сети. В такой конфигурации K-линии фактически представляют собой глобальные запреты, аналогичные G-линиям.
Хотя точная причина отключения варьируется от случая к случаю, обычные причины связаны с некоторыми аспектами клиента или пользователя, против которого оно выдано.
- Поведение пользователя
- K-линии могут быть выданы из-за ненадлежащего поведения со стороны пользователя, такого как «конфликт никнеймов», режим «взлом», многоканальный флуд, преследование других пользователей с помощью функций личных сообщений , « рассылка спама » и т. д., или в случай старых сетей без меток времени, разделенная езда , которую невозможно исправить только с помощью привилегий оператора канала .
- Клиентское программное обеспечение
- Некоторые демоны IRC можно настроить на поиск вирусов или других уязвимостей в подключающихся к ним клиентах и будут реагировать по-разному в зависимости от результата. Устаревшее и небезопасное клиентское программное обеспечение может быть заблокировано, например, для защиты других пользователей сети от уязвимостей. Некоторые сети отключают клиентов, работающих через открытые прокси-серверы или использующих незащищенный веб-сервер.
- Географическое положение
- Сеть IRC, эксплуатирующая несколько серверов в разных регионах, будет пытаться сократить расстояние между клиентом и сервером. Это часто достигается путем отключения (и/или запрета) клиентов из удаленных локалей в пользу локальных.
Существует ряд других сетевых «линий», относящихся к K-линии. Современные демоны IRC также позволят операторам IRC устанавливать эти линии во время нормальной работы, когда доступ к файлу конфигурации сервера обычно не требуется.
G-линия
[ редактировать ]G -линия или глобальная линия уничтожения (также называемая G:line ) — это глобальный сетевой запрет, применяемый к пользователю; этот термин пришел из Undernet , но в DALnet аналогичная концепция, известная как AKill . использовалась [ нужна ссылка ]
G-линии иногда хранятся в файле конфигурации IRCd, хотя некоторые сети, которые обрабатывают K-линии через службы IRC , предпочитают хранить их в файлах конфигурации своих служб. Всякий раз, когда человек с линией G пытается подключиться к сети IRC, либо службы, либо демон IRC автоматически отключают клиента, часто отображая сообщение, объясняющее причину запрета.
G-линии — это вариант K-линий, которые работают практически так же, за исключением того, что K-линии отсоединяют только клиентов на одном сервере сети. G-линии обычно применяются к пользователю, который получил K-линию на одном сервере, но продолжает злоупотреблять сетью, подключаясь через другой сервер. G-линии часто рассматриваются как крайняя мера, которую следует использовать только в случаях неоднократного насилия, когда были предприняты обширные попытки урезонить обидчика. Поэтому, особенно в более крупных сетях, зачастую только очень высокопоставленным глобальным операторам IRC разрешается устанавливать их, в то время как K-линии, которые в большинстве случаев считаются локальным делом, оставляются на усмотрение операторов отдельного сервера в сети.
G-линии также работают немного иначе, чем K-линии. G-линии обычно задаются как *@IPaddress или *@host, причем первый вариант является лучшим. Если используется опция *@host, сервер должен выполнить обратный поиск DNS пользователя, а затем сравнить возвращенный хост с хостами в списке G-линии. Это приводит к задержке, и, если DNS не возвращает правильные результаты, заблокированный пользователь все равно может войти в сеть.
Z-линия
[ редактировать ]Z -линия или линия zap (также обозначаемая 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-линия, главным образом потому, что она не ожидает идентификационного ответа или DNS. искать.
Недостаток использования Z-line вместо K-line или G-line заключается в том, что становится сложнее запретить целых интернет-провайдеров и очень динамические IP-адреса, характерные для некоторых коммутируемых и DSL -соединений. Например, если сетевой администратор хочет заблокировать всех интернет-провайдеров example.com (с гипотетическим IP-адресов диапазоном 68.0.0.0 – 68.255.255.255 и 37.0.0.0 – 38.255.255.255), G-линия может использовать *@*example. .com, тогда как Z-line потребует *@37.*.*.*, *@38.*.*.* и *@68.*.*.* для выполнения того же самого.
Z-линии также могут быть глобальными, в этом случае их называют GZ-линиями . GZ-линии работают так же, как Z-линии, за исключением того, что они распространяются на каждый сервер в сети. Некоторые демоны IRC также могут быть настроены на совместное использование Z-линий с другими серверами.
Q-линия
[ редактировать ]В некоторых IRCd, таких как UnrealIRCd, Q-строка запрещает использование псевдонима или любого псевдонима, соответствующего заданному шаблону. Чаще всего это используется для запрета использования псевдонимов служб (таких как «X» или NickServ ) или запрета использования псевдонимов операторов IRC не-операторами. Некоторые демоны IRC могут отключать пользователей при первоначальном применении Q-линии, в то время как другие принудительно меняют псевдоним или ничего не делают, пока пользователь, на который действует Q-линия, не подключится повторно. Другие IRCd, такие как ircd-hybrid, вместо этого используют команду «RESV» («резерв»), при этом буква статистики остается Q. Команда «RESV» также может запретить использование канала.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Кальт, К. (2000). «RFC 2810 — Ретрансляционный Интернет-чат: Архитектура» . Tools.ietf.org. дои : 10.17487/RFC2810 . Проверено 3 марта 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Часто задаваемые вопросы по запросу IRC-сервера. Архивировано 22 апреля 2009 г. на Wayback Machine.
- ^ Кальт, К. (2000). «RFC 2810 – Ретрансляционный Интернет-чат: Архитектура» . Tools.ietf.org. дои : 10.17487/RFC2810 . Проверено 3 марта 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Jump up to: а б Ойкаринен, Дж.; Рид, Д. (1993). «RFC 1459 — Протокол интернет-релейного чата» . Tools.ietf.org. дои : 10.17487/RFC1459 . Проверено 3 марта 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Ойкаринен, Дж.; Рид, Д. (1993). «RFC 1459 — Протокол интернет-релейного чата» . Tools.ietf.org. дои : 10.17487/RFC1459 . Проверено 3 марта 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Часто задаваемые вопросы по IRCD на irc.org.
- ^ «Поиск в IRC, обзор версии IRCD» . Searchirc.com . Проверено 3 марта 2010 г.
- ^ «Открытый каталог — Компьютеры: Программное обеспечение: Интернет: Серверы: Чат: IRC» . Dmoz.org. 26 февраля 2010 г. Проверено 3 марта 2010 г.
- ^ «IRCD – сервер» . Funet.fi . Проверено 3 марта 2010 г.
- ^ История IRC на IRC.org
- ^ История IRC, Дэниел Стенберг
- ^ Итильдин IRCd
- ^ Вдохновляйте IRCd
- ^ «ВебМастер Инк» . Архивировано из оригинала 3 марта 2016 г. Проверено 20 января 2020 г.
- ^ "WeIRCd" . Архивировано из оригинала 14 мая 2010 г. Проверено 26 марта 2009 г.
- ^ OfficeIRC - Серверное программное обеспечение IRC, веб-чат, внутренние коммуникации и обмен мгновенными сообщениями (IM)
- ^ Запись в блоге, в которой упоминаются нарушения RFC.
- ^ Числовое разнообразие различных демонов IRC.
- ^ Источник клиента (DMDirc), показывающий условия для разных серверов (например, в функции, начинающейся со строки 1523).
- ^ IANA.org
- ^ Ойкаринен, Дж.; Рид, Д. (1993). «RFC 1459 — Протокол интернет-релейного чата» . Tools.ietf.org. дои : 10.17487/RFC1459 . Проверено 3 марта 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «Стандарт STARTTLS» . Архивировано из оригинала 24 июня 2008 г. Проверено 20 июля 2008 г.
- ^ Jump up to: а б Пол Маттон, IRC-хаки , O'Reilly Media , 2004 г., ISBN 0-596-00687-X , стр. 371
- ^ будьте осторожны, документация P10
- ^ документация ircu P10
- ^ «Ответ на тему «K-lined за попытку [ sic ] присоединиться к каналу juped?» на форумах EFnet» . Проверено 13 марта 2013 г.
- ^ «Freenode, Использование сети» . Архивировано из оригинала 26 февраля 2007 г. Проверено 25 февраля 2007 г.
- ^ Оператор IRC, версия 1.1.2
Внешние ссылки
[ редактировать ]- irc.org – ресурсы IRC
- Техническое сравнение механизмов задержки TS и ников
- Руководство DarkFire IRC (зависит от сети)
- Часто задаваемые вопросы по Undernet K-Line и G-Line. Архивировано 1 апреля 2008 г. в Wayback Machine, с причинами, среди прочего.
- Часто задаваемые вопросы по EFnet с объяснением нескольких двухстрочных терминов
- Общие часто задаваемые вопросы по Quakenet G/K-Line
- Синтаксис GLine, KLine, QLine и ELine