Почему IPFW не фильтрует MAC?

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Ответить
Аватара пользователя
kerogaz
Сообщения: 916
ОС: CentOS,FreeBSD 12.1,Arch

Почему IPFW не фильтрует MAC?

Сообщение kerogaz »

Я на шлюзе с NAT Freebsd 10.1 прописываю

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

ipfw add deny all from any to any MAC any 00:1c:c0:f1:cb:c8  mac-type ipv4



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

ipfw show
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
00400      2        96 allow tcp from any to any dst-port 22 via em1
00500      2        80 allow tcp from any 22 to any via em1
00600 385568  48168678 nat 1 ip from table(0) to any out via em0
00700 508090 560540026 nat 1 ip from any to any in via em0
00800 919599 610498805 allow ip from any to any
00900      0         0 allow tcp from any to any dst-port 80
01000      0         0 deny ip from any to any MAC any 00:1c:c0:f1:cb:c8 mac-type 0x0800
65535      0         0 deny ip from any to any

.
но компьютер с таким MAC свободно проходит через NATиз локальной сети в интернет.Я помню в линуксовом iptables фильтрация по MAC не работала пока строку бана не поставишь в начало цепочки
Так работала

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

iptables -I FORWARD -m mac --mac-source EC:55:F9:88:E9:DA -j DROP

а так не работала

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

iptables -A FORWARD -m mac --mac-source EC:55:F9:88:E9:DA -j DROP

Может и здесь по этой причине не работает
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Почему IPFW не фильтрует MAC?

Сообщение Hephaestus »

Я не слишком плотно имел дело именно с этим файрволом.
Но, насколько помню, так и есть.
Пакет проходит через кучу правил, пока не наткнётся на подходящее.
Как только наткнулся, остальные правила к нему не применяются.
Посмотрите документацию, как именно и в каком порядке обрабатываются правила.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
kerogaz
Сообщения: 916
ОС: CentOS,FreeBSD 12.1,Arch

Re: Почему IPFW не фильтрует MAC?

Сообщение kerogaz »

В мане IPFW насчет MAC нашел
http://www.opennet.ru/base/net/ipfw_man.txt.html


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

Фильтрация по MAC заголовкам и использование систем защиты сетей на
уровне 2.

ipfw1 не осуществляет фильтрацию по полям MAC заголовков на пакетах
вызванных, ни от ether_demux() ни от ether_output_frame(). Переменная
sysctl net.link.ether.ipfw  там не действует.

Варианты

Следующие варианты не поддерживаются в ipfw1

dst-ip, dst-port, layer2, mac, mac-type, src-ip, src-port.

Дополнительно, следующие варианты не поддерживаются в правилах ipfw1
(RELENG_4):

ipid, iplen, ipprecedence, iptos, ipttl, ipversion, Cm tcpack, tcpseq,
tcpwin.

Вот так IPFW. Получается что нельзя вообще здесь фильтровать MAC?
Спасибо сказали:
Аватара пользователя
kerogaz
Сообщения: 916
ОС: CentOS,FreeBSD 12.1,Arch

Re: Почему IPFW не фильтрует MAC?

Сообщение kerogaz »

Я вроде всё делал правильно

http://akadjon.kz/wiki/index.php/Ipfw
кроме

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

# sysctl net.link.ether.ipfw=1

но когда я егто прописываю в sysctl то вся ЛС падает :) А падает она по-видимому по следующим причинам
"если протокол построен по принципу все запрещено кроме разрешенного блокируется также широковещательный трафик arp протокола,
поэтому обычно упрощают правила с помощью признака layer2, о чем есть соответствующая запись в man ipfw"- Как раз мой случай
Как этой lнyer2 прописать?
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1099
ОС: freeBSD

Re: Почему IPFW не фильтрует MAC?

Сообщение arachnid »

то, что вы нашли, касается ipfw1 - сейчас ipfw2 (уже очень давно, с пятой версии, так что аккуратнее с переводными манами)

kerogaz писал(а):
21.05.2015 07:04
В мане IPFW насчет MAC нашел
http://www.opennet.ru/base/net/ipfw_man.txt.html


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

Фильтрация по MAC заголовкам и использование систем защиты сетей на
уровне 2.

ipfw1 не осуществляет фильтрацию по полям MAC заголовков на пакетах
вызванных, ни от ether_demux() ни от ether_output_frame(). Переменная
sysctl net.link.ether.ipfw  там не действует.

Варианты

Следующие варианты не поддерживаются в ipfw1

dst-ip, dst-port, layer2, mac, mac-type, src-ip, src-port.

Дополнительно, следующие варианты не поддерживаются в правилах ipfw1
(RELENG_4):

ipid, iplen, ipprecedence, iptos, ipttl, ipversion, Cm tcpack, tcpseq,
tcpwin.

Вот так IPFW. Получается что нельзя вообще здесь фильтровать MAC?



все таки перед заданием вопросов рекомендую воспользоваться поиском - это здорово помогает :)

но это на будущее, а пока кратко - по умолчанию у вас правило по умолчанию - запрет на все. и когда вы включаете ipfw на 2ом уровне - вы именно это и получаете. то есть либо вы ставите разрешение на все и пишете тех, кому запрещено, либо прописываете разрешенные маки

kerogaz писал(а):
21.05.2015 10:09
Я вроде всё делал правильно

http://akadjon.kz/wiki/index.php/Ipfw
кроме

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

# sysctl net.link.ether.ipfw=1

но когда я егто прописываю в sysctl то вся ЛС падает :) А падает она по-видимому по следующим причинам
"если протокол построен по принципу все запрещено кроме разрешенного блокируется также широковещательный трафик arp протокола,
поэтому обычно упрощают правила с помощью признака layer2, о чем есть соответствующая запись в man ipfw"- Как раз мой случай
Как этой lнyer2 прописать?

-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Ответить