Собираем библиотеки и сам IPFW:
cd /usr/src/lib/libalias
make -DIPFW2 && make install
cd /usr/src/sbin/ipfw
make -DIPFW2 && make install
Пересобираем ядро с "options IPFW2" и опциями по вкусу:
options IPFIREWALL #firewall
options IPFIREWALL_VERBOSE #enable logging to syslogd(8)
options IPFIREWALL_FORWARD #enable transparent proxy support
options IPFIREWALL_VERBOSE_LIMIT=100 #limit verbosity
options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default
options DUMMYNET
options IPFW2
Делаем reboot и проверяем например командой "ipfw show"URL:
Обсуждается: http://www.opennet.me/tips/info/591.shtml
Кратко красиво и понятно. Я так и сделал. У меня FreeBSD 4.7 и ipfw работал тот, который по-умолчанию. Я перешел на ipfw2. Новый синтасис правил появился
ipfw add allow ip from { 1.2.3.4 or 5.6.7.8 } to any
это хорошо, а вот
ipfw add allow ip from 1.2.3.4/24{138,55,78} to any
не проходит и все тут.
Что я не правильно делаю?;))
Буду благодарен за помощь
Я не пробовал, но наверное делается так (цитата из мануала IPFW)
goodguys="{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11} }"
badguys="10.1.2.0/24{8,38,60}"ipfw add allow ip from ${goodguys} to any
ipfw add deny ip from ${badguys} to anyВ мануале не написанно куда пихать этих гудгаев и бэдгаев, мне опять таки кажьется (автор мануала наверное надеялся на сообразительность читателей) в rc.firewall или можно в отдельный файл например iprange а потом в rc.conf-е записать firewall_script="/etc/ipgange"
а если делать по примеру?
ipfw add allow ip from "1.2.3.4/24{138,55,78}" to any
все работает.
В 4.7 ни у кого не работает, в 4.8 - OK.
У меня на FreeBSD 4.9 и 4.8 не сработало
ipfw add allow ip from 1.2.3.4/24{138,55,78} to any
А как я писал чуть выше так не пробовали?
А на 5.х по умолчанию ipfw2 cтоит?
да, по умолчанию
Честно говоря не успел еще на 5.X -ах посмотреть.
У меня freebsd 4.8, а не работает
не смешите... :-)
Совсем с ума сошли.... Читаем внимательно доку, на котору ссылка в man ipfw есть.
В /etc/make.conf:
IPFW2=true
и make installworld
Вот что забыли....
угу, забыли. Читаем еще внимательнее доку (man ipfw, FreeBSD 4.10):
USING IPFW2 IN FreeBSD-STABLE
ipfw2 is standard in FreeBSD CURRENT, whereas FreeBSD STABLE still uses ipfw1 unless the kernel is compiled with options IPFW2, and /sbin/ipfw and /usr/lib/libalias are recompiled with -DIPFW2 and reinstalled (the same effect can be achieved by adding IPFW2=TRUE to /etc/make.conf before a buildworld).
Т.е. в 5.2 и далее в ядре вообще ничего писать не надо или как?
cd /usr/src/sbin/ipfw
make -DIPFW2 && make installв этом месте грабли:
"...
ipfw2.c:3681: `a' undeclared (first use in this function)
ipfw2.c:3682: `l' undeclared (first use in this function)
ipfw2.c:3683: `IP_FW_TABLE_GETSIZE' undeclared (first use in this function)
ipfw2.c:3685: `ipfw_table_entry' undeclared (first use in this function)
ipfw2.c:3690: `IP_FW_TABLE_LIST' undeclared (first use in this function)
*** Error code 1Stop in /usr/src/sbin/ipfw."
p.s. FreeBSD 4.11
В 5.3 не хочет компилить )
(cd /usr/src/lib/libalias ; make -DIPFW2 && make install)
Ругается на дефолтные пути. Но, раз изначально уже все есть, то это особо и не надо.
делаем сначала ядро с options IPFW2потом
#cd /usr/src/sbin/ipfw
#make -DIPFW2 && make install
#cd /usr/src/lib/libalias
#make -DIPFW2 && make install
#reboot100% работает
проверено на бсд 4.8 - 4.11
пробовал на 5.2, 5.4, 6.0 - options IPFW2 неизвестна. Ругается. Что я делаю не так?
Корректная запись выглядит в 5 и 6 как
options IPFIREWALL
а не
options IPFW2
Ну тогда похоже IPFW1 устанавливается, потому что все новые возможности не срабатывают. Пишет, что либо неправильный IP либо еще чего. Кстати, как проверить, какая именно версия установлена?
Грабли нашлись - все дело в шелле. В csh команда напрмиер ipfw add <number> allow ip from 192.168.0.0/24{1,5-10,20} to <куда-нибудь> не отрабатывает, а если переключиться на sh или bash, то идет на ура :)
FreeBSD 4.11 Все 100% работает .
>FreeBSD 4.11 Все 100% работает .
Вот у меня тоже 4.11. Проделал все выше описанные действия, все отлично заинсталилось и с ядром никаких проблем не было. После перезагрузки IPFW2 поднялся, но вот только достучатся до сервера уже нельзя. С сервака делаешь ping , в ответ ошибка
ping: sendto: No buffer space available
Погуглил немного, понял что это типа баг, и фиксить нужно каким-то патчем. Может кто знает что за патч такой и где взять его?
su-2.05b# make buildkernel KERNCONF=DB--------------------------------------------------------------
>>> Kernel build for DB started on Thu Mar 15 19:43:23 UTC 2007
--------------------------------------------------------------
===> DB
mkdir -p /usr/obj/usr/src/sys--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
cd /usr/src/sys/i386/conf; PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin config -d /usr/obj/usr/src/sys/DB /usr/src/sys/i386/conf/DB
/usr/src/sys/i386/conf/DB: unknown option "IPFW2"
*** Error code 1Stop in /usr/src.
*** Error code 1Stop in /usr/src.
Вот такая фот фигня =)