OpenBSD PF :: QoS, Traffic Managment and AAA Gateway

Михаил Пунов

Howto to control and managment network flows in blowfish boxes ... ;-)

Теми

Увод

QoS – Качество на услугите

Управление на трафика

AAA Gateway – начин за реализация на билинг с OpenBSD PF и RADIUS

Заключение и въпроси

Увод

Малко история и факти около проекта PF и OpenBSD

Едни от целите които преследва OpenBSD чрез проекти като PF, CARP, Bridge, OpenBGP и OpenOSPF

Обобщен преглед конвенционалните въз-можности на филтъра :: macro; list; table; options; rules; nat; redirect; anchor ::

QoS – Качество на услугите

Що е то “Нормализация” на трафика и какви са ни целите.

scrub in ...

min-ttl, max-mss, no-df, random-id,

fragment crop, fragment drop-ovl,

fragment reassemble* (*default),

reassemble tcp

Практически примери:

scrub in on $wifi_if fragment crop

scrub in on $lan_if min-ttl 5

scrub in on $vpn_if max-mss 1240

QoS – Качество на услугите

Лимитиране, приоритизиране, стратегия и управление и на опашките (queues)

altq on $iface hfsc bandwidth 10Mb { ... }

queue client1 bandwidth 5Mb hfsc(realtime 1Mb, upperlimit 7Mb)

Практически примери:

altq on $iface hfsc bandwidth 10Mb { dfl, TCP_ACK, client1 }

queue dfl bandwidth 2Mb hfsc(default)

queue TCP_ACK bandwidth 1Mb priority 5 hfsc(realtime 640Kb)

queue client1 bandwidth 5Mb hfsc(upperlimit 7Mb) { int, bg }

queue int bandwidth 1Mb hfsc(upperlimit 1Mb)

queue bg bandwidth 55%

QoS – Качество на услугите

Правилното селектиране на мрежови трафик и разпределянето му в конкретни опашки

block on $ext

pass in on $ext tos 0x10 tagged INTERNET keep state

block on $if

pass in on $if from $client1 queue(ext_if_client1) keep state

pass out on $if to $client1 queue(bg_if_client1) keep state

pass out on $if to $client1 tag INTERNET queue(int_if_client1) keep state

Управление на трафика

Подобряване на пропусквателната спо-собност на филтъра

set optimization aggressive (normal*, conservative, high-latency)

set skip on lo0

... keep state

Контрол по атрибути от хедъра на пакет

... flags S/SA (FSRPAUWE)

... allow-opts

Управление на трафика

SYN прокси или още един начин да предпазин други машини зад филтъра

... synproxy state

Квоти по адреси (Host) и връзки (connection)

... (max 100, source-track rule, max-src-nodes 50, max-src-states 4)

Автоматично блокиране при препълване на квота

table <abusive_hosts> persist

block in quick from <abusive_hosts>

... (max-src-conn 100, max-src-conn-rate 20/5, overload <abusive_hosts> flush)

Управление на трафика

Балансиране на трафика чрез PF

nat on $ext1 from $lan -> ($ext1)

nat on $ext2 from $lan -> ($ext2)

...

block in

block out

...

pass out on $int to $lan keep state

pass in quick on $int from $lan to $int keep state

pass in on $int route-to { ($ext1 $ext1_gw), route-to ($ext2 $ext2_gw) } round-robin from $lan keep state

...

pass out on $ext1 keep state

pass out on $ext2 keep state

...

pass out on $ext1 route-to ($ext2 $ext2_gw) from $ext2

pass out on $ext2 route-to ($ext1 $ext1_gw) from $ext1

AAA Gateway

Цел на задачата, какво представлява authpf като продукт и какво е нужно на клиентската станция за работа

Пътища и зависимости към файлове

/etc/authpf

authpf.conf

authpf.rules* (*global)

authpf.message

authpf.problem

/etc/authpf/users/$USER/authpf.rules

/etc/authpf/banned/$USER

AAA Gateway

Допълнителни настроики на sshd, login и потребителски клас на достъп

sshd_config :: Protocol 2; UseLogin yes; ClientAliveInterval 15; ClientAliveCountMax 3

username :: useradd -g authpf -c “Real Name” -d /etc/authpf/users/client1 -s /usr/sbin/authpf -L authpf client1

login.conf :: auth-radius:\

:radius-server=127.0.0.1:\

:radius-timeout=10:\

:radius-retries=3:

authpf:\

:welcome=/etc/authpf/motd:\

:shell=/usr/sbin/authpf:\

tc=default:\

tc=auth-radius:

/etc/raddb/servers :: 127.0.0.1 Gargamel

<server> <secret>

Заключение и въпроси

Заключение на всичко казано до тук

Въпроси ??? :-)

Довиждане ... shutdown -p +0

2005-10-26T17:25:06