4. Occuparsi di altri protocolli ad alto traffico usando CBQ

Si deve fare attenzione al fatto che gli utenti della nostra LAN possono rendere vani i nostri sforzi del capitolo 3 se usano Napster, Kazaa o Realaudio. Ci si deve anche ricordare che non si è bloccato il traffico ftp nella sezione 3.3.

Si raggiungerà l'obiettivo in un modo diverso: non limitando direttamente il download, ma indirettamente. Se la nostra interfaccia internet è ppp0 e quella LAN è eth0, si dovrà limitare il traffico uscente sull'interfaccia eth0, così risulterà limitato anche il traffico entrante in ppp0.

Per far ciò si dovrà fare conoscenza con CBQ e con lo script cbq.init. Può essere scaricato da ftp://ftp.equinox.gu.net/pub/linux/cbq/. Si dovrà scaricare cbq.init-v0.6.2 e copiarlo in /etc/rc.d/.

Servirà anche iproute2. È compreso in tutte le distribuzioni linux.

Si dia ora un'occhiata nella directory /etc/sysconfig/cbq/. Ci dovrebbe essere un file di esempio, che dovrebbe funzionare con cbq.init. Se non è lì, probabilmente non è incluso nel kernel né è presente come modulo. Bene, in questo caso semplicemente si dovrà creare quella directory, metterci dentro i file d'esempio forniti qui sotto e controllare se in questo modo funziona.

4.1. FTP

Nel capitolo 3 non è stato bloccato FTP per due motivi: per permettere l'upload e per fare in modo che gli utenti con un IE5.5 bacato possano navigare nelle directory ftp. In definitiva, i nostri web browser ed i client ftp dovrebbero fare i download tramite il nostro proxy Squid, mentre upload/rinominare/eliminare file via ftp dovrebbe essere fatto attraverso l'IP masquerading.

Si crei un file chiamato cbq-10.ftp-network nella directory /etc/sysconfig/cbq/:

# touch /etc/sysconfig/cbq/cbq-10.ftp-network

Si inseriscano nel file le righe seguenti:

DEVICE=eth0,10Mbit,1Mbit
RATE=15Kbit
WEIGHT=1Kbit
PRIO=5
RULE=:20,192.168.1.0/24
RULE=:21,192.168.1.0/24

La descrizione di queste righe si trova nel file cbq.init-v0.6.2.

Quando si fa partire lo script /etc/rc.d/cbq.init-v0.6.2, esso leggerà il file di configurazione posto in /etc/sysconfig/cbq/:

# /etc/rc.d/cbq.init-v0.6.2 start

Se tutto funziona, si aggiunga /etc/rc.d/cbq.init-v0.6.2 start alla fine dello script di inizializzazione. Di solito è /etc/rc.d/rc.local.

Grazie a questo comando, il nostro server non invierà dati ftp attraverso eth0 a più di 15Kbit/s, di conseguenza non scaricherà dati ftp da internet a più di 15Kbit/s. Gli utenti della nostra LAN vedranno che è più efficiente usare il proxy Squid per fare download ftp. Riusciranno anche a navigare nelle directory ftp usando il loro IE5.5 bacato.

C'è un altro bug in IE5.5: quando si clicca con il bottone destro su un file in una directory ftp e poi si seleziona "Copia nella Cartella", il file viene scaricato non attraverso il proxy, ma direttamente attraverso l'IP masquerading, evitando così Squid con i delay pool.

4.2. Napster, Realaudio, Windows Media e altre questioni

Qui l'idea è analoga a quanto fatto per ftp; semplicemente si aggiungerà una porta, impostando la velocità voluta.

Si crei un file chiamato cbq-50.napster-network nella directory /etc/sysconfig/cbq/:

# touch /etc/sysconfig/cbq/cbq-50.napsterandlive

Si inseriscano queste righe nel file:

DEVICE=eth0,10Mbit,1Mbit
RATE=35Kbit
WEIGHT=3Kbit
PRIO=5
# Windows Media Player.
RULE=:1755,192.168.1.0/24
# Real Player usa le porte TCP 554, per l'UDP usa porte diverse,
# ma generalmente RealAudio in UDP non consuma troppa banda.
RULE=:554,192.168.1.0/24
RULE=:7070,192.169.1.0/24
# Napster usa le porte 6699 e 6700, forse anche altre?
RULE=:6699,192.168.1.0/24
RULE=:6700,192.168.1.0/24
# Audiogalaxy usa le porte da 41000 fino a probabilmente 41900,
# ce ne sono molte, quindi si tenga presente che qui non sono elencate tutte.
# Inutile ripetere 900 volte la stessa riga.
# Semplicemente si escludano le porte 410031-41900 usando
# ipchains o iptables.
RULE=:41000,192.168.1.0/24
RULE=:41001,192.168.1.0/24
# ...continua da 41001 a 41030...
RULE=:41030,192.168.1.0/24
# Qualche utente ingegnoso potrebbe connettersi a server SOCKS per Napster,
# Audiogalaxy ecc.; è una buona idea far così anche quando si usa un proxy SOCKS
# locale
RULE=:1080,192.168.1.0/24
# Si aggiungano tutte le porta che servono; si potranno facilmente controllare
# le porte usate con IPTraf
#RULE=:port,192.168.1.0/24

Ci si ricordi di bloccare le rimanenenti porte usate da Audiogalaxy (41031-41900), usando ipchains (con i kernel 2.2.x) o iptables (con i kernel 2.4.x).

Kernel 2.2.x.

/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 41031:41900 -p TCP -j REJECT

Kernel 2.4.x.

/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d ! 192.168.1.1 --dport 41031:41900 -p TCP -j REJECT

Ci si ricordi di aggiungere una riga appropriata allo script di inizializzazione.