URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5045
[ Назад ]

Исходное сообщение
"Не срабатывают правила с указанием интерфейса"

Отправлено Isuaven , 12-Июн-12 02:12 
FreeBSD 8.2, пытаюсь разобраться в настройке IPFW + IPFW_NAT.
Было дано: простой stateless фаер с конфигом
#!/bin/sh
ipfw -q -f flush
cmd="ipfw -q add"
pif="bfe0"
$cmd allow all from any to any via lo0
ipfw nat 1 config log if $pif reset same_ports deny_in
$cmd nat 1 ip from any to any via $pif
$cmd 65000 allow ip from any to any

Все супер, последнее правило как и должно пропускает все пакеты. Потом перед ним я добавил правила:
$cmd allow tcp from any to any 80 in via $pif established
$cmd allow tcp from any to any 80 out via $pif setup

чтобы http трафик шел через них. Но нифига не заработало к моему удивлению, ipfw show показывает по нулям при хождении по сайтам:
00200 355 50941 nat 1 ip from any to any via bfe0
00210   0     0 allow tcp from any to any dst-port 80 in via bfe0 established
00240   0     0 allow tcp from any to any dst-port 80 out via bfe0 setup
65000 359 51058 allow ip from any to any

Вроде ничего сложного, делал все вдумчиво по документациям, не понимаю почему не работает.
При этом если из добавленных строк убрать параметры "in via bfe0" и "out via bfe0" (ну и перегрузить правила конечно), то правила начинают срабатывать!
Если убирать только in/out то как и в начале, прохождений по правилам нет.
Если убирать только via bfe0 то появляются прохождения по первому правилу(с established)появляются, по второму так же по нулям.

Подскажите пожалуйста начинающему, в чем у меня ошибка?


Содержание

Сообщения в этом обсуждении
"Не срабатывают правила с указанием интерфейса"
Отправлено PavelR , 12-Июн-12 07:27 
> FreeBSD 8.2, пытаюсь разобраться в настройке IPFW + IPFW_NAT.
> Было дано: простой stateless фаер с конфигом
> чтобы http трафик шел через них. Но нифига не заработало к моему
> удивлению, ipfw show показывает по нулям при хождении по сайтам:

я что-то не понял, это рутер или отдельный хост ?
какой интерфейс внутренний, а какой внешний ?


> Вроде ничего сложного, делал все вдумчиво по документациям, не понимаю почему не
> работает.

Надо повысить вдумчивость.
учитывайте, что:

- каждый пакет проходит файрволл два раза, на входе в рутер и на выходе из рутера (для транзита) (указано в мане)
- для соединения пакеты есть двух направлений, "туда" и "обратно".
- есть такая штука, как one_pass (посмотрите в man ipfw).

> При этом если из добавленных строк убрать параметры "in via bfe0" и
> "out via bfe0" (ну и перегрузить правила конечно), то правила начинают
> срабатывать!
> Если убирать только in/out то как и в начале, прохождений по правилам
> нет.
> Если убирать только via bfe0 то появляются прохождения по первому правилу(с established)появляются,
> по второму так же по нулям.

Уточните, что это за тип хоста, а то высчитывать сходу не получилось ;-)

> Подскажите пожалуйста начинающему, в чем у меня ошибка?


"Не срабатывают правила с указанием интерфейса"
Отправлено Isuaven , 12-Июн-12 13:23 
> я что-то не понял, это рутер или отдельный хост ?
> какой интерфейс внутренний, а какой внешний ?

Машинка выстыпает в поли шлюза(роутера), раздающего интернет дома от ISP по квартире.
bfe0 - внешний интерфейс, смотрящий в сторону провайдера.

> Надо повысить вдумчивость.
> учитывайте, что:
> - каждый пакет проходит файрволл два раза, на входе в рутер и
> на выходе из рутера (для транзита) (указано в мане)
> - для соединения пакеты есть двух направлений, "туда" и "обратно".

Ну да, пакет идущий из интернета в локальную сеть сначала является входящим (in) на внешнем интерфейсе(bfe0) и обрадатывается файером первый раз. После этого он становится исходящим (out) на интерфейсе, смотрящем в локальную сеть(xl0 допустим) и прогоняется через фаервол повторно. И только после этого попадает в локальную сеть. Правильно ж?

> - есть такая штука, как one_pass (посмотрите в man ipfw).

Ну я читал в мане про такой параметр, но мне показалось что он используется только для конфигов с разделением трафика (dummynet) и непойму каким боком он относится к моему примеру.


"Не срабатывают правила с указанием интерфейса"
Отправлено Isuaven , 12-Июн-12 17:27 
Все, спасибо, разобрался.
Действительно, надо было установить значение net.inet.ip.fw.one_pass в 0.
А так же в 210 правиле ошибка была, оно должно было выглядеть так:
$cmd allow tcp from any 80 to any in via $pif established