Hello!
Van egy DSL 3mbps vonalam amit egy P3 al osztok szét 20 windózos gépre.
A serveren van egy telepített Debian Sarge 2.6.8-3 gyári kernellel, de úgy nézem minden benne van ami kell a Qos és a traffic shaper megvalósításához.
Légyszi segítsetek ebből a vacakból valami használható tüzfalat kovácsolni ;)
#!/bin/sh
#
#eth0--ppp0---------> ADSL MODEM
#eth1--(10.0.0.0/255.255.255.0=10.0.0.0/24)LAN
#
#MODULOK
modprobe ip_tables
modprobe iptable_nat
modprobe ip_queue
modprobe ipt_MARK
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_MASQUERADE
modprobe iptable_filter
modprobe ipt_REJECT
modprobe iptable_mangle
#SZABÁLYOK TÖRLÉSE
iptables -X
iptables -Z
iptables -t nat -F
iptables -F
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z
#POLICY
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#MÁS HÁLÓZAT TILTÁSA
#CLASS_A="10.0.0.0/8"
#iptables -A INPUT -s 10.0.0.0/8 -j DROP
#iptables -A OUTPUT -s 10.0.0.0/8 -j DROP
#iptables -A FORWARD -s 10.0.0.0/8 -j DROP
#CLASS_B="172.16.0.0/12"
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A OUTPUT -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -s 172.16.0.0/12 -j DROP
#CLASS_C="192.168.0.0/16
iptables -A INPUT -s 192.168.0.0/16 -j DROP
iptables -A OUTPUT -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -s 192.168.0.0/16 -j DROP
#CLASS_D_MULTICAST="224.0.0.0/4"
iptables -A INPUT -s 224.0.0.0/4 -j DROP
iptables -A OUTPUT -s 224.0.0.0/4 -j DROP
iptables -A FORWARD -s 224.0.0.0/4 -j DROP
#CLASS_E_RESERVERD="240.0.0.0/5"
iptables -A INPUT -s 240.0.0.0/5 -j DROP
iptables -A OUTPUT -s 240.0.0.0/5 -j DROP
iptables -A FORWARD -s 240.0.0.0/5 -j DROP
#NETMEGOSZTÁS
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
iptables -t nat -A POSTROUTING -o ppp0 -s 10.0.0.0/24 -j MASQUERADE
#VÉDELEM
iptables -t mangle -A INPUT -p icmp -i ppp0 -j DROP
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -N syn-flood
iptables -A INPUT -i ppp0 -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A INPUT -i ppp0 -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A INPUT -i ppp0 -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
#Érvénytelen csomagok eldobása
iptables -A FORWARD -i eth1 -m state --state INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state INVALID -j DROP
#localhost "engedélyezve minden"
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# ssh beengedese csak LAN felol
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
# portok engedese
# ftp, ftp-data, ssh, stp, fttp, pop3, https,neptun,msn
iptables -A INPUT -i eth1 -p tcp -m multiport --dport 20,21,22,25,80,110,443,3389,1863 -m state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp -m multiport --dport 20,21,22,25,80,110,443,3389,1863 -m state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp -m multiport --dport 20,21,22,25,80,110,443,3389,1863 -m state ESTABLISHED,RELATED -j ACCEPT
#Half-Life
iptables -A INPUT -i eth1 -p udp --dport 27010:27020 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -p udp --dport 27010:27020 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport 27010:27020 -m state --state ESTABLISHED,RELATED -j ACCEPT
#DNS
iptables -A INPUT -i eth1 -p udp -m multiport --dport 53,54 -j ACCEPT
iptables -A FORWARD -i eth1 -p udp -m multiport --dport 53,54 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp -m multiport --dport 53,54 -j ACCEPT
#dhcp
iptables -A INPUT -i eth1 -p udp -m multiport --dport 67,68 -j ACCEPT
iptables -A FORWARD -i eth1 -p udp -m multiport --dport 67,68 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp -m multiport --dport 67,68 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp -m multiport --dport 67,68 -j DROP
#80/tcp port átirányítva 3128 ra (SQUID PROXY)
iptables -A INPUT -p tcp --dport 3128 -s 10.0.0.0/24 -j ACCEPT
iptables -A PREROUTING -t nat -s 10.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "START"
#
#
#
#host(OK)
iptables -t filter -A INPUT -i eth1 -s 10.0.0.2 -m mac --mac-source 00:AA:0A:F0:DA:E3 -j ACCEPT
iptables -t filter -A FORWARD -s 10.0.0.2 -m mac --mac-source 00:AA:0A:F0:DA:E3 -j ACCEPT
############################################################################################
Az lenne a cél hogy a server csak azokat az usereket engedje a netre akinél stimmel az IP és a MACADDRES.
Aztán szeretnék valami port prioritás szabályzót kreálni és egy olyan netlimitert ami hoszt szintü.
Azt tapasztaltam már rengetegszer , hogy valaki dc++ ozik vagy torrentezik akkor iszonyatos módon belassul az egész net.
Erre ideiglenesen betettem ezt egy tüzfal szkriptbe:
iptables -A FORWARD -p tcp --dport 6000:65535 -j DROP
De nem ez a helyes megoldás
Leszedtem a shaperd -t és találtam egy egész egyszerünek tünő szkriptet , csak az a baj vele hogy nem tudom beállítani:
# example.3.conf: shape masq'd hosts
#
# send a SIGHUP to reload this file with the command killall -HUP shaperd
# this is an "internal" log level (all logs are sent with facility daemon,
# priority info; see the syslog manpage for more information).
# valid levels are:
# alert (1)
# error (2)
# warning (3)
# info (4)
# debug1 (5)
# debug2 (6)
# log levels beggining from warning (3) will log unmatched packets
log level = warning
# this is a required option. note that shaperd must have been built with
# the correct forwarding mechanism(s) in order for these to work
# see the README for further details
# packet forwarding = ipq
# packet forwarding = divert
packet forwarding = ipq
# this is useful for debugging
# shaperd will run detached if set to "yes"
daemon = yes
# full path to shaperd's pidfile
# it will be generated in daemon mode only
pidfile = /var/run/shaperd.pid
class A_up {
bandwidth = 32 kbit/s
ipv4 classifier out_if=ppp+ saddr=192.168.0.254
borrow from B_up, C_up, D_up
queue limits = 0 kb 150 packets
}
class A_down {
bandwidth = 128 kbit/s
ipv4 classifier inp_if=ppp+ daddr=192.168.0.254
borrow from B_down, C_down, D_down
queue limits = 0 kb 150 packets
}
class B_up {
bandwidth = 32 kbit/s
ipv4 classifier out_if=ppp+ saddr=192.168.0.253
borrow from A_up, C_up, D_up
queue limits = 0 kb 150 packets
}
class B_down {
bandwidth = 128 kbit/s
ipv4 classifier inp_if=ppp+ daddr=192.168.0.253
borrow from A_down, C_down, D_down
queue limits = 0 kb 150 packets
}
class C_up {
bandwidth = 32 kbit/s
borrow from A_up, B_up, D_up
ipv4 classifier out_if=ppp+ saddr=192.168.0.252
queue limits = 0 kb 150 packets
}
class C_down {
bandwidth = 128 kbit/s
borrow from A_down, B_down, D_down
ipv4 classifier inp_if=ppp+ daddr=192.168.0.252
queue limits = 0 kb 150 packets
}
class D_up {
bandwidth = 32 kbit/s
borrow from A_up, B_up, C_up
ipv4 classifier out_if=ppp+ saddr=192.168.0.251
queue limits = 0 kb 150 packets
}
class D_down {
bandwidth = 128 kbit/s
borrow from A_down, B_down, C_down
ipv4 classifier inp_if=ppp+ daddr=192.168.0.251
queue limits = 0 kb 150 packets
}
class wrz_up {
bandwidth = 4.0 kbyte/s
ipv4 classifier out_if=ppp+ proto=tcp sport=80
queue limits = 0 kb 20 packets
}
Aztán amit végképp nem értek meg az a Qos.
#!/bin/bash
#
# myshaper - DSL/kabelmodem kimeno forgalmanak szabalyozasa.
# Az ADSL/Cable wondershaper (www.lartc.org) szkripten alapszik.
#
# Irta: Dan Singletary (8/7/02)
#
# FIGYELEM: a szkript feltetelezi, hogy a kernelt megfoltoztuk a megfelelo HTB
# sor és IMQ foltokkal, amik hozzaferhetok itt (megj.: az ujabb kerneleknel
# lehet, hogy nem kell folt):
#
# http://luxik.cdi.cz/~devik/qos/htb/
# http://luxik.cdi.cz/~patrick/imq/
#
# Konfiguracios beallitasok:
# DEV - ethX-re allitsuk, ami kapcsolodik a DSL/kabelmodemhez
# RATEUP - allitsuk valamivel kisebbre, mint a modem kimeno savszelessege.
# Nekem 1500/128 DSL vonalam van, es a RATEUP=90 jol mukodik a
# 128 kbps-os feltoltessel. De ahogy jonak latod.
# RATEDN - allitsd valamivel kisebbre, mint a bejovo savszelesseg.
#
#
# Teoria az imq hasznalatarol a bejovo forgalom alakitasahoz:
#
#
# BEJOVO TCP KAPCSOLATOK BEFOLYASOLASAT. Ennek ertelmeben minden nem-TCP
# forgalmat egy magas prioritasu osztalyba kell sorolnunk, mivel egy nem-TCP
# csomag eldobasa valoszinuleg a csomag ujrakuldeset okozza. Ez semmi mast nem
# jelent, csak a savszelesseg szuksegtelen lefoglalasat, hogy specifikusan
# valaszthatunk: NEM dobunk el bizonyos tipusu csomagokat, amiket magasabb
# prioritasu tarolokba helyezunk el (ssh, telnet stb). Ez azert van, mert a
# csomagok mindig az alacsonyabb prioritasu osztalybol jonnek elo azzal a
# kikotessel, hogy a csomagok meg minden osztalybol egyforman egy minimalis
# mertekben jonnek ki (ebben a szkriptben minden tarolo legalabb a tisztesseges
# 1/7 savszelessegnyivel A TCP csomag eldobasa egy kapcsolaton belul a fogadas
# alacsonyabb mertekehez vezet, a torlodas-elkerulo algoritmus miatt.
#
# * Semmit nem nyerunk a nem-TCP csomagok eldobasaval. Valojaban, ha
# fontosak voltak, ugyis ujra elkuldik oket, igy megprobaljuk azt, hogy
# sosem dobjuk el oket. Ez azt jelenti, hogy a telitett TCP kapcsolatok nem
# befolyasoljak negativan azokat a protokollokat, amelyeknel nincs a
# TCP-hez hasonlo beepitett ujrakuldes.
#
# * A TCP kapcsolatok lelassitasa ugy, hogy a teljes bejovo rata kevesebb,
# mint az eszkoz valos kapacitasa AZT OKOZHATJA, hogy keves vagy egyetlen
# csomag sem all varakozosorba a szolgaltatoi oldalon (DSLAM,
# kabel-koncentrator stb). Mivel ezek a sorok kepesek megtartani 4
# masodpercnyi adatot 1500Kbps sebessegen vagy 6 megabitnyi adatot, ha egy
# csomag sem all sorba, az alacsonyabb lappangast okoz.
#
# Kikotesek (kerdesfeltevesek a teszteles elott):
# * A bejovo forgalom ezen a modon valo korlatozasa gyenge TCP-teljesítmenyt ad?
# - Az elozetes valsz: nem! Ugy nez ki, hogy az ACK csomagok prioritasanak
# beallitasa (kicsi <64b) anelkul maximaljuk a kimeno telesitmenyt, hogy
# nem vesztunk savszelesseget a mar meglevo ujrakuldott csomagok miatt.
# Megjegyzes: a kovetkezo konfiguracio jol mukodik az en beallitasaimmal:
# 1.5M/128K ADSL a Pacific Bell Internet-en keresztul (SBC Global Services)
DEV=eth0
RATEUP=90
RATEDN=700 # Figyeld meg, hogy ez jelntosen kisebb mint az 1500-as kapacitas.
# Emiatt nem kell a bejovo forgalom korlatozasaval torodnod, amig
# nem hasznalhatunk jobb megvalositast, mint például a TCP ablak
# manipulacioja.
#
# konfiguracios beallitasok vege
#
if [ "$1" = "status" ]
then
echo "[qdisc]"
tc -s qdisc show dev $DEV
tc -s qdisc show dev imq0
echo "[class]"
tc -s class show dev $DEV
tc -s class show dev imq0
echo "[filter]"
tc -s filter show dev $DEV
tc -s filter show dev imq0
echo "[iptables]"
iptables -t mangle -L MYSHAPER-OUT -v -x 2> /dev/null
iptables -t mangle -L MYSHAPER-IN -v -x 2> /dev/null
exit
fi
# Mindent visszaalitunk alapallapotba (torlunk)
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev imq0 root 2> /dev/null > /dev/null
iptables -t mangle -D POSTROUTING -o $DEV -j MYSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -F MYSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -X MYSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -D PREROUTING -i $DEV -j MYSHAPER-IN 2> /dev/null > /dev/null
iptables -t mangle -F MYSHAPER-IN 2> /dev/null > /dev/null
iptables -t mangle -X MYSHAPER-IN 2> /dev/null > /dev/null
ip link set imq0 down 2> /dev/null > /dev/null
rmmod imq 2> /dev/null > /dev/null
if [ "$1" = "stop" ]
then
echo "Shaping removed on $DEV."
exit
fi
###########################################################
#
# Kimeno korlatozas (a teljes savszelesseg RATEUP-ra allitva)
# a varakozosor meretet ugy allitjuk be, hogy kb. 2 mp lappangas legyen az alacsony
# prioritasu csomagoknal
ip link set dev $DEV qlen 30
# a kimeno eszkozon MTU-t allitunk. Az MTU csokkentese alacsonyabb lappangast
# ad, de valamivel kisebb kimeno teljesitmenyt is az IP es TCP protokoll
# felulvezerlese miatt
ip link set dev $DEV mtu 1000
# a HTB-t gyoker qdisc-nek allitjuk be
tc qdisc add dev $DEV root handle 1: htb default 26
# hozzaadjuk a fobb korlatozo osztalyokat
tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit
# hozzadjuk az alosztalyokat - garantaljuk minden osztalynak LEGALABB a
# "tisztesseges" osztozast a savszelessegen. Emiatt egy osztalyt sem fog egy
# masik kieheztetni. Ezenkivul mindegyik osztaly hasznalhatja a rendelkezesre
# allo savszelesseget, ha a tobbi nem hasznalja.
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 0
tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 1
tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 2
tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 3
tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 4
tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 5
tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 6
# az alosztalyokhoz qdisc-eket adunk - SFQ-t adunk minden osztalyhoz. Az SFQ
# biztositja, hogy minden osztalyon belul a kapcsolatokat (majdnem) egyenloen
# kezeljuk.
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10
tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10
tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10
tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10
tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10
tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10
# az fwmark-kal szurjuk osztalyokba a forgalmat - itt a csomagon beallitott
# fwmark-nak megfeleloen iranyitjuk a forgalmat az osztalyokba (az fwmark-ot az
# iptables segitsegevel kesobb allitjuk be). Figyeld meg, hogy fentebb az
# alapertelmezett prioritasu osztalyt 1:26-ra allitottuk, igy a nem jelolt
# csomagok (vagy a nem ismert ID-ju csomagok) alapertelmezesben az alacsonyabb
# prioritasu osztalyba mennek.
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 25 fw flowid 1:25
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 26 fw flowid 1:26
#
# a MYSHAPER-OUT lanc hozzadasa az iptables "mangle" tablajahoz - ez beallitja
# azt a tablat, amit a csomagok szuresehez es megjelolesehez hasznalunk.
iptables -t mangle -N MYSHAPER-OUT
iptables -t mangle -I POSTROUTING -o $DEV -j MYSHAPER-OUT
# a fwmark ertekek beallitasa a kulonbozo tipusu forgalomhoz - a fwmark-ot 20-26
# kozottire allitjuk a kivant osztalynak megfeleloen. A 20 a legmagasabb prioritas.
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport 0:1024 -j MARK --set-mark 23 # Alapertek az
# alacsony portokon zajlo forgalomhoz
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 0:1024 -j MARK --set-mark 23 # ""
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 20 -j MARK --set-mark 26 # ftp-data port, alacsony prioritas
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 5190 -j MARK --set-mark 23 # aol instant messenger
iptables -t mangle -A MYSHAPER-OUT -p icmp -j MARK --set-mark 20 # ICMP (ping) - magas prioritas, baratok ismertetojegye
iptables -t mangle -A MYSHAPER-OUT -p udp -j MARK --set-mark 21 # DNS nevfeloldas (kis csomagok)
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport ssh -j MARK --set-mark 22 # secure shell
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport ssh -j MARK --set-mark 22 # secure shell
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport telnet -j MARK --set-mark 22 # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport telnet -j MARK --set-mark 22 # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT -p ipv6-crypt -j MARK --set-mark 24 # IPSec - viszont nem tudjuk, mi a "hasznos teher"...
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport http -j MARK --set-mark 25 # helyi webszerver
iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j MARK --set-mark 21 # kis csomagok (valoszinuleg csak ACK-k)
iptables -t mangle -A MYSHAPER-OUT -m mark --mark 0 -j MARK --set-mark 26 # redundans- jeloljunk minden nem jelolt csomagot 26-tal (alacsony prioritas)
# vegeztunk a kimeno korlatozassal
#
####################################################
echo "Outbound shaping added to $DEV. Rate: ${RATEUP}Kbit/sec."
# tavolitsd el a megjegyzest a kovetkezo sor elol, ha csak kimeno forgalomszabalyozast akarsz
# exit
####################################################
#
# Bejovo korlatozas (a teljes savszelesseg RATEDN-re allitva)
# megnezzuk, hogy az imq modul betoltodott-e
modprobe imq numdevs=1
ip link set imq0 up
# a qdisc hozzadasa - alapertelmezett alcsony prioritasu 1:21-es osztaly
tc qdisc add dev imq0 handle 1: root htb default 21
# a fo korlatozo osztalyok hozzaadasa
tc class add dev imq0 parent 1: classid 1:1 htb rate ${RATEDN}kbit
# alosztalyok hozzaadasa - TCP forgalom a 21-ben, nem-TCP forgalom a 20-ban
#
tc class add dev imq0 parent 1:1 classid 1:20 htb rate $[$RATEDN/2]kbit ceil ${RATEDN}kbit prio 0
tc class add dev imq0 parent 1:1 classid 1:21 htb rate $[$RATEDN/2]kbit ceil ${RATEDN}kbit prio 1
# az alosztalyokhoz qdisc-eket adunk - SFQ-t adunk minden osztalyhoz. Az SFQ
# biztositja, hogy minden osztalyon belul a kapcsolatokat (majdnem) egyenloen
# kezeljuk.
tc qdisc add dev imq0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev imq0 parent 1:21 handle 21: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50
# az fwmark-kal szurjuk osztalyokba a forgalmat - itt a csomagon beallitott
# fwmark-nak megfeleloen iranyitjuk a forgalmat az osztalyokba (az fwmark-ot az
# iptables segitsegevel kesobb allitjuk be). Figyeld meg, hogy fentebb az
# alapertelmezett prioritasu osztalyt 1:21-re allitottuk, igy a nem jelolt
# csomagok (vagy a nem ismert ID-ju csomagok) alapertelmezesben az alacsonyabb
# prioritasu osztalyba kerulnek.
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21
# a MYSHAPER-IN lanc hozzadasa az iptables "mangle" tablajahoz - ez beallitja azt a tablat,
# amit a csomagok szuresehez es megjelolesehez hasznalunk.
iptables -t mangle -N MYSHAPER-IN
iptables -t mangle -I PREROUTING -i $DEV -j MYSHAPER-IN
# a fwmark ertekek beallitasa a kulonbozo tipusu forgalomhoz - a fwmark-ot 20-26 kozottire
# allitjuk a kivant osztalynak megfeleloen. A 20 a legmagasabb prioritas.
iptables -t mangle -A MYSHAPER-IN -p ! tcp -j MARK --set-mark 20 # A nem-tcp csomagokat a legnagyobb prioritasura allitja
iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j MARK --set-mark 20 # rovid TCP csomagok, valoszinuleg ACK-k
iptables -t mangle -A MYSHAPER-IN -p tcp --dport ssh -j MARK --set-mark 20 # secure shell
iptables -t mangle -A MYSHAPER-IN -p tcp --sport ssh -j MARK --set-mark 20 # secure shell
iptables -t mangle -A MYSHAPER-IN -p tcp --dport telnet -j MARK --set-mark 20 # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN -p tcp --sport telnet -j MARK --set-mark 20 # telnet (ew...)
iptables -t mangle -A MYSHAPER-IN -m mark --mark 0 -j MARK --set-mark 21 # redundans- minden nem jelolt csomagot 21-el jelolunk (alacsony prioritas)
# vegul utasitjuk ezeket a csomagokat, hogy menjenek keresztul a fent beallitott imq0-on
iptables -t mangle -A MYSHAPER-IN -j IMQ
# vegeztunk a bejovo forgalommal
#
####################################################
echo "Inbound shaping added to $DEV. Rate: ${RATEDN}Kbit/sec."
Hígyjétek el. Rengeteg oldalt átböngésztem az iptables howoto kat a lartc.org ot és szinte az összes olyan fórumot ami ezzel foglalkozik de egyszerüen nem birom összehozni amit szeretnék.
Már több mint 6 hónapja küzdök vele :o(
A belsőhálózati DHCP servert és a SQUID ot pofon egyszerü volt összehozni.
Be is teszem ide őket , hátha ezzel segítek annak akinek erre van szüksége
DHCP3-SERVER:
ddns-update-style none;
option domain-name "local.lan";
# option domain-name-servers 62.77.203.10,213.163.34.66;
option domain-name-servers 10.0.0.1;
default-lease-time 86400;
max-lease-time 604800;
#authoritative;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
# range 10.0.0.1 10.0.0.255;
option routers 10.0.0.1;
# option broadcast-address 10.0.0.255;
}
host fischer {
hardware ethernet 00:E0:7D:FB:E7:4A;
fixed-address 10.0.0.2;
}
host leitold {
hardware ethernet 00:0E:2E:4F:80:15;
fixed-address 10.0.0.3;
}
És ime a SQUID om:
http_port 10.0.0.1:3128
icp_port 3130
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
maximum_object_size 30096 KB
minimum_object_size 1 KB
cache_dir ufs /var/spool/squid 2000 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
client_netmask 255.255.255.0
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
#hostok
acl fisher src 10.0.0.2/32
acl leitold src 10.0.0.3/32
#
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
#host
http_access allow fischer
http_access allow leitold
#
http_reply_access allow all
icp_access allow all
Köszi szépen minden segíttséget!
- 7559 megtekintés
Hozzászólások
Legyszíves zárd már a kódot "[ code ] ... [ /code ]" jelek közé!
(a szögletes zárójeleken belül ne legyen szóköz!)
- A hozzászóláshoz be kell jelentkezni
Tessék.
- A hozzászóláshoz be kell jelentkezni
Ennél egyszerűbb dolog nem lesz.
Tűzfalnak shorewall azt egyszerű állítani.
- A hozzászóláshoz be kell jelentkezni
néhány hónapja még problémák voltak bizonyos dolgokkal.
Pl hogy csak azok férhessenek hozzá a nethez akiknek jogosultságuk van
ezt a köv képp. csináltam:
iptables -A INPUT -m mac --mac-source 00:01:02:03:04:05 -s 10.0.x.x -j ACCEPT
iptables -A INPUT -i eth1 -j DROP
Jó, jó meggoldás de valahogy kevésnek tűnik.
Biztos van komolyabb megoldás is.
A másik gond a NEPTUN és az MSN MESSENGER volt-
mindent végigpróbáltam és végül a következő 2 sor beírása utánn minden működött:
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --set-mss 1452
Hogy ez mit jelent pontosan , azt nem tudom , de működik az MSN és a NEPTUN :o)
A p2p vel voltam még szörnyü nagy gondban, hogy valaki elkezdett dc++-zni vagy torrentezni akkor vége volt a netezésnek.
A sourceforge.net ről szedtem le egy ipp2p-0.8.2.tar.tar akármit aztán:
iptables -A INPUT -i ppp0 -m ipp2p --ipp2p -j DROP
iptables -A INPUT -i eth1 -m ipp2p --ipp2p -j DROP
iptables -A FORWARD -i eth1 -o ppp0 -m ipp2p --ipp2p -j DROP
iptables -v -A PREROUTING -i eth1 -t mangle -m ipp2p --ipp2p -j MARK --set-mark fuck
így oldottam meg.
Ezzel totál letiltottam a P2P -t
A probléma amivel most küzdök ,hogy ezt a markolt fuck csomagot kéne valahogy egy másik GATEAY re átlökni ,hogy azért fusson a P2P de ne ezen a vonalon hanem egy másikon.
Ha van szakértő ebben a témában az lécci írja le az ötleteit.
- A hozzászóláshoz be kell jelentkezni
Próbálkoztam én is azzal, hogy egyenlően osztozzanak a kliensek a torrentezésre kiszabott szávszélességgel. Ez működik is jól, az alábbi configgal: (layer7 patch kernelen és iptablesen)
tc qdisc del dev eth0 root &> /dev/null
tc qdisc del dev eth1 root &> /dev/null
tc qdisc add dev eth1 root handle 1: htb default 10
tc class add dev eth1 parent 1: classid 1:1 htb rate 2mbit ceil 2mbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbps ceil 100kbps
tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 handle 6 fw flowid 1:10
iptables -F -t mangle
iptables -F FORWARD
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 6
---
Viszont arra nem jöttem rá, hogy lehetne azt elérni, hogy legyen 2 csoport. Egyikbe azok tartoznak, akik 100kbps-el torrentezhetnek, a másikba pedig azok akik 200kbps-el.
tc qdisc del dev eth0 root &> /dev/null
tc qdisc del dev eth1 root &> /dev/null
tc qdisc add dev eth1 root handle 1: htb default 10
tc class add dev eth1 parent 1: classid 1:1 htb rate 2mbit ceil 2mbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 200kbps ceil 200kbps
tc class add dev eth1 parent 1:1 classid 1:30 htb rate 100kbps ceil 100kbps
tc filter add dev eth1 protocol ip parent 1:0 prio 1 handle 5 fw flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 handle 6 fw flowid 1:30
iptables -F -t mangle
iptables -F FORWARD
iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.0/28 -m layer7 --l7proto bittorrent -j MARK --set-mark 5
iptables -t mangle -A POSTROUTING -p tcp -d 192.168.1.0/28 -m layer7 --l7proto bittorrent -j MARK --set-mark 5
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 6
(az SFQ-t kivettem, hogy ne osztozzanak egyenlően)
Van valakinek ötlete?
- A hozzászóláshoz be kell jelentkezni
A megoldás ez: (csak az utolsó 3 sor helyett)
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 6
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 6
iptables -t mangle -A POSTROUTING -p tcp -s 192.168.1.0/28 -m layer7 --l7proto bittorrent -j MARK --set-mark 5
iptables -t mangle -A POSTROUTING -p tcp -d 192.168.1.0/28 -m layer7 --l7proto bittorrent -j MARK --set-mark 5
- A hozzászóláshoz be kell jelentkezni