Страница 1 из 1

SMP Firewall

Добавлено: 2010-03-04 17:37:12
vadim64
Итак, на машине CPU: Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz (2203.29-MHz 686-class CPU) и гиг DDR2 планируется шлюз с обвесами(сквид, mpd, etc).
1. Какой фаерволл эффективнее для двухядерных машин?
1a. Если IPFW то с каим натом?
2. Как дела у шейперов? DUMMYNET или ALTQ будет эввективнее в плане производительности?
У кого какое сугубо субьективное мнение?
О ссылках не мечтаю, гуглом умею пользоваться вроде. Если конечно у кого есть интересные ссылки и недалеко лежат, то скиньте в свободную минутку.

Re: SMP Firewall

Добавлено: 2010-03-04 20:53:01
vadim64
Вот terminus говорил Я бы не стал переходить на ПФ. Он не оптимизирован для SMP и скорее всего потеряете на нем в скорости. Это он откуда то взял, наверное. Никто не в курсе?

Re: SMP Firewall

Добавлено: 2010-03-04 22:50:26
terminus
http://forum.nag.ru/forum/index.php?showtopic=47497
Предыдущая схема - pf+ipfw.
pf делает фильтрацию и НАТ (на котором помимо простого заворачивания еще несколько сотен редиректов адресов)
ipfw режет скорость в обе стороны через dummynet
Результат: где-то после 50 примерно kpps в каждую сторону все начинает тормозить. При net.isr.direct=1 загрузка (tasq сетевушек) лезет до 100%, после чего начинаются дропы, к тому же не хватает времени для работы quagga и она даже рвет периодически сессию с аплинком. При net.isr.direct=0 загрузка (swi: net) близка к 100%, все сервисы самого компа работают нормально, на чем больше pps через него пытаешься прокачать - тем ниже скорость и выше дропы. Короче, бутылочное горлышко. :-)

Новая схема - ipfw
Все делает ipfw - и фильтрацию, и шейпинг, и nat через новый встроенный в него ipfw NAT, который не так давно обзавелся всем функционалом libalias'а в плане редиректов и так далее (правда, для моих полуторы сотни редиректов потребовалось править ядро, то там всего-то одну переменную поменять - размер буфера увеличить... Хотя, конечно, почему это не вынесли в sysctl - непонятно.).
Результат: более 75 kpps в каждую сторону, еще процентов 10-20 проца свободно (речь, конечно, идет о ЧНН). Стоит net.isr.direct=1, поэтому tasq сетевушек очень хорошо раскладываются на разные процы. В качестве дополнительного бонуса - отсутствие необходимости держать ftp-прокси и т.п., т.к. libalias делает это все сам, в отличие от pf. Ну и приятно, что теперь весь конфиг в одном файле и вообще...
---

Кроме того, общеизвестно, что товарищи из OpenBSD не спешат вводить в своей ОС поддержку SMP - ПФ не оптимизирован для многопоточности. Фришники его портируют, но не расширяют, как родной ipfw.

Re: SMP Firewall

Добавлено: 2010-03-04 23:00:50
vadim64
terminus! :Bravo:
Спасибо, мужик! :good:

Re: SMP Firewall

Добавлено: 2010-03-05 12:53:14
vadim64
Доброго всем времени суток
Статья http://www.lissyara.su/articles/freebsd ... /ipfw_nat/
Пример №1

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

# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any

# разрешаем все через интерфейс локальной сети
add 1040 allow ip from any to any via fxp0

# боимся непонятного
add 1050 deny ip from any to 192.168.0.0/16 in recv em0
add 1060 deny ip from 192.168.0.0/16 to any in recv em0
add 1070 deny ip from any to 172.16.0.0/12 in recv em0
add 1080 deny ip from 172.16.0.0/12 to any in recv em0
add 1090 deny ip from any to 10.0.0.0/8 in recv em0
add 10100 deny ip from 10.0.0.0/8 to any in recv em0
add 10110 deny ip from any to 169.254.0.0/16 in recv em0
add 10120 deny ip from 169.254.0.0/16 to any in recv em0

# настройка ната.
# опции переноса строк "\" надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать "проброс портов"
nat 1 config log if em0 reset same_ports deny_in redirect_port tcp 1.2.3.4:6881 6881 redirect_port udp 1.2.3.4:4444 4444 redirect_port tcp 192.168.1.24:25 25

# заварачиваем все что проходит через внешний интерфейс в нат
add 10130 nat 1 ip from any to any via em0

# боимся непонятного
add 65534 deny all from any to any
Не врубаюсь, каким правилом разрешается пинг роутером внешних хостов?

Re: SMP Firewall

Добавлено: 2010-03-05 15:24:53
terminus
а что, так не работает что ли? :unknown:

Re: SMP Firewall

Добавлено: 2010-03-05 16:38:57
vadim64
Не знаю :roll:
Но вот так

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

nat 1 config log if rl0 deny_in  unreg_only reset
# заварачиваем все что проходит через внешний интерфейс в нат
add 30030 nat 1 log ip from any to any via rl0
не работает :cry:

Оффтоп: вы с парадоксом в теме Подробное руководство по ipfw nat говорили что для статьи Подробное руководство по ipfw nat неплохо бы сделать флэшку вот этой схемы. Это актуально ещё? Её ведь по материалам статьи Вадима Гончарова делать?
Вадима Гончаров писал(а): ...Допустим, набор правил у нас такой:

ipfw add 1 deny tcp from any to any 135,445
ipfw add 2 divert 8668 all from any to any via ext0
ipfw add 3 count icmp from any to any
ipfw add 4 allow all from any to any
# в 65535 по умолчанию deny

Re: SMP Firewall

Добавлено: 2010-03-05 16:44:24
terminus
nat 1 config log if rl0 deny_in unreg_only reset
уберите unreg_only.

Re: SMP Firewall

Добавлено: 2010-03-07 10:24:11
vadim64
а вот такое вот не работает почему? где неправильно?

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

# cat /etc/rc.conf

# Created: Thu Mar  4 16:48:22 2010
keymap="ru.koi8-r"

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

defaultrouter="212.212.212.212"
ifconfig_rl0="inet 212.212.212.213 netmask 255.255.255.0"
ifconfig_rl1="inet 172.16.0.254 netmask 255.255.255.0"

gateway_enable="YES"
firewall_enable="YES"
firewall_logging="YES"
firewall_type="/etc/firewall"

# cat /etc/sysctl.conf
net.inet.ip.fw.one_pass=1
# cat /etc/firewall
add 00050 check-state

# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any

# разрешаем все через интерфейс локальной сети
add 01000 allow log ip from any to any via rl1
#add 01010 allow ip from any to me
#add 01020 allow ip from me to any

# боимся непонятного
add 01050 deny log ip from any to 192.168.0.0/16 in recv rl0
add 01060 deny log ip from 192.168.0.0/16 to any in recv rl0
add 01070 deny log ip from any to 172.16.0.0/12 in recv rl0
add 01080 deny log ip from 172.16.0.0/12 to any in recv rl0
add 01090 deny log ip from any to 10.0.0.0/8 in recv rl0
add 10100 deny log ip from 10.0.0.0/8 to any in recv rl0
add 10110 deny log ip from any to 169.254.0.0/16 in recv rl0
add 10120 deny log ip from 169.254.0.0/16 to any in recv rl0

add 10200 allow log tcp from me to any out keep-state
add 10210 allow log udp from me to any out keep-state
add 10220 allow log icmp from me to any out keep-state
add 10230 allow log tcp from any to any established#вот это беспокойство вызывает. я этим ничего не порю?

# настройка ната.
# опции redirect_port приведены для примера - как делать "проброс портов"
nat 1 config if rl0 log deny_in reset same_ports
# заварачиваем все что проходит через внешний интерфейс в нат
add 30030 nat 1 all from any to any via rl0
#

Re: SMP Firewall

Добавлено: 2010-03-07 21:07:08
vadim64
Ребус для ясельной группы сисадминов FreeBSD решён. Таким же новичкам и лентяем до манов по IPFW на заметку:
1:0 в пользу мозга и отладки)))
кароче, интересно как то неработало: пинг идёт - а соединения(80 порт к примеру) нехера. настроил логи, давай смотреть. оказывается, пинги шли нормально потому что доходили по правилам до правила ната

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

add 30030 nat 1 all from any to any via rl0
а соединения застревали тут

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

add 10230 allow log tcp from any to any established
Вот это правило убрал, вроде жалоб пока не было.