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

IPFW & IPNAT

Добавлено: 2007-01-13 13:27:12
almos
Хай пипл!

Есть вопросец.
Вобщем есть сервер учета траффика, на нем бежит биллинговая система Abills.
При подключения юзера по ВПН посредством ipfw поднимаються pipe'ы.
На том же ipfw поднят nat на внешний интерфейс.
Траффик генериться порядочный по 10Гб в среднем за 12 часов. И не очень мне нравиться как ведет себя ipfw по отношению к загрузке процессора. Приблизительно 10-20% загружает проц.
Машинка - Celeron 2.53, 1Гб ОЗУ + FreeBSD 6.1-Release.
Вот подумал может заменить ipfw natd на ipnat.

После 180-го правила идут пайпы, после них НАТ.
Подскажите как мне привязать ipnat, вместо natd в моем случае, чтобы логика файрволла не нарушилась.

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

#!/bin/sh

FwCMD="/sbin/ipfw"
LanOut="rl0"
LanIn="xl0"
IpOut="10.0.1.2"
IpIn="192.168.0.1"
NetMask="24"
NetIn="192.168.0.0"

ipfw -f flush

ipfw add 10 check-state

ipfw add 20 allow ip from any to any via lo0
ipfw add 30 deny ip from any to 127.0.0.0/8
ipfw add 40 deny ip from 127.0.0.0/8 to any
ipfw add 50 deny ip from 172.16.0.0/12 in via ${LanOut}
ipfw add 60 deny ip from any to 0.0.0.0/8 in via ${LanOut}
ipfw add 70 deny ip from any to 169.254.0.0/16 in via ${LanOut}
ipfw add 80 deny icmp from any to any frag
ipfw add 90 deny icmp from any to 255.255.255.255 in via ${LanOut}
ipfw add 100 deny icmp from any to 255.255.255.255 out via ${LanOut}
ipfw add 110 deny ip from 172.16.0.0/12 to any out via ${LanOut}

ipfw add 120 allow gre from me to 192.168.0.0/24 via xl0
ipfw add 130 allow gre from 192.168.0.0/24 to me via xl0
ipfw add 140 allow tcp from 192.168.0.0/24 1723 to me via xl0
ipfw add 150 allow tcp from me to 192.168.0.0/24 1723 via xl0
ipfw add 160 allow tcp from 192.168.0.0/24 to me 80 via xl0

#ipfw add 161 allow ip from any to me 53
#ipfw add 162 allow ip from me to any 53

#ipfw add 170 skipto 190 ip from 192.168.0.234 to any out
#ipfw add 171 skipto 190 ip from 192.168.0.235 to any out
#ipfw add 180 deny ip from 192.168.0.0/24 to any via ${LanOut}

#divert
ipfw add 17000 deny ip from 192.168.0.0/24 to any via ${LanOut}

${FwCMD} add 19000 divert natd ip from any to any out xmit ${LanOut}
${FwCMD} add 20000 divert natd ip from any to 10.0.1.2

${FwCMD} add 21001 allow tcp from any to any established
${FwCMD} add 21002 allow ip from ${IpOut} to any out xmit ${LanOut}
${FwCMD} add 21003 allow udp from any 53 to any via ${LanOut}
${FwCMD} add 21004 allow udp from any to any 53 via ${LanOut}
${FwCMD} add 21005 allow tcp from any to ${IpOut} 21 via ${LanOut}
${FwCMD} add 21006 allow tcp from any to ${IpOut} 49152-65535 via ${LanOut}
${FwCMD} add 21007 allow icmp from any to any icmptypes 0,8,11
${FwCMD} add 21008 allow tcp from any to ${IpOut} 22 via ${LanOut}
${FwCMD} add 21009 allow tcp from any to any
${FwCMD} add 21010 allow udp from any to any
${FwCMD} add 21011 allow icmp from any to any
${FwCMD} add 65534 deny ip from any to any 
Заранее благодарен.

Добавлено: 2007-01-13 20:53:48
Alex Keda
у тебя ещё 90% ресурсов.
т.е. запас десятикратный - ерундой не занимайся. Оставь как есть.

Добавлено: 2007-01-13 22:11:43
zorg
Лиссяра, ты не понимаешь! :)
Мож остальные 80-90% уже заняты, например апачем, вот человек пытается высвободить хотя бы 10%!!!
Меня тока удивляет последнее правило, перед которым можно сказать почти всё разрешили!! интересно до него что-нить доходит??? :)
ТА если посмотреть так правила после установленных соединений вообще не нужны!!! :)

Добавлено: 2007-01-14 0:22:26
Alex Keda
последнее - дефолтовое.
============
тогда - чем бороться за 10% лучше поставить нормальные сетевухи, и прикупить проц пошустрей.

Добавлено: 2007-01-14 0:35:50
zorg
да это я и так понял, просто фаер как-то составлен не понятно:
нафига нужны правила начиная с 21002 по 21008???? если с 21009 следуют три которые всё разрешают????
Если этот сервак больше ничего не делает, то нафига даже менять чего-то, и так хватит!!, разве что действительно сменить сетевуху на Гигабит.

Добавлено: 2007-01-15 10:48:59
chani
Замени тогда сразу на pf + ipnat, если видешь смысл в смене ...

Добавлено: 2007-01-15 12:20:48
dikens3
Я не работал с ipnat, много раз слышал что он быстрее.
Достаточно составить правила для ipnat, логика ipfw не нарушится и останется в том же виде. Читать здесь:
http://www.sergeyka.h10.ru/fw_nat.html

И ещё, составь таблицу для блокируемых адресов и блокируй 1-м правилом, а не несколькими. Файрвол будет быстрее работать и удобочитаемее.

Вырезка из статьи:

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

ipnat_enable="YES"
ipnat_program="/sbin/ipnat -CF -f"
ipnat_rules="/etc/ipnat.rules"	
ipnat_flags=""

# NAT
#${fwcmd} -q add divert natd ip from any to any via ${LanOut}

ipnat.rules
map rl0 0/0 -> 0/32 proxy port ftp ftp/tcp
map rl0 192.168.10.0/24 -> 195.195.95.5/24 proxy port ftp ftp/tcp
map rl0 192.168.10.0/24 -> 195.195.95.5/24
P.S. Статья старенькая, возможно что ipnat работает вообще без правил divert natd .., тогда их придётся убрать вовсе.