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

ipfw и вопросы начинающего

Добавлено: 2007-07-27 18:37:15
V1talya
Стал пробовать разбираться с ipfw и сразу возникло кучу вопросов ( после iptables что-то сложновато разобраться )
Вот мой конфиг :

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

        
#### Wifi
        wifi="ath0"
        wifi_ip="192.168.168.1"
        wifi_net="192.168.168.0/29"
        wifi_mask="255.255.255.248"

        #### Local
        lif="re0"
        lif_ip="192.168.31.252"
        lif_net="192.168.0.0/19"
        lif_mask="255.255.224.0"
        lif_mac="00:15:e9:f1:cc:78"
        lif_alias_ip="10.0.200.8"

        natd_interface="re0"

        work_mac="00:50:bf:65:c5:2b"

        #### Loopback
        setup_loopback

        #### NAT
        ${fwcmd} add 50 divert natd all from ${wifi_net} to any out via ${natd_interface}
        ${fwcmd} add 55 divert natd all from any to me in via ${natd_interface}

        #### Open Port
        ${fwcmd} add 65000 allow all from any to any

        # - ICMP
        ${fwcmd} add 350 allow icmp from any to any icmptypes 0,8,11

        # - Wifi
        ${fwcmd} add 400 allow all from ${wifi_net} to me in via ${wifi}
        ${fwcmd} add 450 allow all from me to ${wifi_net} out via ${wifi}

        # - Work
        ${fwcmd} add 500 allow all from 10.0.200.1,192.168.31.251 to me MAC ${lif_mac} ${work_mac} in via ${lif}
        ${fwcmd} add 550 allow all from me to 10.0.200.1,192.168.31.251 MAC ${work_mac} ${lif_mac} out via ${lif}

По умолчание стоит deny from any to any

Если за комментировать правило "${fwcmd} add 65000 allow all from any to any"
То нечего не работает вообще... а по идеи же должны пинги работать и из сети 192.168.168.0/29 я должен спокойно заходить на свой комп, а нифига не пашет :)
Вопрос почему ? должно же по идеи работать...

Что я не так делаю ?
Что самое интересное, когда у меня стоит правило 6500 то пакеты из сети wifi_net проходят через правило wifi
а когда я убираю правило 6500 то все пакеты попадают под правило deny from any to any хотя это же правило идет последним... 65535...

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

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_FORWARD
(Вопросы растут как грибы :) )

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-27 18:52:18
Andy
Команды по порядку идут, попробуй поместить в конец deny from all to all

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-27 18:55:35
Alex Keda
добавляй в интересующие правила log и смотри логи...
так тяжело что-то сказать...

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-27 19:38:35
V1talya
ipfw show

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

00050      0        0 divert 8668 ip from 192.168.168.0/29 to any out via re0
00055  46355 42911943 divert 8668 ip from any to me in via re0
00100      0        0 allow ip from any to any via lo0
00200      0        0 deny ip from any to 127.0.0.0/8
00300      0        0 deny ip from 127.0.0.0/8 to any
00350      6      184 allow icmp from any to any icmptypes 0,8,11
00400      0        0 allow ip from 192.168.168.0/29 to me in via ath0
00450      0        0 allow ip from me to 192.168.168.0/29 out via ath0
00500    117    12830 allow ip from 10.0.200.1,192.168.31.251 to me MAC 00:15:e9:f1:cc:78 00:50:bf:65:c5:2b in via re0
00550    134     6079 allow ip from me to 10.0.200.1,192.168.31.251 MAC 00:50:bf:65:c5:2b 00:15:e9:f1:cc:78 out via re0
65000 215294 94084557 allow ip from any to any
65535      3       84 deny ip from any to any
Это как сейчас... по все правилам идут пакеты (00500,00550), значит правила я сделал правильно и они работают, так ?

но когда я убираю правило 65000 все перестаёт работать и пакеты уже не идут по тем правилам по которым раньше шли...

Как тут может помочь log тогда ? ( точнее чем )
(ладно бы я запрещал по портам, так нет же в тех правилах все разрешено, для этих ip )

Нечего не понимаю...

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-27 20:55:16
Alex Keda
лог напишет - какой пртокол, какой порт, какой интерфейс.
Мне это помогает понять - как правильно построить список правил.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 18:35:51
V1talya
Поставил лог на интересующие меня правила и вот что получил:

ipfw show

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

00050     0       0 divert 8668 ip from 192.168.168.0/29 to any out via re0
00055     0       0 divert 8668 ip from any to me in via re0
00100     0       0 allow ip from any to any via lo0
00200     0       0 deny ip from any to 127.0.0.0/8
00300     0       0 deny ip from 127.0.0.0/8 to any
00350     4     336 allow log logamount 10000 icmp from any to any icmptypes 0,8,11
00400     0       0 allow log logamount 10000 ip from 192.168.168.0/29 to me in via ath0
00450     2      88 allow log logamount 10000 ip from me to 192.168.168.0/29 out via ath0
00500     0       0 allow ip from 10.0.200.1,192.168.31.251 to me MAC 00:15:e9:f1:cc:78 00:50:bf:65:c5:2b in via re0
00550     0       0 allow ip from me to 10.0.200.1,192.168.31.251 MAC 00:50:bf:65:c5:2b 00:15:e9:f1:cc:78 out via re0
65535 29543 8996211 deny ip from any to any
/var/log/security

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

Jul 28 01:47:12 defaced newsyslog[593]: logfile first created
Jul 29 01:24:56 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:24:57 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:26:44 defaced kernel: ipfw: 450 Accept TCP 192.168.168.1:54407 192.168.168.3:139 out via ath0
Jul 29 01:27:00 defaced last message repeated 5 times
Jul 29 01:27:02 defaced kernel: ipfw: 450 Accept TCP 192.168.168.1:61439 192.168.168.3:445 out via ath0
Jul 29 01:28:46 defaced kernel: ipfw: 450 Accept TCP 192.168.168.1:51535 192.168.168.3:139 out via ath0
Jul 29 01:28:46 defaced kernel: ipfw: 450 Accept TCP 192.168.168.1:51258 192.168.168.3:445 out via ath0
Jul 29 01:29:27 defaced kernel: ipfw: 450 Accept TCP 192.168.168.1:62281 192.168.168.3:139 out via ath0
Jul 29 01:29:27 defaced kernel: ipfw: 450 Accept TCP 192.168.168.1:63157 192.168.168.3:445 out via ath0
Jul 29 01:29:35 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:29:38 defaced last message repeated 3 times
Только исходящие пакеты есть, а где входящие интересно ? :)
почему даже на правиле "allow log logamount 10000 icmp from any to any icmptypes 0,8,11" - нету входящий пакетов ?

Как такое вообще возможно ?
:?

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 18:56:59
Alex Keda
последовательность правил имеет значение...

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 19:01:58
dikens3
Только исходящие пакеты есть, а где входящие интересно ? :)

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

65535 29543 8996211 deny ip from any to any
Вот тут входящие, либо ответа небыло на твой запрос.
Что касается пинг, то ответ мог быть и не нулевого типа. (т.е. не входит в icmptypes 0,8,11 )

P.S. Обычно действие лог лучше указывать для всех правил с deny на этапе тестирования.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 19:07:51
V1talya
последовательность правил имеет значение...
А в моем случае она разве не правильная ?


После того как добавил правило
ipfw add allow all from any to any - в конец у меня в логах сразу пошли и входящие пакеты :)

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

Jul 29 01:34:47 defaced kernel: ipfw: 350 Accept ICMP:0.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:34:47 defaced kernel: ipfw: 350 Accept ICMP:0.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:34:47 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.3 192.168.168.1 in via ath0
Jul 29 01:34:47 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.3 192.168.168.1 in via ath0
Jul 29 01:34:47 defaced kernel: ipfw: 350 Accept ICMP:0.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:34:47 defaced kernel: ipfw: 350 Accept ICMP:0.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:34:48 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.3 192.168.168.1 in via ath0
Jul 29 01:34:48 defaced kernel: ipfw: 350 Accept ICMP:8.0 192.168.168.3 192.168.168.1 in via ath0
Jul 29 01:34:48 defaced kernel: ipfw: 350 Accept ICMP:0.0 192.168.168.1 192.168.168.3 out via ath0
Jul 29 01:34:48 defaced kernel: ipfw: 350 Accept ICMP:0.0 192.168.168.1 192.168.168.3 out via ath0
Попробую log поставить на deny all from any to any, и там посмотреть что писать будет...

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 19:12:29
dikens3
V1talya писал(а):
последовательность правил имеет значение...
А в моем случае она разве не правильная ?
Возможно неправильная, возможно некорректно написан фаер.
почему даже на правиле "allow log logamount 10000 icmp from any to any icmptypes 0,8,11" - нету входящий пакетов ?
Попробуй использовать действие count первой строкой и будет точно понятно, приходят ответы (любые) по ICMP или нет.

Правило:
count log logamount 10000 icmp from any to any
Оно не будет принимать/отбрасывать пакеты, а только считать.

http://forum.lissyara.su/viewtopic.php?f=14&t=2432

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 19:23:30
V1talya
Добавил правило

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

00320     0      0 count log logamount 10000 icmp from any to any
00350   0    0 allow log logamount 10000 icmp from any to any icmptypes 0,8,11
Опять же входящих пакетов нету... :( только исходящие...

(Что на напасть такая... )

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 19:31:32
dikens3
Ну раз их нет, значит их нет.

Вывод:
1. На компьютере получателе включен фаер и icmptypes 8 там прибивается на входе. Отключить фаер на время.
2. Пакет до получателя не доходит совсем. Искать причину.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 20:00:09
V1talya
1. Он там отключён
2. Пакет доходит ( по крайней мере он уходит ), но ответ почему-то рубиться на шлюзе... будем искать причину

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 20:32:41
Alex Keda
будь добр, оглашать полный список правил, по

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

ipfw show
ибо выдернутые из контекста парвила с собственной нумерацией - никому ни о чём не скажут.
и вообще - ставить номера правилам - это зло.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-28 22:54:17
dikens3
V1talya писал(а):2. Пакет доходит ( по крайней мере он уходит ), но ответ почему-то рубиться на шлюзе...
И какими опытным путём был получен такой вывод?
Поставь лог пакетов первой строкой.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-29 7:01:50
V1talya
и вообще - ставить номера правилам - это зло.
Почему ?

ipfw show

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

00040   0     0 divert 8667 ip from 192.168.168.0/29 to 10.0.0.0/8 out via re0
00045   0     0 divert 8667 ip from 10.0.0.0/8 to me in via re0
00050   0     0 divert 8668 ip from 192.168.168.0/29 to any out via re0
00055   0     0 divert 8668 ip from any to me in via re0
00100   0     0 allow ip from any to any via lo0
00200   0     0 deny ip from any to 127.0.0.0/8
00300   0     0 deny ip from 127.0.0.0/8 to any
00350   0     0 allow icmp from any to any icmptypes 0,8,11
00400   0     0 allow ip from 192.168.168.0/29 to me in via ath0
00450   0     0 allow ip from me to 192.168.168.0/29 out via ath0
00500   0     0 allow ip from 10.0.200.1,192.168.31.251 to me MAC 00:15:e9:f1:cc:78 00:50:bf:65:c5:2b in via re0
00550   0     0 allow ip from me to 10.0.200.1,192.168.31.251 MAC 00:50:bf:65:c5:2b 00:15:e9:f1:cc:78 out via re0
65535 709 64697 deny ip from any to any
/etc/rc.firewall

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

	#### Wifi
        wifi="ath0"
        wifi_ip="192.168.168.1"
        wifi_net="192.168.168.0/29"
        wifi_mask="255.255.255.248"

        #### Local
        lif="re0"
        lif_ip="192.168.31.252"
        lif_net="192.168.0.0/19"
        lif_mask="255.255.224.0"
        lif_mac="00:15:e9:f1:cc:78"
        lif_alias_ip="10.0.200.8"

        natd_interface="re0"

        work_mac="00:50:bf:65:c5:2b"
	
	log="log logamount 10000"
	
        #### Loopback
        setup_loopback

        #### NAT
        ${fwcmd} add 40 divert 8667 all from ${wifi_net} to 10.0.200.0/8 out via ${natd_interface}
        ${fwcmd} add 45 divert 8667 all from 10.0.200.0/8 to me in via ${natd_interface}
	
	${fwcmd} add 50 divert 8668 all from ${wifi_net} to any out via ${natd_interface}
        ${fwcmd} add 55 divert 8668 all from any to me in via ${natd_interface}

        #### Open Port
        #${fwcmd} add 65000 allow all from any to any

	# - ICMP
        ${fwcmd} add 350 allow icmp from any to any icmptypes 0,8,11

        # - Wifi
        ${fwcmd} add 400 allow all from ${wifi_net} to me in via ${wifi}
        ${fwcmd} add 450 allow all from me to ${wifi_net} out via ${wifi}

        # - Work
        ${fwcmd} add 500 allow all from 10.0.200.1,192.168.31.251 to me MAC ${lif_mac} ${work_mac} in via ${lif}
        ${fwcmd} add 550 allow all from me to 10.0.200.1,192.168.31.251 MAC ${work_mac} ${lif_mac} out via ${lif}

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-29 13:44:54
V1talya
Это что-то невероятное...

Все заработало, я просто добавил в конец ipfw add 65000 deny all from any to any

ipfw show

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

00040    0       0 divert 8667 ip from 192.168.168.0/29 to 10.0.0.0/8 out via re0
00045    0       0 divert 8667 ip from 10.0.0.0/8 to me in via re0
00050    0       0 divert 8668 ip from 192.168.168.0/29 to any out via re0
00055    0       0 divert 8668 ip from any to me in via re0
00100    0       0 allow ip from any to any via lo0
00200    0       0 deny ip from any to 127.0.0.0/8
00300    0       0 deny ip from 127.0.0.0/8 to any
00350   20    1200 allow icmp from any to any icmptypes 0,8,11
00400   60    7064 allow ip from 192.168.168.0/29 to me in via ath0
00450   48    8846 allow ip from me to 192.168.168.0/29 out via ath0
00500    0       0 allow ip from 10.0.200.1,192.168.31.251 to me MAC 00:15:e9:f1:cc:78 00:50:bf:65:c5:2b in via re0
00550    0       0 allow ip from me to 10.0.200.1,192.168.31.251 MAC 00:50:bf:65:c5:2b 00:15:e9:f1:cc:78 out via re0
65000 5364 7306039 deny log logamount 100 ip from any to any
65535  709   64697 deny ip from any to any
:)

Вот такие вот бывают чудеса... :)

Может кто-нибудь объяснит мне как такое возможно ?

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-29 13:47:23
dikens3
Никто. Ибо проблема не ясна. Handsys разве что. (Руки на тот момент были не тем концом вставлены или звёзды так совпали)
Или кабель плохой, свич гнилой, сетевуха кривая, Windows глючный, перепады питания или неисправен БП и много чего ещё.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-29 22:08:54
dvg_lab
я в свое время шизил по поводу файера и ставил жестокие правила, впускал и выпускал только то что было нужно, файрвол разрастался в километр и редактировать его через год становилось невозможно,сейчас предпочитаю ставить pf и юзать правила в 10 строк максимум... так вот с тех давних времен icmp я настраивал так:

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

${ipfw} add allow icmp from any to me icmptypes 0,3,4,11,12 in
${ipfw} add allow icmp from me to any icmptypes 3,8,12 out
${ipfw} add allow icmp from $int_net to $int_ip in recv $int_if keep-state
${ipfw} add deny log icmp from any to any
в твоих правилах очевидно что ответы имеющие тип 0,3,4,11,12 обратно не пропускаются, а запросы имеющие тип 3,8,12 уходят нормально. А заработало видимо потому, что ты где-то всетаки разрешил на вход. У меня последним правилом стоит всегда

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

${ipfw} add deny log all from any to any 
и в логах все видно что блокируецо.

ЗЫ: В pf все хорошо, но вот tcpdump для двоичных логов юзать несколько напрягает.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-30 8:45:42
Andy
V1talya писал(а):Это что-то невероятное...
Вот такие вот бывают чудеса... :)
Может кто-нибудь объяснит мне как такое возможно ?
Я попробую. Это не чудеса, прочитав хэндбук становится ясно, что последнее
правило deny from any to any. Правила следуют по порядку, а цифры,
для того, что бы можно было ссылаться на конкретное правило (если мне память
не изменяет, хотя я переводил для того, что бы не помнить :lol: ). Ну
как в basic'е:

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

10 PRINT "HELLO!"
20 GOTO 10

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-30 8:51:57
Alex Keda
вот когда строишь файрволл который ссылается - тогда они нужны.
а ему - нет.

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-31 7:31:37
V1talya
Так в том и прикол что правило то deny all from any to any - последнее всегда было...
(если смотреть через ipfw show )
Если б оно было не последним, я бы вопросы и не задавал...

Re: ipfw и вопросы начинающего

Добавлено: 2007-07-31 21:02:43
OSBoy
2 V1talya:
Ты знаешь, может быть я параноик, но я почему-то сразу обратил внимание на строки:

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

lif="re0"
и

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

natd_interface="re0"
Во-первых, кажется, вторая строка здесь абсолютно лишняя - можно было вполне обойтись одной, а во-вторых, мне почему-то кажется, что ты добавил строку natd_interface в конфиг ipfw, вместо того, чтобы добавить её в /etc/rc.conf ! :)
Да, и кстати, значение net.inet.ip.fw.one_pass у тебя 0 или 1?
Ну и правила, я бы на твоём месте всё-таки расставил в порядке номеров... :roll:
Да, и ещё, не мог ты объяснить по-подробнее, что-куда собственно разруливаешь?

Re: ipfw и вопросы начинающего

Добавлено: 2007-08-01 3:20:25
V1talya

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

natd_interface="re0"
Мне так удобней... :)
Да, и кстати, значение net.inet.ip.fw.one_pass у тебя 0 или 1?
Хз... вечером посмотрю

Re: ipfw и вопросы начинающего

Добавлено: 2007-08-01 10:53:51
V1talya
sysctl -a | grep net.inet.ip.fw.one

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

net.inet.ip.fw.one_pass: 1