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