sabato 31 luglio - 03:01
Google
 
Menù
  Home
  Come nasce IRC-Zone
  Glossario Informatico
  News
  I nostri progetti
  I nostri servizi
  Partners
  Diventa un Partner

IRC
  Cos'è IRC
  Storia di IRC
  Netiquette su IRC
  Emoticons
  Gergo della chat
  Lista Servers
  RFC 1459
  Shell Hosting

mIRC
  Cos'è il mIRC
  FAQ mIRC
  Configurazione mIRC
  Download mIRC
  Novità
  Script Stranieri
  Script Italiani
  MTS
  MTS Engine

mIRC Addon
  mIRC addon Audio
  mIRC addon SMS
  mIRC addon Grafica
  mIRC addon Utility
  mIRC addon Uso Bot

Client IRC
  Client IRC Linux
  Client IRC Mac
  Client IRC Win

XChat
  Cos'è XChat
  XChat per Win
  XChat per Unix

KVirc
  Cos'è KVirc
  FAQ KVirc
  Installazione su Linux
  KVirc Scripting
  KVirc per Mac
  KVirc per Win
  KVirc per Unix
  KVirc addon

Irssi
  Cos'è Irssi
  Download Irssi
  Download Moduli

Eggdrop/Windrop
  Cos'è un Eggdrop
  Download Eggdrop
  Configurazione Eggdrop
  Download Windrop
  Installazione Windrop

Tcl
  Download TCL
  Tutorial TCL scripting
  Documenti/Guide

BNC
  Cos'è un psyBNC
  Download psyBNC
  Configurazione psyBNC
  Download sBNC
  Configurazione sBNC

Linkaci!
footer

Credits
Somerights

Donazione con Paypal
footer

Statistiche
Ip: 38.107.191.105
Download: 486121 file
Totale: 654581 MB

footer



Il Lag & il Netsplit

Autore: PUOJACKZData: 2005-10-24
Modificato: 2005-10-25 Letture: 8628
Torna indietroStampa articoloInvia ad un amico

Preambolo:
C'è da precisare che alcune tecniche descritte in questo articolo(sviluppato anni fa, ma pubblicato solo in questi giorni), ma soprattutto le cause che spingevano i ragazzi a sfruttare le IRCWars sono ormai poco diffuse in virtù del fatto che la stragrande maggioranza delle reti IRC hanno adottato sempre di più l'impiego di Services, i quali rendono obsoleto l'uso di DoS per ottenere lo status di canali(Takeover).

Contenuti

1. Introduzione
2. Il Lag
3. I NetSplits 4. Desynch & Resynch

1. Introduzione

A causa della propria natura di collegamento, il sistema Liveness, che si basa sulla spedizione di un segnale per capire se un determinato host è ancora collegato oppure no, soffre di una problematica rappresentata da aspetti fisici: i Netsplit e il Lag.

2. Il Lag

La prima cosa da comprendere è la struttura di IRC. IRC in sostanza non è nient'altro che un enorme rete di server linkati fra di loro. La struttura tipica è ad albero:

A - B - C - D

Questo tipo di network appena menzionato è un network principalmente di base. Un network esteso come IRCnet è, circa, come il diagramma qua sotto.

G - H - I - J - K - L - M - N
|     |    |   | /      \    \
A - B - C - D - E - F - Z
|    |          /    |    |
O - P - Q - R - S - T
|   / \
U V W

Per i propositi di questa spiegazione, tuttavia, noi rimaniamo con i 4 server in serie per rendere il tutto più facile da capire. Dal diagramma si può notare che per ogni dato, che vada in qualsiasi posto della rete, c'è solo una via di instradamento. Percui se qualcuno spedisce dei dati dal server A al server D, questo può andare solo attraverso A, B e C e poi arrivare a destinazione nel server D. Da ogni punto di passaggio il viaggio richiede tempo, che può dipendere pure anche dalla distanza geografica tra client e server di passaggio. Se c'è una connessione lenta tra il server B e C questo causerà un rallentamento anche sensibile da parte del client e quindi ci vorrà molto tempo per inviare un dato.

Ora, se si esegue un CTCP (Client to Client Protocol = Protocollo utente - utente) ping a qualcuno (/ctcp nickname PING) si ottiene, come risposta, il seguente messaggio: (ad esempio)

[PUOJACKZ PING reply]: 37 secs

Percui diciamo che PUOJACKZ ha un lag di 37 secondi; questo significa che i dati inviati a lui necessitano 37 secondi perché siano recapitati e se quest'ultimo invia a noi dei dati, occorrerà lo stesso tempo perché noi riusciamo a riceverli. Inoltre possiamo dire che nei giorni in cui il lag è particolarmente alto, la differenza di risposta potrebbe dipendere anche tra servers stessi, causati da vari problemi quali errori degli IRCd (IRC Daemon), problemi esterni della shell dove sono installati, DoS presso le shell ecc... e quindi potrebbe apparire così:

A ------- B -------- C -------- D

9 sec 6 sec 10 sec

Se il lag è proporzionale e qualcuno esegue un ping al server D, dal server A, si riceverà una risposta di ping pari a 50 secondi. Questa è tutta la differenza di tempo moltiplicata per 2. Percui, ci vorrebbero 50 secondi per i dati spediti al server (in questo caso il ping) D, per raggiungere la destinazione e ritornare indietro; se qualcuno, invece, eseguisse un ping al server D dal server B, occorrerebbero 32 secondi. Questo sta a significare che il lag è proporzionale, e forse nessuno è realmente laggato, rispetto all'altro.

Guarda questo esempio:

A ------- B -------- C -------- D

1 2 3 4

Se noi abbiamo una persona su ogni server e tu, nel server A, esegui un ping su tutti, le risposte che riceverai saranno queste:

[1 PING reply]: 0 secondi
[2 PING reply]: 18 secondi
[3 PING reply]: 30 secondi
[4 PING reply]: 50 secondi

Ora, guarda dove il problema sembra sorgere. Noi abbiamo 2 bots, uno nel server A (Bot 1) e uno nel server D (Bot 2).

A ----- B ------ C ------ D
9 sec 6 sec 10 sec
Bot 1 Bot 2

Un utente entra in un canale dal server B. 9 secondi dopo che l'utente è entrato, Bot 1, nel server A, vede l'utente e lo rende moderatore di canale. Poi, dopo 7 secondi, il Bot 2 nel server D vede l'utente e gli da lo stato di ChanOp. Così tutti gli utenti nel server A pensano che sia il Bot 1 ad aver oppato l'utente, e tutti gli utenti del server D pensano che sia il Bot 2 ad averlo fatto. L'utente stesso pensa, naturalmente, che sia stato il Bot1 perché, avendo meno lag rispetto ad esso, ha visto prima l'azione compiuta da quest'ultimo che dell'altro bot. Questo significa che ogni volta che il lag è particolarmente alto, le conversazioni possono rapidamente diventare intollerabili a causa del tempo di risposta molto lungo. Gli utenti possono evitare ciò spostandosi nei servers più vicini a tutti gli altri. Idealmente il lag da server a server è in millisecondi e, in questi casi, non è un problema. Tuttavia, qualchevolta, a causa dei problemi dell'intero network, possono diventare addirittura dai 20 ai 30 (e superiori). Ci sono molte ragioni di questi ritardi come, ad esempio, a causa di servers sovraccarichi, troppi utenti in un server, server abusati (es. flooding e spreco di banda di trasmissione), link rallentati o routing scarso. Ultimamente il lag è anche un segnale, nelle reti di piccola affluenza di utenti, per indicizzare quando un server, o l'hub o un leaf, è sottoposto ad attacchi DoS o DDoS. Il synflooder Trin00, ad esempio, usa un sistema di reti combinate per spedire un fotio di segnali "echo ping" che in apparenza sembrano inutili, ma con lo scopo di occupare banda di trasmissione alla connessione in corso di un server. Questo è uno dei motivi di lag (o come dicono in gergo "quando la connessione soffre"), ed, in caso, quando splitta ("quando la connessione salta o muore"). Quando i due servers vedono che non c'è più risposta tra loro "splittano" la connessione, ossia si staccano. E se accade, gli utenti all'interno si staccano dalla rete per SQuit o NetSplit. Il termine SQuit è l'abbreviato di Split Quit ed indicizza una disconnessione dal network forzata (che avviene in automatico, in caso di lag, oppure eseguita dall'amministratore del server stesso).

3 . I NetSplits

Un NetSplit avviene quando due server perdono il contatto tra di loro. Di solito un server ha una differenza di tempo notevole dall'altro, che aumenta a seconda del punto dove, nella rete, non riescono a interscambiare i dati in modo abbastanza veloce. Usando i 4 servers come un esempio proviamo a vedere come e cosa succede durante uno Split.

A -------- B ------- C ------- D prima dello split

A ---| |--- B ------- C ------- D dopo

Dal punto di vista delle persone nel server B,C e D, le persone del server A hanno lasciato IRC, e vice versa per le quelle del server A. Il messaggio tipico di uscita (Quit) durante un netsplit è del tipo:

[18:40] *** Quit: LOL (Server1.MyServer.org Server2.MyServer.org)

[18:40] *** Lascia: LOL (Server1.MyServer.org (server di origine) Server2.MyServer.org (server splittato))

Percui su un canale si vedrà:

[18:40] *** LOL has left IRC (Server1.MyServer.org Server2.MyServer.org)

[18:40] *** LOL ha lasciato IRC (Server1.MyServer.org Server2.MyServer.org)

Questo dimostra che i due servers sono splittati. Ma ricorda: questo è relativo. Nel resto del network, gli altri utenti vedranno che gli utenti su Experience.* e CalifornianLighs.* hanno lasciato IRC, e gli utenti su Experience.* e CalifornianLighs.* hanno visto tutti gli altri lasciare IRC. Una delle funzioni degli IRCOp è quella di ricreare il routing, e l'amministratore del server ha il compito di tentare di riconnettere il server con gli altri servers del network; naturalmente loro decideranno pure il momento in cui è più conveniente riconnettersi. Se ad esempio vi è molto lag con i servers che ci si vuole connettere (ad esempio tutta il network è sotto attacco DDoS) è inutile eseguire tale operazione fino a quando il problema non è stato risolto.

Molti degli utenti meno intelligenti provano a provocare NetSplit o approfittando di quando accadono, per generare takeovers dentro i canali, sfruttando i desynch causati dalla scissione avvenuta. Quando due server splittano e si riconnettono, si passano le informazioni di tutti gli utenti collegati, dei canali creati e delle configurazioni di quest'ultimi. Quando questi vedono che in entrambi è presente lo stesso nickname, l'unico modo per riportare l'ordine è quello di killare entrambi i nicknames. Che fa un takker? se per esempio deve causare un takeover sul canale #italia, lui entra nel server splittato, entra nel canale dove vuole effettuare il TakeOver (che, essendo splittato, avrà gli utenti in locale, o sarà vuoto) e carica dei cloni o dei bots, impostando loro, le stesse identità dei moderatori del canale dove vuole causare il Take. Quando i due server linkano, vedono che i nicknames sono sia su uno che sull'altro server e li killa entrambi.
Un altro sistema per causare TakeOvers è sfruttando il ServerMode. Quando due servers si ricollegano, si passano le informazioni dei canali persi durante lo Split e quindi pure i modes di canale e di utente che c'erano su questi. I takker usano questo metodo per farsi oppare nei canali al momento del relink. Loro vanno nel server splittato, si rendono moderatori nel canale di quel server e aspettano il relink con il resto della rete. Quando il server relinka, vede anche il takker come moderatore del canale e lo rende ChanOp nel canale. Ultimamente, però, l'uso di questi sistemi è inefficace in quanto gli IRCd sono o patchati, o nella rete sono presenti i Services, in grado di ristabilire l'ordine senza problemi.

L'unica cosa da fare durante un netsplit sta nell'aspettare la riconnessione dei server, in tutta tranquillità. Cambiare server durante uno split è una CATTIVA IDEA, perchè potresti causare una collisione di nickname. Quando più servers sono vittima di lag elevati, spesso non riescono ad aggiornarsi, chiudendo la connessione con i nicknames collegati. In questi casi, il cambio di server potrebbe causare il kill di quest'ultimo.

3.1 Che significa quando un canale, in seguito alla riconnessione del server splittato, collide? e un nick?

Dopo un Netsplit, gli utenti continuano ad entrare da entrambi i network spezzati, e le persone che avevano lo stesso nickname, una volta avvenuta la riconnessione con il resto del Network, vengono killate. Questo accade frequentemente con i nick più usati. E' un fenomeno chiamato Nick Collision (Collisione di Nickname). Le collisioni di nick o di canali possono anche esser provocate tramite attacchi DDoS con il proposito di creare problemi agli utenti vittima dei Nick Collision Kills oppure per causare SQuit Collision Nick/Channel Takeover. In genere questi comportamenti sono molto fastidiosi, e gli IRCop pongono K-line agli utenti che li provocano.

3.2 Che cos'è un ServerOp? Server1.MyServer.org setta i mode: +ooo Nick1 Nick2 Nick3

Dopo un Netsplit, durante il processo di riconnessione dei servers e degli utenti presenti, avviene l'aggiornamento dei dati andati persi durante la scissione. I nuovi utenti, i loro nicknames, i canali dove si trovavano e i loro settaggi vengono riaggiornati. Il processo di settaggio dei ChanModes nei canali aggiornati avviene tramite il ServerMode o ServerOp:

Server1.MyServer.org setta i mode: +ooo Nick1 Nick2 Nick3

I ServerOps sono famosi nel loro utilizzo per scopi di danneggiamento o Takeover. Quando avviene un take, questo è denominato infatti SQuit Collision Channel Takeover.

Quando il server relinka dopo uno split, non è necessario che sia lo stesso a cui era connesso prima dello split. Riguardando ancora l'esempio, ora potrebbero essere linkati così:

B ---- C ---- D ---- A

Ora tutto è cambiato, perchè le persone che erano laggate rispetto a te ora non lo sono più e viceversa. Questa è la natura del LAG: qualche volta è noioso, ma non c'è da preoccuparsi.

4. Desynch & Resynch

Il desynch è uno dei più grossi problemi della rete, durante i periodi di NetSplit/Merge/Healing. Molto spesso, però, si lascia che sia il caso a risolvere questo problema, cosa che, col tempo, potrebbe essere generare noie inutili. Il Resyncing è semplice, di per sè, se comprendi cosa lo ha generato. Il Desync è una condizione in cui i servers della rete hanno delle informazioni che, in fase di sincronizzazione, per ristabilire lo status globale della rete, vanno in conflitto. Una situazione di Desynch è visibile, ad esempio, quando, entrando presso un canale globale, da un server, non è possibile inviare messaggi, ottenendo un messaggio d'errore uguale a quando il canale è impostato per la sola discussione moderata da un operatore di canale, oppure, quando si notano degli utenti con status Op, quando, altrove, non l'hanno e viceversa. Nel particolar caso dei ChanOp desincronizzati, se un utente Op, condivide questa caratteristica con un altro utente, anche quest'ultimo sarà desincronizzato con la rete. Se, invece, bannerà un utente dal canale, i servers avranno delle liste degli utenti di canale, totalmente scombinate. Per evitare che la desincronizzazione si diffonda, causando sempre più problemi (un canale non sincronizzato, non è moderabile, pertanto, la chat può essere compromessa, sia perchè i messaggi non vengono diffusi agli altri utenti, sia perchè potrebbe entrare un utente e causare flood ed harrasing, senza essere allontanato). Trovare il luogo ov'è avvenuto il desynch è utile per questi motivi. Un sistema molto semplice è quello, prima di tutto, nel vedere se, entrando in un canale, l'Op che ti viene fornito durante la creazione, ha sul serio il suo "potere". Si tenti, ad esempio, di settare il topic. Se si riceve un messaggio d'errore, da parte del server, specificando che tale operazione non è possibile, già si può capire che il server è desynch (questo non funziona molte volte). Se si è in un canale con utenti e si sospetta un desynch, s'incolli l'output del /names in canale e si chieda a chi è residente, se il /names a lui visualizzato contiene gli stessi dati. E' possibile adottare questo metodo anche collegando + cloni su servers diversi, facendoli entrare nello stesso canale. Una volta individuati su quali servers sono gli utenti che non dovrebbero avere certe determinate modalità o non dovrebbero essere in canale, si provveda, per quanto possibile, all'impostare manualmente la configurazione del canale.



Branzilla Contest Redeem

Links utili

Newsletter
Iscriviti
Cancellati

Ci sono 84 iscritti

In rilievo..
  JackSMS v3
  Venom Script Lite

Documenti/Guide
  I Social Network
  Sicurezza in rete
  Cos'è SSL
  FAQ Bot
  Documenti su IRC
  FAQ Ident
  RFC 2810
  RFC 2811
  IRCx RFC

Informatica libera
  Gli Hoaxes
  Hoaxes report
  Documenti vari
  CensorWare
  Windows
  Linux

mIRC Scripting
  Codice ASCII
  Snippet mIRC scripting
  Tutorial mIRC scripting
  Dll per mIRC
  Utilities

IRCd
  Cos'è un IRCd
  Download Unreal
  Download Hybrid 6
  Download Hybrid 7
  Download Ultimate
  Download Bahamut
  Configurazione IRCd

IRC Services
  Cosa sono i Services
  Download Anope
  Download Epona
  Ircservices 5.0
  Ircservices 5.1
  Configurazione Epona
  Configurazione Anope
  Comandi ChanServ
  Comandi NickServ
  Comandi MemoServ

NeoStats
  Cosa sono i NeoStats
  Download NeoStats
  Configurazione NeoStats
  Download Moduli

IPv6
  Cos'è IPv6
  IPv6 su Win2000
  IPv6 su WinXP
  IPv6 su Linux
  IPv6 su mIRC e Xchat

Programmazione
  Tutorial C++
  Tutorial C
  Compilatori C/C++

Altro
  Contatti
  Banners Gallery

RSS Feed




Progetti
Starlight
IRCHippo

Links amici
Eushells.net
MF's IT User Essential Security Center

Validato CSS
Sito interamente sviluppato in PHP
MySQL
©2004+ IRC-Zone | Webmaster | Sitemap
Created by Cesare 'Kaesar83' Lasorella
Designed by Manuel 'erkokki' Cabras
IRC-Zone non è responsabile del contenuto dei siti linkati
Pagina creata in: 0.024 sec con 27 queries
Spampoison
Sviluppato con Notepad++
website monitoring service