Забележка: Това ръководство предлага очарователен поглед в "Смътното състояние" на света на IRC операторите или така наречените опери. Това е свързано много малко с операторите на канали или с поддръжката на IRC канали. Ръководството е написано от оператор привидно за други оператори, но главно се чете от нормалните потребители. За други помощни документации относно IRC оператори или пускане на сървери, вижте IRCd сървер директорията. -Jolo
Забележка: Тук ще има и персонални гледни точки, но ще гледам да са на минимум.
I. Взаимоотношение към потребителите и другите оператори II. Използване на KILL и KLINE III. Ботове и лов на Ботове IV. Клонинги, Flooders, and Spoofing V. Защо операторите (обикновенно) не се намесват в афери свързани с канали VI. Отношение към "Как да стана IRC оператор?" VII. IRCD и файловете свързани с него VIII. Команди свързани със сървера (TRACE, STATS, LINKS, и HTM) IX. Определяне на мястото на сървер и съединяване X. Други команди свързани със сървера (REHASH, RESTART, и DIE) XI. Комуникация на операторите (WALLOPS и OPERWALL)
От това, което съм видял, повечето оператори гледат отгоре на потребителите, подиграват се с тях и ги игнорират. Опитайте се да преодолеете своето аз свързано с операторството. Отговаряйте на личните съобщения, освен ако не е от някой който просто Ви праща някое съобщение, за да Ви каже, че Ви мрази. Операторите ще получат доста по-малко глупости от потребителите, ако те са малко по-малко егоистични. Нещо, което предлагам е всеки да прекарва по един или два часа на няколко седмици помагайки на новаците в #irchelp или каквато и да еквивалентност намерите.
Едно нещо, от което трябва да се пазите е това, че някои потребители ще се опитат да Ви накарат да им помогнете в превземането на канали. Много често, потребител ще съобщи за бот, без причина. Обикновенно, защото бота е превзел канал или защото е "съборил" друг потребител. Обикновенно ще получавате тези искания от потребители, които ще искат да премахнете някой потребител от сървера, за да могат да завземат някой канал. Поради тази причина, поискайте канала в допалнение на псевдонима, за да можете да видите всъщност какво става, преди да премахнете или да K-line потребителя.
Обикновенно, ще получите молба от други оператори за премахване или K-line на потребител. Операторите трябва да си вярват, освен ако не сте имали проблеми с някого преди това. Винаги трябва да имате причина преди да премахнете потребителя или да сложите K-line. Ако е поискан от някого друг, сложете "requested by <oper>" или нещо подобно в причината за K-line.
Ако сте тормозен от потребител на мрежата, отнесете се към него, както нормаленият потребител щеше да го направи не като оператор. Изкушението от премахването на потребител за flood върху теб е нещо, което всеки от нас би направил поради случая, но не винаги е правилния отклик. Ако очакваме от нормалните потребители просто да /ignore този човек, значи трябва и ние да направим същото. Макар че трябва да призная, че потребителя трябва да е доста глупав, за да flood оператор...
При нужда операторите винаги имат разногласие. Има голямо разслоение между ранковете на операторите, обикновенно при hub админите и операторите имат повече власт от leaf админите и операторите. Обикновенно не е добра идея да се опитваш да спечелиш битка с човека, който осигурява връзката ти към IRC мрежата. Изобщо да водите битки с когото и да е, не е добра идея. Ако наистина имате сериозен проблем с някой оператор, и не можете да го решите направо с него/нея, поговорете с вашият админ за това. Вашият админ може да се обърне към админа на другия оператор и ако това не доведе до никъде, до амдина, който им е hub. Това е лесен начин да си спечелите врагове, затова бъдете сигурни, че е важно за вас преди да го направите.
KILL nick :reasonВ моят K-lines, винаги използвам "reason [aaronb MM/DD/YY]", за да може потребителя да разбере кога и от кого е сложен K-line, и също така съм отговорен за своя K-line.
KLINE nick :reason
KLINE username@hostmask :reason
Обикновенно, това което правиш на своя сървер не е голяма работа. Различните сървери имат различна политика за използването на KILL и KLINE, но ако правите глобален kill (премахвате потребител от друг сървер), трябва да знаете какви са принципите на мрежата.
Потребителите се премахват поради две причини. Понякога ще се опитате да успокоите потребителя и да го накарате да разбере, че трябва да оправят каквото са направили. В повечето случаи, те ще се опитат да спорят за това с вас за това. Опитайте се да им обясните, но ако се не искат да спазет принципите на мрежата просто ги K-line. След като получат K-lined от няколко сървера, те ще осъзнаят грешката си.
Обикновенно трябва да отбягвате да слагате K-linе на потребителите, освен ако не е наистина важно. K-line означава, че не искате потребителя повече не своя сървер. Зависейки от сървера, K-lines могат да бъдат махнати след седмица или две, месец, или може би никога. Ще бъде мъдро да се сложи "постоянна" секциа за K-lines, и така да има по-голяма предпазливост. За премахването на K-lines, обикновенно е добра идея да говорите с човека, който го е поставил, преди да го направите. Ако имате достъп до ircd.conf (да можете да махате K-lines), можете да сте много по-малко предпазлив, когато ги слагате.
Най-добрият принцип, от който трябва да бъдете ръководен, когато правите глобални kills, е: "Наистина необходимо ли е?" Обикновенно можете да намерите оператор на сървера, на който е потребителя, и той да свърши работата вместо вас. Ако оператора не иска да го направи, тогава той не иска да премахвате потребителя от сървера му.
Често операторите търсят причина да премахват потребителите. Ако и Вие сте в това настроение, сега е времето да махнете своето +О и да си намерите друга работа за малко. Kill изглежда лошо както за Вас така и за вашият сървер.
Добра идея е да пазите logs на всичко, което правите правите. До сега не сам виждал клиент, който да няма възможността да log. Ако потребител или оператор Ви заплаши поради ваш kill (обикновенно, те се обръщат към вашият админ, защото нямат смелост да се обърнат към Вас), Вие можете да им дадете тези logs. В повечето случаи ще Ви обвиняват, защото сте злоупотребявали с вашата O-line, и ще Ви заплашват, че ще Ви я отнемат. Logs са най-добрата Ви защита.
Има няколко най-чести причини, според които ботовете се смятат за проблем. Първо, те вземат ресурси от IRC, които могат да се използват за нормални връзки. Главната причина е защото ботовете се използват за flood и тормоз на потребителите. Би трябвало да проверите политиката, която вашият сървер води, спрямо ботовете, но злоупотребяващ бот никога не трябва да бъде толериран.
Често намирането на ботове не е трудно. Повечето отговарят на ctcp отклици, не с това което Вие очаквате, или имат лъжливо idle times (в техния ctcp finger отклик). Разбира се има няколко много добри утройства за сканиране на портове, които ще ви помогнат да проверите host за ботове (eggdrop ботовете обикновенно "слушат" за telnet връзки).
Разбира се никога няма да можете да намерите всички ботове. Те обикновенно разбират бързо за всеки наш метод на лов на ботове. По-добре е да чакате, някой да съобщи за това и след това да наблюдавате неговото държание.
Ето описание на няколко вида ботове и трикове за намирането им:
Обикновенно, клонингите по своемо не са толкова лоши(само вземат връзки). Често, когато видите клонинги, те или са за да flood потребител или за да превземат.
Най-добрия начин да се отнасяте към клонингите е да ги премахнете, и да видите дали ще се върнат. Ако го направите няколко пъти и потребителя продължава да ги пуска, време е за K-line. Когато потребителя наистина е считан за голям проблем, K-line трябва да е временен(няколко седмици е достатъчно).
Ще забележете два вида на flood в IRC. Първият е CTCP flood, който се опитва да flood потребителя с CTCP оклици, активираща защитата на сърверския flood, и изключва потребителя със следното съобщение "Excess Flood". Много бот мрежи ("fludnets") използват този тип на flood. Скрипт с Flood протекция може да предотврати този тип на flood и да бъде много ефективен, но истинския проблем е удара на самата мрежа. Ако 20 бота flood потребителя за 10 секунди, изпращат по пет по 100 byte CTCP искания на секунда, това е 20 * 100 * 5 = 10k/sec, или 100k от информация за време от 10 секунди. За мрежа поддържаща 30000 потребителя този вид flood не е приемлив.
Вторият вид flood, който не е свързан с IRC (но е свързан с конфликти в IRC), е ICMP flood. Той обикновенно се прави от сравнително бързи връзки(ISDN или по-бързи) и се състои от flood върху потребителя или върху сървера чрез ICMP пакети (каквито са ping). Това се счита за "Denial Of Service" атака, и е противозаконна.
До този момент има много flood скриптове, които използват различни псевдоними за CTCP flood. Хитринка е да сложите някои никове в своя notify лист. Някои flood скриптове влизат в някои специфични канали (например #srfloodclones).
DNS spoof е относително нов хит през тези дни в IRC. Ще намерите spoofs по няколко начина - когато гледате всички свързвания (usermode +c) и видите специфична hostmask или някой потребител Ви уведоми за това. Първото нещо, което можете да направите, е да вземете IP на потребителя (/stats L nick), и да видите дали DNS lookup съвпада с IP адреса. Ако не съвпадне, знайте, че това е spoof. С тази информация можете да KILL потребителя, и когато се върже отново, вижте кой е истинския host и сложете K-line (което няма да ги спре да spoof отново, но ще ги спре да се свържат *без* spoof). Някои сървери имат възможността за D-lines, който ви усигорява да забранявате връзките по ip mask. D-line ще спре потребителя да се свързва изобщо, независимо дали са с DNS spoof или не са. Ако сървера позволява командата DLINE, можете да направите /dline ipmask :причина.
В практиката си, ще откриете че операторите защитават своите канали, и обръщат гръб на другите. Малко е тъжно, но когато сте тормозен достатъчно дълго време от потребители казвайки ви "защо се намесвате? Мислех, че операторите не трябва да се намесват в афери свързани с канали" ще започнете да разбирате цинизма.
Например използвайте следния отговор: "За да станете IRC Оператор трябва да имате не само много големи IRC познания и познания свързани с IRC мрежата, но и също така много големи връзки с вашия главния админ и с другите оператори. Операторите са достъпни само в случаи, в които има тяхната намеса е изключително наложителна и не са длъжни да дават помощ, когато им се поиска."
Трябва да запомните, че хората, които ще искат да станат оператори ще стават все повече и повече. Ако наистина искате да помогнете на мрежата, най-добрия начин да го направите е да стоите в каналите, които дават помощ и да отговаряте на въпросите на потребителите -> #irchelp и #help.
IRCD е процес който се пуска на съръвъри с възможност оставяването му в background. Големите IRC мрежи допускат само сървери базирани на unix операционни системи, защото те са единствените който са доказали качеството си в големите мрежи (а и защото повечето от сегашните оператори са unix фанатици... вкючително и аз самия :)).EFnet използват модификация на версията 2.8.2, IRCnet ползват модификация на версията 2.9.х. Структората на инсталираните файлове варира според вида на сърверът (неговата версия) и често се различава при различните версии, но при всички вие трабва да имате поне следните 2 файла:
ircd IRC server deamon (главната програма)
ircd.conf файлът с конфигурациите на сърверът
Конфигурационния файл има разнообразен вид конфигурации в себе си, които са в начален формат. Този файл се чете и процедира обратно,следователно когато направите STATS командите (обяснени по долу), ще видите информацията във обратен вид от въведените в ircd.conf. Този файл има следните конфигурации:
А: Компания/Институция Име: Описание на сърверът: Име на админа <email@address.com>
Това конфигурира административните функции на сърверът, които ще се появят когато някои напише /admin на този сървер. Тези полета трябва да са точни за администратора на сърверът, но аз съм сложил тук стандартни.
B: hostmask: : псевдоним::
Тази линия включва разрешен бот. Сърверът има вграден бот, който проверява за специфични връзки, и ще премахне връзка ако детектне такива. Ако ботът има тази линия в конфигурационния файл, сърверът няма да отхвърля връзки.
С:
сървер hostname:
парола: сървер име: порт:клас на връзката
N:
сървер hostname:
парола: сървер име: hostmask:
клас на връзката
C/N-линиите са връзки към други сървeри. С-линията дефинира към какъв сървер вашият сървер може да се свърже, а N-линията дефинира какви сървери са позволени да правят връзка към вашият сървер. Никога не сам виждал едната без другата,и според обикновения неконфигуриран ircd.conf те трябва да се използват винаги в двойка. Сърверът, хостнаме-а, паролата, и името на сърверът са сами по себе си доста обстоятелни. Портът се използва за да се покаже на какъв порт сърверът ще се опитва да се свързва автоматично, ако мястото за порта е оставено празно вашият сървер няма да се свързва автоматично към дефинирания сървер. Никога не съм виждал да се използва хостмаск (даже и неразбирам какво и е значението тук). Класът на връзката е цифрена част, и дефинира Y-линиите.
D: адреснамаска: причина
Тази линия се използва за да забранява връзката на определени адреси.
Ако
системният администратор има контрол на няколко домайна, тя/той може да се опита да избегне бан-а като смени DNS-а на
хост-а (идеален пример за това е smartec.com който има няколко домаина и няколко машини всички клас С)
Е:
хостмаск: причина
Е-линията предпазва някои потребители от банове на сърверът
(К-линии). Общо взето
операторите ги използват за да се предпазят те самите от случайни К-линии,
но в някой случаи сървер пуснат от ISP
да ги използва
за да предпази своите клиенти.
Н: отдалечен сървер: хъб сървер
Това определя хъб сърверът, който е сървер, който има и други връзки от други
сървери. "Отдалечен сървер" почти винаги е "*" или може да има хостмаск за да ограничи връзките от други
сървери.
I: адресна маска: парола: адресна маска: клас на връзката
I-линиите определят дали даден клиент има способност да се свърже с вашият сървер. Допълнително, те определят какъв е класът на връзка (определен от Y-линиите), в която е клиента.
К: хостмаск: време: причина
Повечето хора вече знаят какво е К-линия, но за да сме точни в обобшението си, тя е просто бан от сървера. По принцип К-линиите се добавят с команда от сърверът и причината се записва като бележка в конфиг файла.
L:ограничен сървер:свързан сървер:ширина
Това се използва за да се дефинира дълбочината на прикачените сървери към хъб-а.
М: хостнаме: *: описание на сърверът: порт
Тази линия поставя основна информация за вашият сървер. Полетата сами по себе си дават достатачна информация. Това е задължително поле.
N: <виж С:>
О: идентификация@хостнаме:
парола: псевдоним: клас на връзката
о: идентификация@хостнаме:
парола: псевдоним: клас на връзката
Тези линии определят операторите на дадения сървер. В този случай малката линия о: определя местните оператори, които могат да извършват KILLs и K-линии само на този сървер, също така SQUIT и CONNECT тяхният сървер от/към другите. По-голямата линия О: е на глобалните оператори, които могат да правят KILLs (разкачат потребители от други сървери) и SQUIT и CONNECT всеки сървер от мрежата. Класът на връзката е показан при Y-линиите.
Р: хостмаск: : : : порт
Това са портовете, на които могат да се свързват потребители към вашият сървер (в добавка към портът вписан в М-линията). Хостмаската е незадължително поле, чрез което можете да определите какви клиенти могат да се свързват на този порт.
Q: причина: сървер
Q-линията определя сървер, който няма да бъде допуснат да се свърже към мрежата като цяло (всички сървери трябва да имат една и съща Q-линия. Никога не съм виждал това да се използва :)).
R: хостмаск: път до програмата: потребителско име
Позволява да процедираш достъп през външна програма (доставена от админа на сърверът). Когато клиентът се свърже, сърверът вика тази външна програма със информацията на потребителят. Тогава програмата отговаря дали ще му даде даден достъп до сърверът или не. Никога не съм виждал това да се използва, и вероятно е неприложимо за сървер с голяма база клиенти.
Y: клас на идентификация: честота на ping: честота на връзката: максимум връзки: максимум sendQ
Y-линията въввежда класът на връзка. Класът на идентификация е номер, който идентифицира класът, и се използва в I-линията и в C/N-линиите, за да идентифицира използваните Y-линиите. Честота на ping-а се определя във времето (в секунди) между исканията за ping (за да се уверите че връзката все още е "жива"). Честотата на връзката е времето между автоматичните опити за свръзка към даден сървер (би трябвало да е 0 за класовете на връзка на клиентите). Максимум връзките сами по себе си говорят за значението си. "SendQ" се равнява на данните (в байтове) преди сърверът да го/я затвори (с съобщение от сорта "SendQ Exceeded").
Препоръчвам ви да прочетете example.conf в дистрибуцията на IRCD. Там ще намерите примери на повечето то тези дадени погоре, също така с подробно описание най-вероятно по добро от моето :)).
Има няколко команди които можете да използвате за да се сдобиете с информация за състоянието на сървера, за да ви помогнат в контрола:
TRACE [server|nick]
Командата TRACE се използва за проследяване на пътя от сегашния сървер до специфичен сървер или клиент. Когато крайната точка е сървер, TRACE ще върне информация за сегашния сървер и връзките на операторите, постъпващите връзки (с отрицателен клас числа), и броя на потребителите във всеки клас. Връзките на операторите съдържат класа на връзката, псевдонима, и потребител@адрес. За връзките на други сървери, той показва класът на връзка, броят на сърверите които стоят зад нея (последвани от "S"), броят на клиентите зад и на нея (последвани от "C"), името на сървера, и кое е отворено за връзка.
Когато краината точка е потребител, TRACE показва класът връзка, псевдоним, потребител@адрес на потребителя.
STATS [letter]
STATS командите връщат информация от сървера. Те може да варират от версията на сървера, и понякога чувствително при различните версии. Тук са някои от от познатите ми и най често използвани:
? Статистика за
сървера
b B-линии
c C/N-линии
d D-линии
е E-линии
h H/L-линии
i I-линии
k K-линии
l
Сведения и статистики за трансфера по връзки Цифрената част на израза на
нивата следва:
sendQ
sendK (общият брой изпратени килобайти)
receiveK (общият брой получени килобайти)
времето в секунди от както е осъществена връзката
L
Същото като STATS l,
но показва IP вместо хост
m
статистика за командите
о Показва О/о-линии
р Показва
идентифициралите се оператори в момента
t Обща статистика за
сърверът
u Показва големината на периода, през който не е спиран
сърверът
v Дава информация за свързването на
сърверът към другите сървери
y Y-линии
z По обширна информация за
сървера
Ако не сте в момента оператор, не ви препоръчвам да опитвате да използвате всичките команди. Многократното използване на командата STATS обикновено се вижда от операторите като заплаха (някои хора използват тази команда за flood на сървера като претоварват sendQ-то което води до сплит) и може да завърши с нежелани последствия.
LINKS [server mask]
Тази команда показва структората на дадена IRC мрежа, и е доста полезна ако нямате скрипт или клиент, който да ви даде тази информация. Всяка линия съдържа името на сървера, номерът на прескачане от вашият сървер към друг, и кратко описание на сървера.
HTM
HTM командата се използва за да се види и постави висок трансферен праг. Всъщност той показва постъпващата стойност на данните, което е полезно когато се следи как се спряватя когато го свързвате наново към мрежата.
Ще огранича тази секция като кажа това, че не съм понастоящем хъб оператор, и нямам голяма практика в свързването и разкачването на връзките на далечни сървери. Както и да е, проучих малко този въпрос. За моето описание, нека допуснем, че мрежата изглежда нещо такова:
A---------B--------C---------D
|
|
E---------F
G------H
|
|
|
I
J--------K
L------M
Обикновенно когато възникне проблем, вие първо го забелязвате по намаляването на времето на отговор на други потребители. Тогава опитавате да ping-нете няколко потребителя и забелязвате, че времето, за което се враща ping-а е голямо. Обикновенно с ping на канал или LINKS, можете да установите къде е проблема. Предполагайки, че сте на сървер А, вашите съобщения от ping към сървер С са добре, но всичко от сървер D и нататак е забавено. Първото нещо, което трябва да направите е STATS l на сървер С (/stats l irc.c.com) за да видите изходния sendQ към сървер D. Когато погледнеш само към входа на сървер D, той може да изглежда така:
211 irc.d.com[123.231.132.213] 1621588 9780 559 469469 24111 5862
SendQ е първото число след IP адреса, или 1621588 в този случай. Ако направим STATS y на сървер С (/stats y irc.c.com) ние можем да видим максималното sendQ позволено от сървера. Погледнете класа връзка със нешо освен 0 в честотата на свързване (600 в този случай).
218 Y:0:120:600:10:4000000
Така че ако това число достигне 400000, сървер С ще се разкачи от сървер D, и вие ще видите всички от другата страна да излизат с съобщение "*** Quit nick (irc.c.com irc.d.com)". Сега ако сте на сървер L, би трябвало да направите STATS l на сървер D (/stats l irc.d.com) и вижте за вписан сървер С. В този случай вие може да видите следното:
211 irc.c.com[123.213.123.231] 142 8841 512 485915 21059 1234
Действащото sendQ от irc.d.com към irc.c.com е само 124 байта, изглежда има само забавяне в едната посока (сървер irc.d.com има проблеми с приемането на данни от irc.c.com). Да кажем че продължавате с надзора на sendQ от irc.d.com кам irc.c.com (с /stats l irc.d.com от вашата позиция на сървер А) и той се повишава от 1621588 байта на 3140419 байта. Можете да изчакате да се сплитнат в противен случей собственоръчно да рестартирате сърверът. Преди да предприемете каквото и да е било, трябва да влезете с още един клиент на сървер L направете STATS c на сървер D (/stats c irc.d.com) за да видите къде може да се свърже. Нека да кажем че алтернативната връзка е кам сървер F.Сега вече имате място където да го сложите, но сега ви е нужен порт. От вашият клиент на сървер L, направете STATS l на сървер D (/stats l irc.d.com) и вижте какъв порт има отворен. Ето пример за STATS l :
211 irc.d.com 0 30844455 1978134 15372958 794195 156641 156641
211 irc.d.com[@*@*.6665] 0 702234 48662 118794 5963 156641 156641
211 irc.d.com[@*@*.6666] 0 1750847 130878 547336 22204 156641 156641
211 irc.d.com[@*@*.6668] 0 568644 38618 100102 4626 156641 156641
211 irc.d.com[@*@*.6669] 0 701079 48973 121065 5271 156641 156641
Първият ред е
default порта (6667)
и изглежда, че е доста претоварен, така че нека
използваме някои друг порт в случая 6665 за свръзка. Сега искаме да разкачим
сървер D от сървер С и тогава да кажем на сървер
F да се свърже към сървер D на
порт 6665. Ние ще направим всичко това от сървер А.
Започваме с SQUIT командата, която има следия вид:
SQUIT server reason
Така че правим следното:
/squit irc.d.com :rerout
В този случай е хубаво да изчакаме минута така че сърверът да преработи процедурата на смяната, и след това ние можем да свържем сърверът отново използваики CONNECT, в следния вид:
/connect server port link_server
Така че правим следното:
/connect irc.d.com 6665 irc.f.com
Ако изваршвате всички действия не от хъб-а , а от някой от свързаните сървери (както аз го направих сега), тогава вие обшо взето ше направите само SQUIT и CONNECT локално. Така че вие имате следната мрежа:
А-----B----C
|
D----E
И вие сте на сървер А, с реално закъснение към мрежата, тогава вие сам можете да се презакачите към сървер D с:
/squit irc.d.com :reroute
/connect irc.d.com [port]
Един последен изход отностно свързването на сърверите е така нареченото прехвърляне. Когато сърверът има проблеми и админът на сърверът не е на лице, сърверът може да бъде спрян от презакачане чрез поставянето на фалшифа връзка на неговото място. Тогава сърверът се опитва да се свърже, мрежата го вижда като вече свързан и отхвърля заявката му.
Това са няколко команди които вие няма да искате да използвате често освен ако не сте отговорен като администратор на дадения сървер или в случай на нужда.
REHASH
Командата REHASH просто казва на сърверът да презареди конфигурациония файл. Това трябва да се направи в случай на промяна в ircd.conf, за да има ефект.
RESTART
Командата напълно спира сърверът и го пуска наново. Всички връзки ще бъдат премахнати (с изключение на вашата).
DIE
Тази команда спира сърверът. Общо взето това се случва когато се рестартира сърверът, на който е стартирано IRCD-то.
Командата WALLOPS (OPERWALL) се използва за да пращате съобщение на всички оператори по цялата мрежа. Начинат на използване на двете команди е следният:
WALLOPS : текст
OPERWALL : текст
Когато правите отдалечена връзка или разкачване, сърверът изпраща автоматично съобщение на WALLOPS за това, което правиш.