Автоматическая нумерация правил IPFW

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kase666
проходил мимо
Сообщения: 6
Зарегистрирован: 2010-05-30 7:10:56

Автоматическая нумерация правил IPFW

Непрочитанное сообщение kase666 » 2011-04-20 9:22:38

Как таковой проблемы нет. Просто интересно, что скажут профи.
freebsd 8.2
есть файл с правилами ipfw
правила не пронумерованы
конфиг типа:

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

#!/bin/sh
fw="/sbin/ipfw -q"
intif="vr0"
extif="alc0"
intip="192.168.26.111"
extip="10.10.10.10"
intnet="192.168.26.0/24"
..................и т.д
${fw} add check-state
${fw} add allow ip from any to any via lo0
${fw} add divert natd all from any to any out via ${extif}
${fw} add divert natd all from any to ${extip} same_ports log in via ${extif}
${fw} add allow tcp from any to any established
${fw} add allow tcp from any to 10.10.10.20 8000-9200 out via ${extif}
${fw} add allow tcp from 10.10.10.20 to any in via ${extif}
${fw} add allow tcp from any to $mail1 25,110 out via ${extif}
................... и т.д.

путь к файлу правил в rc.conf правильный

при запуске скрипта ручками все правила загоняются в ipfw и нормально отрабатывают
нумерация происходит автоматически 100 200 300 400 500 600 и т.д.
при ПЕРЕЗАГРУЗКЕ маршрутизатора правила нумеруются
100 200 300 400 1000 1100 и т.д.
правила между 400 и 1000 куда-то таинственным образом исчезают

проблемка частично решена нумурацией правил в обход диапазона 400-1000
просто интересно... что не так-то?

синтаксис правил и форматирование проверены ошибок нет...
Последний раз редактировалось f_andrey 2011-04-20 10:26:34, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения. приводите полную диагностику, больше логов больше вероятности ответа, а не флуда

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение Alex Keda » 2011-04-20 20:50:15

конфиги и листинги нормаьные показывайте.
а не обрубки
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ADRE
майор
Сообщения: 2645
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение ADRE » 2011-04-21 1:54:31

ошибки может в этих правилах
//del

Аватара пользователя
kase666
проходил мимо
Сообщения: 6
Зарегистрирован: 2010-05-30 7:10:56

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение kase666 » 2011-04-21 6:41:59

uname -a

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

FreeBSD router.localhost.com 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Mar 31 15:19:05 UTC 2011     
root@localhost.com:/usr/obj/usr/src/sys/KASE666  i386
kernel KASE666

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

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=1000
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET

/etc/rc.conf

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

defaultrouter="100.29.65.1"
hostname="router.localhost.com"
ifconfig_alc0="inet 100.29.65.65  netmask 255.255.255.0"
ifconfig_vr0="inet 192.168.3.111 netmask 255.255.255.0"
cloned_interfaces="tap0 bridge0"
ifconfig_bridge0="addm alc0 addm tap0 up"
gateway_enable="YES"
named_enable="YES"
sshd_enable="YES"
natd_enable="YES"
natd_interface="alc0"
natd_flags="-m -u -s -dynamic -punch_fw 500:499"
dummynet_enable="YES"
static_routes="net1 net2 net3 net4 net5 net6 net7"
route_net1="-net 192.168.27.0/24 192.168.3.27"
route_net2="-net 192.168.21.0/24 192.168.3.21"
route_net3="-net 192.168.22.0/24 192.168.3.22"
route_net4="-net 192.168.23.0/24 192.168.3.23"
route_net5="-net 192.168.24.0/24 192.168.3.24"
route_net6="-net 192.168.25.0/24 192.168.3.25"
route_net7="-net 192.168.26.0/24 192.168.3.26"
firewall_enable="YES"
firewall_script="/etc/kase.fw"
скрипт правил IPFW /etc/kase.fw

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

#!/bin/sh
fw="/sbin/ipfw -q"
br="bridge0"
tp="tap0"
intif="vr0"
extif="alc0"
intip="192.168.3.111"
extip="100.29.65.65"
intnet="192.168.3.0/24"
ki="100.29.65.2"
drweb="100.29.65.66"
mail1="10.10.10.10"
proxy_ast="10.10.16.16"
proxy_kust="10.10.16.18"

${fw} -f flush

#HOSTS ALLOW

${fw} table 1 add 100.29.65.66
${fw} table 1 add 100.29.65.67
${fw} table 1 add 10.10.10.11
${fw} table 1 add 10.10.10.15
${fw} table 1 add 10.10.10.25
${fw} table 1 add 10.10.30.0/24


#RULES FIREWALL

${fw} add check-state
${fw} add allow ip from any to any via lo0
${fw} add divert natd all from any to any
${fw} add allow tcp from any to me 22 out via ${extif}
${fw} add allow tcp from me to "table(1)" in via ${extif}
${fw} add allow tcp from any to $ki 8999-9999 out via ${extif}
${fw} add allow tcp from $ki to any in via ${extif}
${fw} add allow tcp from any to $mail1 25,110 out via ${extif}
${fw} add allow tcp from $mail1 to any in via ${extif}
${fw} add allow tcp from any to "table(1)" out via ${extif}
${fw} add allow tcp from "table(1)" to any in via ${extif}
${fw} add allow tcp from any to "table(1)" out via ${br}
${fw} add allow tcp from table\(1\) to any in via ${br}
${fw} add allow tcp from any to table\(1\) out via ${tp}
${fw} add allow tcp from table\(1\) to any in via ${tp}
${fw} add allow all from any to $drweb out via ${extif}
${fw} add allow all from $drweb to any in via ${extif}

#DNS SERVERS ALLOW
${fw} add allow udp from any to me 53 out via ${intif}
${fw} add allow udp from me to any out via ${intif}
${fw} add allow udp from any to me 53 in via ${extif}
#ICMP & LOCAL
${fw} add allow tcp from any to any via ${intif}
${fw} add allow ip from 100.29.65.65 to any out xmit ${extif}
${fw} add allow udp from any to any via ${intif}
${fw} add allow icmp from any to any icmptypes 0,3,8,11 via ${intif}
${fw} add allow icmp from any to any icmptypes 0,3,8,11 via ${extif}
${fw} add allow icmp from any to any icmptypes 0,3,8,11 out via ${br}
${fw} add allow icmp from any to any icmptypes 0,3,8,11 out via ${tp}
${fw} add allow icmp from any to any icmptypes 0,3,8,11 in via ${br}
${fw} add allow icmp from any to any icmptypes 0,3,8,11 in via ${tp}
#DENY CONNECTIONS

#${fw} add deny icmp from any to any in via ${intif}
${fw} add deny all from 172.16.0.0/12 to any in via ${intif}
${fw} add deny all from 169.254.0.0/16 to any in via ${intif}
${fw} add deny all from 192.0.2.0/24 to any in via ${intif}
${fw} add deny all from 204.152.64.0/23 to any in via ${intif}
${fw} add deny all from 224.0.0.0/3 to any in via ${intif}
${fw} add deny tcp from any to any 113 in via ${intif}
${fw} add deny tcp from any to any 137 in via ${intif}
${fw} add deny tcp from any to any 138 in via ${intif}
${fw} add deny tcp from any to any 139 in via ${intif}
${fw} add deny tcp from any to any 81 in via ${intif}
${fw} add deny tcp from any to any 113 in via ${extif}
${fw} add deny tcp from any to any 137 in via ${extif}
#${fw} add deny tcp from any to me 137 in via ${extif}
${fw} add deny tcp from any to any 138 in via ${extif}
${fw} add deny tcp from any to any 139 in via ${extif}
${fw} add deny tcp from any to any 81 in via ${extif}
${fw} add deny tcp from any 137 to any in via ${extif}
${fw} add deny tcp from any 138 to any in via ${extif}
${fw} add deny tcp from any 139 to any in via ${extif}
${fw} add deny tcp from me 137 to any in via ${extif}
${fw} add deny all from any to any frag in via ${intif}
${fw} add deny log logamount 5000 icmp from any to any frag
${fw} add deny log logamount 5000 all from any to any
${fw} add deny log logamount 5000 all from any to any out via ${intif}
${fw} add deny log logamount 5000 all from any to any in via ${extif}
выполняем скрипт в shell
/etc/kase.fw
все правила загружены и нормально отрабатывают

после перезагрузки:
ipfw list

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

000100 check-state
000200 allow ip from any to any via lo0
000300 divert 8668 ip from any to any
000400 allow tcp from any to me dst-port 22 out via alc0
001000 allow tcp from table(1) to any in via alc0
001100 allow tcp from any to table(1) out via bridge0
001200 allow tcp from table(1) to any in via bridge0
001300 allow tcp from any to table(1) out via tap0
001400 allow tcp from table(1) to any in via tap0


..........
и т.д. правила между 400 - 1000 пропадают

делаю так:
нумеруем

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

${fw} add 10 check-state
${fw} add 20 allow ip from any to any via lo0
${fw} add 30 divert natd all from any to any
${fw} add 40 allow tcp from any to me 22 out via ${extif}
${fw} add 50 allow tcp from me to "table(1)" in via ${extif}
${fw} add 60 allow tcp from any to $ki 8999-9999 out via ${extif}
${fw} add 70 allow tcp from $ki to any in via ${extif}
${fw} add 80 allow tcp from any to $mail1 25,110 out via ${extif}
${fw} add 90 allow tcp from $mail1 to any in via ${extif}
${fw} add 100 allow tcp from any to "table(1)" out via ${extif}
.................
остальные оставляем без изменений!
перегружаюсь
ipfw list

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

00010 check-state
00020 allow ip from any to any via lo0
00030 divert 8668 ip from any to any
00040 allow tcp from any to me dst-port 22 out via alc0
00050 allow tcp from me to table(1) in via alc0
00060 allow tcp from any to 100.29.65.2 dst-port 8999-9999 out via alc0
00070 allow tcp from 100.29.65.2 to any in via alc0
00080 allow tcp from any to 10.10.10.10 dst-port 25,110 out via alc0
00090 allow tcp from 10.10.10.10 to any in via alc0
00100 allow tcp from any to table(1) out via alc0
00200 allow tcp from table(1) to any in via alc0
00300 allow tcp from any to table(1) out via bridge0
00400 allow tcp from table(1) to any in via bridge0
01000 allow .......
тут пропадают следующие правила (уже другие, т.е. дело не в ошибках правил :smile: )


еще один тест
нумеруем по порядку
100
200
300
400
500
600
и т.д.

после перезагрузки от 400 до 1000 опять провал

еще вариант
нумерую от 10 до 300 потом от 1000
после ребута все правила на месте

пока так и работает...
просто интересно в чем проблема?
:st:
магический диапазон 400-1000?

Аватара пользователя
kase666
проходил мимо
Сообщения: 6
Зарегистрирован: 2010-05-30 7:10:56

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение kase666 » 2011-04-21 22:16:17

баг?

Аватара пользователя
kase666
проходил мимо
Сообщения: 6
Зарегистрирован: 2010-05-30 7:10:56

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение kase666 » 2011-04-25 21:51:46

Ребят, никто ни тестил? тема так и осталась...
другого железа нет... маршрутер рабочий, эксперименты не желательны...
на виртуалке (VirtualBox) с минимумом, собралось и работает нормально...
мож кто сталкивался? мож зависимость какая?

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение rmn » 2011-04-25 22:24:11

natd_flags="-m -u -s -dynamic -punch_fw 500:499"

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

     -punch_fw basenumber:count
                 This option directs natd to ``punch holes'' in an
                 ipfirewall(4) based firewall for FTP/IRC DCC connections.
                 This is done dynamically by installing temporary firewall
                 rules which allow a particular connection (and only that con-
                 nection) to go through the firewall.  The rules are removed
                 once the corresponding connection terminates.

                 A maximum of count rules starting from the rule number
                 basenumber will be used for punching firewall holes.  The
                 range will be cleared for all rules on startup.  This option
                 has no effect when the kernel is in security level 3, see
                 init(8) for more information.
вопросы?

Аватара пользователя
kase666
проходил мимо
Сообщения: 6
Зарегистрирован: 2010-05-30 7:10:56

Re: Автоматическая нумерация правил IPFW

Непрочитанное сообщение kase666 » 2011-04-26 11:11:57

млин... забыл совсем...
спасибо! нужно иногда разувать глаза... :smile: