PF+ALTQ абстрактный вопрос

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
sima
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-01-12 17:43:02

PF+ALTQ абстрактный вопрос

Непрочитанное сообщение sima » 2009-01-12 18:02:08

Уважаемые гуру, есть задача сделать шейпинг со следующими параметрами:
во время конкурирующего использования канала офис 1 имеет более высокий приоритет и 70% канала, офис2 соответственно 30% и более низкий.
Если канал не используется одним из офисов, то другой может пользоваться всей пропускной способностью. Канал 512 килобит.
Я набросала такие правила:

Код: Выделить всё

altq on $vpn_if cbq bandwidth 500Kb queue \
 { qffice1, qoffice2 }
queue qffice1 bandwidth 70% priority 3 cbq ( default borrow )
queue qoffice2 bandwidth 30% priority 2 cbq ( borrow )
К сожалению протестировать это я не могу, поскольку офисов как таковых ещё нет, но нужно к их появлению что-бы работало все и сразу.

Больше никаких строчек относящихся к шейпингу в конфиге нету.
Пожалуйста покажите если я где ошиблась.
И ещё такой вопрос: Как поведет себя шейпинг при условии что офисы натятся средствами pf, ведь из ната пакеты уходят уже с подмененным адресом? Если я права, то подскажите как быть?
Схема:
офис1/24 ---|.......|
...............| гейт |---инет
офис2/28----|.......|

Заранее благодарна.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение paradox » 2009-01-12 19:45:31

К сожалению протестировать это я не могу, поскольку офисов как таковых ещё нет, но нужно к их появлению что-бы работало все и сразу.
как показывает практика
небывает таких ситуаций что нужно срочно что то поставитьс нуля и что бы работало

тоесть если у вас токо когда то появиться оффис
то время на настройку и откатку всегда будет

поэтому я бы так не волновался насчет того как это построить

зы
правила у вас не полные поскольку нет тех которые забрасывают в очередь
зызы
всегда есть виртуальные машины на которых можно откатать логику

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение iZEN » 2009-01-12 20:08:37

Вот тут есть примерчики на многие случаи из жизни PF:
http://www.lissyara.su/?id=1833
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

sima
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-01-12 17:43:02

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение sima » 2009-01-13 1:52:08

Спасибо за ответы!
2 paradox
Ситуация действительно специфичная, начальство поставило задачу что-бы к старту все было готово, потом на это не будет времени. Да и из тестовых платформ на данный момент есть только ноутбук, поэтому проблематично будет протестировать. Я читала ман, но поскольку негде применить в реальности, для меня это абстрактные слова.
Про правила постановки в очередь я поняла
если я напишу "pass quick on $vpn_if from $office1 to any queue qoffice1" после правил шейпенга, то при прохождении пакета через это правило он будет отправлен в очередь шейпенга... А вот куда он попадет после очереди? С какого правила он продолжет обрабатываться? Или есть смысл правила постановки в очередь ставить последними в списке правил?

И ещё один вопрос, я пыталась нарисовать схему прохождения пакета, получается что все пакеты попадают на шейпинг уже пройдя нат (поскольку я шейплю на внешнем интерфейсе), и имеют адресом отправителя уже адрес сервера и соответственно шейпинг не будет работать?

PS А вобще те правила которые я написала, это правильный вектор размышления, или же я копаю не туда?
2 iZEN
Спасибо, почитаю.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение paradox » 2009-01-13 2:13:53

наскоко я помню сначала правилом запихиваеться пакет в очередь а потом уже он может попадать в нат

для обычного человека это можно уточнить токо в документации
лучшая документация на openbsd.org
поскольку pf это ихнее детище))

sima
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-01-12 17:43:02

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение sima » 2009-01-14 5:10:00

Я набросала правила, если не сложно прокомментируйте пожалуйсто:

Код: Выделить всё

====#

# IF #

#====#

vpn_if="ng0"

ext_if="rl0"

int_if="nfe0"

off_if="xl0"

#=====#

# IPs #

#=====#

ext_ip="172.16.6.6"

int_ip="192.168.1.110"

vpn_srv="172.16.6.252"

off_ip="192.168.2.1"

#=====#

# NET #

#=====#

office1="192.168.1.0/24"

office2="192.168.2.0/28"

#============#

# add tables #

#============#

table <BRUTEFORCERS> persist

#=======#

# OTHER #

#=======#

allow_ports="{ 80, https, aol, ftp, ftp-data, 6667, auth, smtp, pop3, 53, 6112 }"

icmp_types="{ echoreq, unreach }"

set block-policy drop

#===================#

# normalize traffic #

#===================#

scrub in all max-mss 1496 fragment reassemble

scrub out all max-mss 1496 fragment reassemble random-id

#=======#

# SHAPE #

#=======#

altq on $vpn_if cbq bandwidth 245Kb queue \

 { qoffice1, qoffice2 }

queue qoffice1 bandwidth 70% priority 7 cbq ( borrow )

queue qoffice2 bandwidth 30% priority 2 cbq ( default borrow )

#=====#

# NAT #

#=====#

nat on $vpn_if from $office1 to any -> ($vpn_if)

nat on $vpn_if from $office2 to any port $allow_ports -> ($vpn_if)

#===============#

# Default block #

#===============#

block log all

block on $ext_if inet6 all

block in on $ext_if proto { tcp, udp } from 172.16.0.0/16 to any

block in on { $ext_if, $off_if } proto { tcp, udp } from any port { 137, 138, 139, 67 } to any

block in on { $ext_if, $off_if } proto { tcp, udp } from any to any port { 137, 138, 139, 67 }

block in log on $vpn_if inet proto icmp

#=======#

# OTHER #

#=======#

antispoof log quick for { lo0, $ext_if }

set skip on lo0

#=======#

# QUEUE #

#=======#

pass out on $vpn_if from $office1 to any queue qoffice1 modulate state

pass out on $vpn_if from $office2 to any queue qoffice2 modulate state

#==========#

# INTERNAL #

#==========#

pass in on $int_if from $office1 to $int_ip 

pass out on { $int_if, $off_if } to any

pass in on $off_if from $office2 to $off_ip

#=======#

#  SSH  #

#=======#

pass in on $vpn_if proto tcp from any to any port 23 \

    synproxy state ( max-src-conn-rate 1/60 overload <BRUTEFORCES> flush global )

#======#

# ICMP #

#======#

pass log inet proto icmp all icmp-type $icmp_types

#==========#

# EXTERNAL #

#==========#

pass quick from 10.0.1.22 to any

pass out on $vpn_if inet from any to any

#traceroute

pass out on { $ext_if, $vpn_if } inet proto udp from any to any \

		port 33433 >< 33626 keep state

#Traffic

pass in on $off_if proto { tcp, udp } from $office2 to any port $allow_ports \

	     flags S/SA keep state

pass in on $int_if from $office1 to any
При таком конфиге на тестовом стенде происходят странные вещи
Из office2 человек получает инет с любой маской подсети.
Хотя по идее должен только с маской /28
Пыталась изменить предпоследнее правило на:
pass in on $off_if:network proto { tcp, udp } from $office2 to any port $allow_ports \
flags S/SA keep state
Инет у офис2 перестаёт работать.
Уважаемые гуру, выручайте. Полноценно протестировать не могу =(
Буду крайне благодарна по любым замечаниям по этому конфигу!
PS смотрю какие пакеты блокируются с помощью tcpdump -n -e -ttt -i pflog0
иногда встречаю конструкции вида block on xxx rule 0043(MATCH)
Это я так понимаю номер правила изза которого был блокирован пакет, а как с помощью pfctl посмотреть это самое правило, не подсчитывать же в конфиге в самом деле?
В man pfctl что-то я этого не нашла. :st:

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение paradox » 2009-01-14 15:26:31

опция v verbose должна все показать и номера с собачкой в начале вида @номер_правила

sima
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-01-12 17:43:02

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение sima » 2009-01-14 16:10:27

paradox писал(а):опция v verbose должна все показать и номера с собачкой в начале вида @номер_правила
pfctl -vf /etc/pf.conf
выводит просто правила и то как переменные раскладываются на правила
вот кусок вывода:

Код: Выделить всё

scrub out all random-id max-mss 1496 fragment reassemble
nat on ng0 inet from 192.168.1.0/24 to any -> (ng0) round-robin
nat on ng0 inet from 192.168.2.0/28 to any port = http -> (ng0) round-robin
nat on ng0 inet from 192.168.2.0/28 to any port = https -> (ng0) round-robin
nat on ng0 inet from 192.168.2.0/28 to any port = aol -> (ng0) round-robin
nat on ng0 inet from 192.168.2.0/28 to any port = ftp -> (ng0) round-robin
nat on ng0 inet from 192.168.2.0/28 to any port = ftp-data -> (ng0) round-robin
nat on ng0 inet from 192.168.2.0/28 to any port = 6667 -> (ng0) round-robin
Как видите, ни номера правила, ни темболее номера блокирующих правил нету.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение paradox » 2009-01-14 16:34:25

Код: Выделить всё

pfctl -vsr -v

sima
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-01-12 17:43:02

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение sima » 2009-01-15 2:34:28

А по поводу сетей не подскажите? Почему у меня сети /20 подпадают под правила для сетей /28?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение paradox » 2009-01-15 2:44:37

а ты покажи и докажи что они попадают

а то на слово верить я немогу)

sima
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-01-12 17:43:02

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение sima » 2009-01-15 2:56:30

paradox писал(а):а ты покажи и докажи что они попадают

а то на слово верить я немогу)
Чуть выше я привела свой конфиг.
По задумке на интерфейсе 2.1 разрешена только сеть 192.168.2.0/28.
Ради эксперемента я поставила на виртуалке маску 255.255.240.0 вместо 255.255.255.240, виртуалка как имела достут в интернет, так и имеет.
Что для меня совершенно не обьяснимо.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF+ALTQ абстрактный вопрос

Непрочитанное сообщение paradox » 2009-01-15 3:05:16

это не доказательства это абстрактные выводы

логи
tcpdump'пы
выводы комманд
и прочие

тогда можно думать