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.
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.
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.