Sos, ljudi.
Situacija takaja, est' FreeBSD 4.9 router, nado:
1. perenaprovljat' ili reject po MACam. Nachitalsja man-ov, posmotrel podskazki, IPFW2 postavil, vse ok, no pochemu-to varianti tipa:
$fwcmd add 500 deny ip from any to any mac any 00:04:5a:69:dc:56/32
$fwcmd add 600 deny ip from any to any mac any 00:04:5a:69:dc:56 in out rl1
$fwcmd add 800 deny ip from any to any mac any 00:04:5a:69:dc:56
$fwcmd add 1600 allow ip from any to any MAC any any
prosto inorirujursja. Cho ne tak? Mac 00:04... - eto moj, vo vnutrenej seti. Hochu ego zaprepit'. ne rabotaet daz'e:
fwcmd add 500 deny ip from any to any mac any any
2. Esli pivjazovat' MAC arp -f.
arp -s 192.168.1.1 0:92:37:91:12:a3 pub
to mne vse svobodnie nado zapretit'?
arp -s 192.168.1.2 0:0:0:0:0:0 pub
arp -s 192.168.1.3 0:0:0:0:0:0 pub
i t.d? Esli u menja dve serie podsetki - eto 192.168.1.0 i 192.168.2.0 -
eto 512 raz rukami pisat' 0:0:0:0:0:0?
Попробуй
ipfw add 1 deny mac 00:04:5a:69:dc:56 any
ipfw add 1 deny mac any 00:04:5a:69:dc:56
ipfw(8)
...
PACKET FLOW^ to upper layers V
| |
+----------->-----------+
^ V
[ip_input] [ip_output] net.inet.ip.fw.enable=1
| |
^ V
[ether_demux] [ether_output_frame] net.link.ether.ipfw=1
| |
+-->--[bdg_forward]-->--+ net.link.ether.bridge_ipfw=1
^ V
| to devices |
На уровне ip_input() ipfw ничего не знает о MAC,
следовательно нам нужен уровень ether_demux(),
т.е. проверяем опцию
net.link.ether.ipfw=1если бридж
net.link.ether.bridge_ipfw=1вот ещё посмотри http://michael.gargantuan.com/FreeBSD/ipfw2.htm
P.S. 512 раз тоже можно не писать, поиск по форуму - там есть скриптик.