Omezování P2P sítí – IPP2P & Ubuntu 7.04 (Feisty Fawn)
IPP2P patří asi mezi nejlepší (volně dostupné) filtry k omezování P2P sítí. Instalace se dá zvládnout za několik málo chvil a výsledek je velmi uspokojivý. Předpokladem pro úspěšné sestavení IPP2P je ovšem přítomnost hlavičkových souborů a modul CONNMARK v jádře.
Postup instalace:
1. Nainstalujeme si hlavičkové soubory kernelu a iptables
sudo apt-get install iptables-dev linux-headers-2.6.20-16-server
2. Stáhneme rozšíření IPP2P
cd /usr/src
wget http://ipp2p.org/downloads/ipp2p-0.8.2.tar.gz
3. Rozbalíme stažený archív
tar -xzf ipp2p-0.8.2.tar.gz
cd ipp2p-0.8.2/
Update: aplikujeme patch na Makefile
4. Spustíme kompilaci
make
5. Nakopírujeme moduly do standardních adresářů
cp libipt_ipp2p.so /lib/iptables
cp ipt_ipp2p.ko /lib/modules/`uname -r`/kernel/net/ipv4
6. Vygenerujeme novou mapu závislostí
sudo depmod
7. Načteme modul IPP2P do jádra
sudo insmod /lib/modules/`uname -r`/kernel/net/ipv4/ipt_ipp2p.ko
Samotné filtrování P2P sítí pak provádím takto:
1. Označkuju si veškeré P2P sítě (UDP pakety mimo CONNMARK!)
iptables -t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --edk -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --dc -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --gnu -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --kazaa -j MARK --set-mark 4
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --bit -j MARK --set-mark 5
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --apple -j MARK --set-mark 6
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --winmx -j MARK --set-mark 7
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --soul -j MARK --set-mark 8
iptables -t mangle -A PREROUTING -p tcp -m ipp2p --ares -j MARK --set-mark 9
iptables -t mangle -A PREROUTING -p tcp -j CONNMARK --save-mark
iptables -t mangle -A PREROUTING -p udp -m ipp2p --edk -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p udp -m ipp2p --dc -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p udp -m ipp2p --gnu -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -p udp -m ipp2p --kazaa -j MARK --set-mark 4
iptables -t mangle -A PREROUTING -p udp -m ipp2p --bit -j MARK --set-mark 5
iptables -t mangle -A PREROUTING -p udp -m ipp2p --apple -j MARK --set-mark 6
iptables -t mangle -A PREROUTING -p udp -m ipp2p --winmx -j MARK --set-mark 7
iptables -t mangle -A PREROUTING -p udp -m ipp2p --soul -j MARK --set-mark 8
iptables -t mangle -A PREROUTING -p udp -m ipp2p --ares -j MARK --set-mark 9
2. Ve vhodnou dobu pak například pomocí démona CRON P2P sítě zakazuji
iptables -t mangle -F POSTROUTING
iptables -t mangle -A POSTROUTING -m mark --mark 1 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 2 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 3 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 4 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 5 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 6 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 7 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 8 -j DROP
iptables -t mangle -A POSTROUTING -m mark --mark 9 -j DROP
nebo naopak povoluji:
iptables -t mangle -F POSTROUTING
iptables -t mangle -A POSTROUTING -m mark --mark 1 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 2 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 3 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 4 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 5 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 6 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 7 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 8 -j ACCEPT
iptables -t mangle -A POSTROUTING -m mark --mark 9 -j ACCEPT
Ty mas Ubuntu nekde na serveru?
14 října, 2007 at 9:46 pmPokud se budeme bavit o ciste produkcnich serverech tak ne. Tam je prevazne debian. Na testovacich serverech a „serverech“ zakazniku ho pouzivam bezne, nebot jsem liny instalovat debian na SATA disky apod.
15 října, 2007 at 6:54 amZdravicko, nemohl bys me prosim odkazat na neco jako traffic shaper, ktery by umel bandwidth control? Neco jsem vygooglil, ale zajima me nazor nekoho se zkusenostmi z oboru. Pouzivam iptables a webmin pro jejich konfiguraci. Predem dekuji.
3 ledna, 2008 at 2:37 amNa stránkách časopisu LE jsem vydal obdodbný článek včetne malé ukázky shapingu.
16 ledna, 2008 at 10:21 amhttp://www.linuxexpres.cz/praxe/ipp2p-kladivo-na-stahovace
Kdyz mame P2P site omerkovane, slo by je nacpat do HTB tridy, vsechny do 1 tridy? Popr. jak?
7 dubna, 2008 at 6:09 pmhttp://hodza.net/wp-content/files/p2plimit
7 dubna, 2008 at 6:44 pmZdravím, udělal jsem si takový malý skript, dle tvých článků a rad, ale objevil se mi tu menší problém. Potřebuju nějakým způsobem omezit klienta, který si změní IP adresu. Ze souboru nacitam IP adresy a rozděluju do tříd. Když ale použiju něco takového:
# propustnost ostatni
# ————————————————————-
# tc class add dev eth0 parent 1:1 classid 1:9999 htb rate 50kbit ceil 50kbit
# tc class add dev eth1 parent 1:1 classid 1:9999 htb rate 50kbit ceil 50kbit
# tc filter add dev eth0 parent 1 protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 1:9999
# tc filter add dev eth1 parent 1 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:9999
Tak se mi neskutečně zvednou pingy na lanu a je velký loss. Byla by nějaká rada odborníka?
22 dubna, 2008 at 8:25 pmAhoj, mrknu se ti na to, ale k tomu mi musis poslat ten vypis kompletni….
Jinak – co na to jit z druhe strany – zakazat klientovi menit IP?
24 dubna, 2008 at 7:43 amAhoj, prosím tě mám problém s kompilací IPP2P na debianu etch, verze jadra 2.6.18-4 končím na hlášce:
In file included from ipt_ipp2p.c:5:
/usr/include/linux/netfilter_ipv4/ip_tables.h:137: error: expected specifier-qualifier-list before ‘u_int8_t’
/usr/include/linux/netfilter_ipv4/ip_tables.h: In function ‘ipt_get_target’:
/usr/include/linux/netfilter_ipv4/ip_tables.h:225: error: ‘struct ipt_entry’ has no member named ‘target_offset’
ipt_ipp2p.c:9:21: error: net/tcp.h: není souborem ani adresářem
ipt_ipp2p.c:10:21: error: net/udp.h: není souborem ani adresářem
ipt_ipp2p.c: In function ‘match’:
ipt_ipp2p.c:769: warning: pointer targets in assignment differ in signedness
ipt_ipp2p.c:776: error: dereferencing pointer to incomplete type
Uz jsem vyzkousel milion kombinaci, ale stejne bez uspechu. Predtim jsem kompiloval ipp2p na nizsi verzi debianu a nebyl problem. Nemel bys radu? Díky
24 září, 2008 at 1:45 pm>Ahoj, prosím tě mám problém s kompilací IPP2P na debianu etch, verze jadra 2.6.18-4 končím na hlášce:
Dyť ti to tady píše:
> error: net/tcp.h: není souborem ani adresářem
> error: net/udp.h: není souborem ani adresářeem
Nemáš nainstalované hlavičkové soubory kernelu (balíček linux-headers-2.6….)
24 září, 2008 at 2:10 pmapt-get install linux-kernel-headers
Čtu seznamy balíků… Hotovo
Vytvářím strom závislostí… Hotovo
linux-kernel-headers je již nejnovější verze.
Právě že mám. Někde bude zakopany pes 🙁
24 září, 2008 at 2:14 pm>Právě že mám. Někde bude zakopany pes 🙁
24 září, 2008 at 6:52 pmPokud je tam máš, pak jsou nestandardně umístěné. Oprav to vytvořením symlinku nebo přímo ve zdrojovém kódu ipp2p. Odpovídají hlavičkové soubory (jejich verze) aktuálně běžícímu kernelu?