Jump to content
Калькуляторы

pf(как нат)+ipfw(как firewall) на FreeBSD

нормально ли работает ?

у кого есть опыт ?

раньше пробовали использовать связку: ipnat(ipfilter)+ipfw

при большой нагрузке системы стали виснуть (4.10,5.2.1,5.3) на разном железе.

Использовать только pf - проблематично.

Всеже интересует subj

Share this post


Link to post
Share on other sites

у меня была похожая проблема

вылечилось так:

net.inet.ipf.fr_icmptimeout=35

net.inet.ipf.fr_udptimeout=90

net.inet.ipf.fr_tcphalfclosed=300

net.inet.ipf.fr_tcpclosed=60

net.inet.ipf.fr_tcptimeout=240

net.inet.ipf.fr_tcplastack=120

net.inet.ipf.fr_tcpclosewait=120

net.inet.ipf.fr_tcpidletimeout=7200

net.inet.ipf.fr_defnatage=300

Share this post


Link to post
Share on other sites
Guest

а ээ... использовать ipfw как nat религия не позволяет ???

Share this post


Link to post
Share on other sites

А мне вот интерестно если фключить оба фильтра, то в какой фильтр попадёт пакет с начала?

Share this post


Link to post
Share on other sites
А мне вот интерестно если фключить оба фильтра, то в какой фильтр попадёт пакет с начала?

interface in->bpf->ipnat->ipfilter->ipfw->pkt

pkt->ipfilter->ipnat->ipfw->bpf->interface out

 

pf - будет работать на тоже уровне что и ipfilter

 

у меня была похожая проблема

вылечилось так:

net.inet.ipf.fr_icmptimeout=35

net.inet.ipf.fr_udptimeout=90

net.inet.ipf.fr_tcphalfclosed=300

net.inet.ipf.fr_tcpclosed=60

net.inet.ipf.fr_tcptimeout=240

net.inet.ipf.fr_tcplastack=120

net.inet.ipf.fr_tcpclosewait=120

net.inet.ipf.fr_tcpidletimeout=7200

net.inet.ipf.fr_defnatage=300

даже лечить не стали. Через машинки ходил большой трафик. ipnat быстро удалили, поставив natd. Загрузка проца вырасла с 5-10% до 45-50% =))

ipfilter на FreeBSD - теперь даже ставить боюсь

Share this post


Link to post
Share on other sites
даже лечить не стали. Через машинки ходил большой трафик. ipnat быстро удалили, поставив natd. Загрузка проца вырасла с 5-10% до 45-50% =))

ipfilter на FreeBSD - теперь даже ставить боюсь

как говорится, смерть пациента наступила в результате вскрытия

Share this post


Link to post
Share on other sites

А тестировать на нагрузку сейчас не модно ? сразу ставим все в продакшин ? :-)

Share this post


Link to post
Share on other sites

особенно радуют термины "ходил большой трафик" и "загрузка проца вырасла с X до Y"

без указания траффика и проца :-)

Share this post


Link to post
Share on other sites

ipnat согнется когда будет сесий >20k будет дропать пакеты

natd похоронит машину еще быстрее (userland)

щас гоняем nat от pf в среднем от 40k до 80к записей полет нормальный...

в pf.conf: set optimization aggressive и

обязательно нужно включать polling, без него машинка загнется от interrupt

Share this post


Link to post
Share on other sites
нормально ли работает ?

у кого есть опыт ?

раньше пробовали использовать связку: ipnat(ipfilter)+ipfw

при большой нагрузке системы стали виснуть (4.10,5.2.1,5.3) на разном железе.

Использовать только pf - проблематично.

Всеже интересует subj

 

Без проблем, ipfw и pf работают вместе. От pf я использую только NAT. В тонкости настройки я не вдавался, но у меня для входящиxе пакеты попадают в первую очередь в ipfw, затем в pf, ну и для исходящих соответственно наоборот.

Share this post


Link to post
Share on other sites

ОК

У нас 2 дня - тоже полет нормальный

pf.conf

no nat on em0 from any to 10.0.0.0/8

no nat on em0 from any to 172.16.0.0/12

no nat on em0 from any to 192.168.0.0/24

nat on em0 from 10.68.0.0/16 to any -> xxx.xxx.xxx.xxx/31 source-hash

 

Сейчас думаю переписать правила на роутерах под pf.

Share this post


Link to post
Share on other sites
ipnat согнется когда будет сесий >20k будет дропать пакеты  

 

Настраивать не пробовали ? :-)

Share this post


Link to post
Share on other sites

пробовали :)

правились исходники (увеличивался размер таблиц)

c pf все намного проще и стабильнее:

set limit { states 1000000, frags 5000 } # с запасом на флуд

и уже около года про нат не вспоминаю...

Share this post


Link to post
Share on other sites
пробовали :)

правились исходники (увеличивался размер таблиц)

c pf все намного проще и стабильнее:

set limit { states 1000000, frags 5000 }  # с запасом на флуд

и уже около года про нат не вспоминаю...

 

А какое среднее количество открытых сессий на каждого

пользователя в пике считается нормальным ? :-)

Скажем при 5000 одновременно работающих юзерах?

Share this post


Link to post
Share on other sites

текущий поток 100мбит/с и примерно ~4k online пользователей

State Table Total Rate

current entries 42334

 

Получается на 1 лицо в среднем 10 записей

при set optimization aggressive

Share this post


Link to post
Share on other sites

Ну это и ipnat вполне потянет, при нормальных таймаутах :-)

 

Вообще странно, у меня current entries 41434... может это pfctl врет ?

Share this post


Link to post
Share on other sites

Уважаемый вы это о чем???

Ну это и ipnat вполне потянет, при нормальных таймаутах :-)

 

Вообще странно, у меня current entries 41434... может это pfctl врет ?

pfctl -- control the packet filter (PF) and network address translation (NAT) device. Оно никак не связано с ipnat :))))))

 

Под ночь поток возрастает почти в 2 раза... а это уже ~80k и почти 200мбит/с

Работает ipnat пользуйтесь наздоровье :)

Share this post


Link to post
Share on other sites

P.S Если кто подскажет аппаратную замену на такие нагрузки стоимостью в

районе 20k $ скажу спасибо. :)

Пока рассматривается Джуниор 7i

Share this post


Link to post
Share on other sites
Уважаемый вы это о чем???
Ну это и ipnat вполне потянет, при нормальных таймаутах :-)

Вообще странно, у меня current entries 41434... может это pfctl врет ?

pfctl -- control the packet filter (PF) and network address translation (NAT) device. Оно никак не связано с ipnat :))))))

 

Под ночь поток возрастает почти в 2 раза... а это уже ~80k и почти 200мбит/с

Работает ipnat пользуйтесь наздоровье :)

 

Ну у меня и ipnat есть и pf, и ipfw, вот там где pf - там поток поменьше

чем 100Mbit/s был, когда я смотрел. Да и процессор там какой-то

Celeron2400. ;-)

 

А замена аппаратная мне не нужна, все на флешках. :-)

За $20k - это можно все еще и зарезервировать и отбалансировать

раз десять.

Share this post


Link to post
Share on other sites

а не поскажете:

 

1)какие таймауты ставить для ipnat-а чтобы выдерживать большие нагрузки ?

 

2) кто как гоняет фтп трафик при нате посредством pf ? через inetd ?

Share this post


Link to post
Share on other sites
а не поскажете:

1)какие таймауты ставить для ipnat-а чтобы выдерживать большие нагрузки ?

2) кто как гоняет фтп трафик при нате посредством pf ? через inetd ?

по первому пункту: читайте man pf, man pf.conf - там optimization aggressive расписан должен быть по параметрам, можете выдрать значения оттуда.

по второму: был pure-ftpd, с inetd заморачиваться не стали, работал сам от себя (+ pf->nat)

Share this post


Link to post
Share on other sites

а не поскажете:

1)какие таймауты ставить для ipnat-а чтобы выдерживать большие нагрузки ?

2) кто как гоняет фтп трафик при нате посредством pf ? через inetd ?

по первому пункту: читайте man pf, man pf.conf - там optimization aggressive расписан должен быть по параметрам, можете выдрать значения оттуда.

по второму: был pure-ftpd, с inetd заморачиваться не стали, работал сам от себя (+ pf->nat)

 

по первому пункту я про ipnat спрашиваю а не про pf %)

 

а по второму - не про "свой" ftp а про все ftp в инете Ж)

Share this post


Link to post
Share on other sites

В таком случае марш читать man inetd (хотя бы в части его функционального предназначения), а то, глядишь, предложите HTTP-контент при помощи cron'а генерить и отдавать.

 

"По первому же вопросу" - можете не читать и тупо перебирать... Думаю, за годик, оптимальное подберёте.

Share this post


Link to post
Share on other sites
можете не читать и тупо перебирать... Думаю, за годик, оптимальное подберёте.

я вижу ты очень умный

Share this post


Link to post
Share on other sites

А никто с таким не встречался:

 

Длииинный ipfw, коротенький pf только для nat.

 

На внешнем интерфейсе (только на нем включен pf, на остальных стоит set skip <interface>, теряются пакеты, причем tcpdump видит, например входящие, а ответные сервер уже не посылает. Стоит optimization aggressive, 3 правила no nat, потом 3 правила nat. Когда откатываюсь на natd - потери уходят, возврат на pf опять приводит к потерям.

 

Машинка Xeon 2.4 dual core, карточки em* на pci-express, Free-BSD (ядро amd64 с поддержкой SMP)

 

Нагрузка на нат прямо сейчас:

State Table Total Rate

current entries 2348

searches 35302083788 25522.5/s

inserts 59620559 43.1/s

removals 59618211 43.1/s

Counters

match 31512966696 22783.1/s

bad-offset 0 0.0/s

fragment 450 0.0/s

short 20 0.0/s

normalize 0 0.0/s

memory 1993988 1.4/s

bad-timestamp 0 0.0/s

congestion 0 0.0/s

ip-option 0 0.0/s

proto-cksum 0 0.0/s

state-mismatch 582898 0.4/s

state-insert 0 0.0/s

state-limit 0 0.0/s

src-limit 0 0.0/s

synproxy 0 0.0/s

 

 

Нагрузка вечером раза в 3 выше.

 

Еще на гейте mpd в качестве VPN-терминатора, 400-500 пользователей. Для максирования прерываний стоят dev.em.*.*x.delay порядка 1000. Отключение оного картину не влияет, только проц прерываниями грузится активнее.

 

Помогите, куда рыть? Потери только на интерфейсе, на котором нат, причем даже на трафике, который в сам нат не попадает.

Edited by CoMax

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this