Перейти к содержимому
Калькуляторы

pf stateless rdr balancing нужна балансировка, а всё одинаковое: src/dst ip/port

входящие UDP пакеты нужно раунд-робином раскидывать по нескольким серверам,

но для пакетов с одинаковыми {src IP, src port, dst IP, dst port}

балансировки фактически не происходит, а она очень нужна.

 

можно ли с помощью pf, для конкретного правила вида:

rdr on $iniface proto udp from any to $ip port 1000 -> <servers>

сделать балансировку без отслеживания состояний?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

примерно так:

/etc/pf.conf

vpn_if="em0"
vpn_srv="10.8.0.1"
vpn_clients="10.64.0.0/11"

table <vpnservers> persist file "/etc/vpnservers"

set limit { states 100000, frags 60000, src-nodes 100000 }
set timeout { src.track 3600 }

scrub in all

# Filtering: the implicit first two rules are

pass in all no state
pass out all no state

# balancing
pass in route-to ( $vpn_if <vpnservers> ) round-robin sticky-address from $vpn_clients to $vpn_srv keep state

тут, правда, один и тот же src отроутится в один и тот же dst, но если убрать sticky-address и заменить keep state на no state, то, может быть, будет то что вы хотите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

man DSCP

 

можете написать чуть больше? а то поиск показывает только поле в заголовке пакетов, которое обычно используется для QOS.

 

root@lb03-pf:/etc # uname -a

FreeBSD lb03-pf 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Fri Jan 17 01:46:25 UTC 2014 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386

root@lb03-pf:/etc # man dscp

No manual entry for dscp

 

примерно так:

...

# balancing

pass in route-to ( $vpn_if <vpnservers> ) round-robin sticky-address from $vpn_clients to $vpn_srv keep state

[/code]

тут, правда, один и тот же src отроутится в один и тот же dst, но если убрать sticky-address и заменить keep state на no state, то, может быть, будет то что вы хотите.

 

почти подходит.

но тут есть ограничение, что сервера которые используются для балансировки должны быть next-hop, т.е. в одном сегменте с балансировщиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А погуглить? :)

 

Вкратце:

коммутатор и сервера должны уметь DSCP.

Патчи для ОС брать тут.

Изменено пользователем vlad11

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

тут есть ограничение, что сервера которые используются для балансировки должны быть next-hop, т.е. в одном сегменте с балансировщиком.

натяните туннелей =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

тут есть ограничение, что сервера которые используются для балансировки должны быть next-hop, т.е. в одном сегменте с балансировщиком.

натяните туннелей =)

 

То же решение :)

Только потом не забыть fix-mtu делать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

....

# balancing

pass in route-to ( $vpn_if <vpnservers> ) round-robin sticky-address from $vpn_clients to $vpn_srv keep state

[/code]

тут, правда, один и тот же src отроутится в один и тот же dst, но если убрать sticky-address и заменить keep state на no state, то, может быть, будет то что вы хотите.

 

Вобщем, сделал именно так, без тунелей, просто растянул Л2 сегмент.

работает именно так как хотелось.

Спасибо!

Изменено пользователем ollsanek

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.