ipfw/dummynet - FreeBSD 8.3
Lubomir Majersky
lumax at in.acompp.sk
Mon Jun 25 12:18:24 CEST 2012
Pozdravujem Vas,
na uvod:
pravidla, ktore uvadzam nizsie mi fungovali par rokov (od verzie 5.5 do
7.4). Po implementacii do verzie FreeBSD 8.3-p3 sa to sprava velmi
cudne. Rozbor/popis za pravidlami
Cast vypisu firewallu:
*****************************************************************************************
[...]
### Privatny interface
priif="em0"
prinet="192.168.1.0"
primask="255.255.255.0"
priip="192.168.1.3"
### Verejny interface
pubif="fxp0"
pubnet="X.X.X.160"
pubmask="255.255.255.248"
pubip="X.X.X.162"
[...]
[...]
##### DUMMYNET #####
# Rury, pre pocitac kde mam 100 Mbitovu linku, bez front (bez front ako
parameter)
${fwcmd} pipe 10 config bw 100MBit/s #download pre X.X.X.163
${fwcmd} pipe 20 config bw 100MBit/s #upload pre X.X.X.163
# Rury, vseobecne pre internet, s frontami (s frontami ako parameter)
${fwcmd} pipe 30 config bw 15Mbit/s #download z internetu 15 Mbit/s -
1920 KByte/s
${fwcmd} pipe 40 config bw 544Kbit/s queue 68KBytes #upload do internetu
512 Kbit/s - zamerne davam viac na 544 Kbit/s
# Podrury rury 40 pre SMTP a FTP-DATA, s frontami (s frontami ako parameter)
${fwcmd} pipe 50 config bw 416Kbit/s queue 52KBytes #upload SMTP 416 Kbit/s
${fwcmd} pipe 60 config bw 448Kbit/s queue 56KBytes #upload FTP-DATA 448
Kbit/s
# ...no, a tu uz mam zadefinovane pravidla pre rury. Vsetky e-maily z
vnutornej siete,
# tlacim do internetu maximalnou rychlostou zadanou v rure 50
${fwcmd} add 1030 pipe 50 tcp from any to any 25,465 out via ${pubif}
# Ftp-data z vnutornej siete, tlacim do internetu (okrem ...163)
maximalnou rychlostou
# zadanou v rure 60
${fwcmd} add 1040 pipe 60 tcp from any to not X.X.X.163 20,49152-65535
out via ${pubif}
# Fronty, ktore smerujem do rur pre pocitac, kde mam 100 Mbitovu linku
bez front (bez
# front ako parameter), s rovnomernym rozdelenim pasma rur podla
zdrojovej a cielovej
# IP adresy, s uplatnenim rozdelenia pasma napr. aj pri odosielani
e-mailov viacerymi
# uzivatelmi v jednom okamihu
${fwcmd} queue 10 config pipe 10 mask dst-ip 0xffffffff
${fwcmd} queue 20 config pipe 20 mask src-ip 0xffffffff
${fwcmd} add 1049 queue 20 ip from 192.168.1.0/24 to X.X.X.163 out via
${pubif}
# Fronty, ktore smerujem do rur vseobecne pre internet, s frontami (s
frontami ako
# parameter), s rovnomernym rozdelenim pasma rur podla zdrojovej a
cielovej IP adresy,
# s uplatnenim rozdelenia pasma napr. aj pri odosielani e-mailov
viacerymi uzivatelmi v
# jednom okamihu
${fwcmd} queue 30 config pipe 30 mask dst-ip 0xffffffff
${fwcmd} queue 40 config pipe 40 mask src-ip 0xffffffff queue 68KBytes
${fwcmd} add 1050 queue 40 ip from 192.168.1.0/24 to not X.X.X.163 out
via ${pubif}
##### NAT #####
${fwcmd} add 1100 divert natd ip from any to any via ${natd_interface} #NAT
# ...no, a tu samozrejme, zakonite nasleduju pravidla pre prichodze
pakety z internetu
${fwcmd} add 1149 queue 10 ip from X.X.X.163 to 192.168.1.0/24 in via
${pubif}
${fwcmd} add 1150 queue 30 ip from not X.X.X.163 to 192.168.1.0/24 in
via ${pubif}
[...]
*****************************************************************************************
SYSCTL
"net.inet.ip.fw.one_pass=0"
*****************************************************************************************
ROZBOR/POPIS:
- PC s IP adresou X.X.X.163 je susediaci pocitac, za NAT-kom pocitaca s
ip-kou X.X.X.162 na 100MBit linke, zjednodusena schema zapojenia:
---- inet - router -lan 100MBit ---- X.X.X.163
-lan 100MBit ---- X.X.X.162 ---
NAT/PrivatIP - 192.168.1.1
Ked som aplikoval vyssie uvedene pravidla na FreeBSD 8.3-p3, pakety
prestali tiect. Zacal som monitorovat tcpdump-om pakety a:
- na verejnom interface (X.X.X.162) ziadna aktivita paketov
smerujucich do internetu
- komunikacia so susednym PC X.X.X.163 OK
- SMTP smerujuce do netu OK
Kedze som tieto pravidla roky nemenil, casom cloveku ciastocne vysumi
podstata. Samozrejme, vratil som sa k man a zacal si opatovne
preluskavat, ako som to v zadani pravidiel myslel. Popritom som som
skusil upravit/modifikovat zopar parametrov, nie som si vsak isty vsetkym.
1) Odstranenie parametra 'queue' v pravidlach 'pipe' 40, 50, 60 a
ponechanie to na defaultne hodnoty (50 slotov). Po tejto zmene sa to
rozbehlo, a vyzera, ze vsetko tecie ako ma. Je vsak pravdou, ze som v
'pipe 40', zadal realnu hodnotu 512KBit/s, namiesto 544KBit/s. Nemyslim
si, ze by vyssia hodnota mala na to vplyv, kedze Upload je sice
kolisavy, ale viac ako casto mam na Uploade vacsiu rychlost nez
zmienenych 512KBit/s.
2) Zaujimavostou je vsak 'net.inet.ip.fw.one_pass=0', ktory som skusil
nastavit aj na hodnotu '1' a pakety mi tecu (zatial som sa k hlbsej
analyze nedostal, testujem/skusam priebezne). Na hodnote '0' som to mal
doteraz nastavene z toho dovodu, ze mam v PC 'X.X.X.162' dva interface
(privatny a verejny, verejny je zarovne NAT-kom) a potreboval som
zabezpecit, aby dummynet/traffic shaper fungoval pri vstupe aj vystupe.
Aspon tak to chapem z man ipfw/dummynet.
Momentalny stav je teda taky, ze mam aplikovany bod 1 s Upload
512KBit/s a pakety tecu aj pri 'net.inet.ip.fw.one_pass=0' a aj pri
hodnote '1'. Zatial riesim, aby mi to vobec tieklo, bez shapingu, a
vyzera, ze tecie. Aby shaping fungoval korektne, predpokladam, ze pri
mojom modeli (dva interface) ma byt 'net.inet.ip.fw.one_pass=0'.
No a na zaver este spomeniem rury 50 a 60, ktore vnimam ako PODRURY
RURY 40. Myslim, ze su spravne zadefinovane, ale nie som si isty
pravidlami 1030 a 1040, pretoze by som mal na na jednej strane napajat
rury na fronty a ja napajam ruru na ruru, ale zasa na druhej strane su
rury 50 a 60 podrurami rury 40.
Poprosil by som Vas, vyjadrujte sa k meritu veci. Dakujem.
Lubo M.
--
~~~~~~~~~~~~~~~~~~~~
http://LuMaX.acom.sk
~~~~~~~~~~~~~~~~~~~~
More information about the Users-l
mailing list