Извиняюсь, запахался.
Пример файла с IP-шками приводить нет смысла - просто по IP-шке на сторчку.
Пример скрипта на перле, заталкивающего IP-шки в таблицы:
#!/usr/bin/perl
local $ipfw="/sbin/ipfw -q";
system ("$ipfw table 0 flush");
open(ONE, "</usr/tables/list1.txt");
while(<ONE>){
chomp $_;
if (!/^#/) {
system ("$ipfw table 0 add $_\n");
}
}
close(ONE);
system ("$ipfw table 1 flush");
open(LV, "</usr/tables/lvonlylist.txt");
while(<TWO>){
chomp $_;
if (!/^#/) {
system ("$ipfw table 1 add $_\n");
}
}
close(TWO);
... итд, сколько таблиц надо. Скритп также отслеживает строки комментов, начинающиеся с #
и на них не реагирует.
Пример куска rc.firewall
if1="em0"
if2="em1"
...
${fwcmd} add 20000 pipe 10 ip from any to table\(1\) in via ${if1}
${fwcmd} add 20010 pipe 20 ip from table\(1\) to any in via ${if2}
...
${fwcmd} pipe 10 config mask dst-ip 0x000000ff bw 128Kbit/s
${fwcmd} pipe 20 config mask src-ip 0x000000ff bw 128Kbit/s
Можешь разобраться с пропусканием пакетов через интерфейсы по-своему,
поскольку у тебя роутер шейпит, но если будешь делать "нарезающий" бридж, то лучше так,
поскольку бридж обрабатывает только конструкции типа in via ${if1} и абсолютно забивает на out via ${if1}