Есть вот такой список правил для примера:01200 allow tcp from 192.168.1.239 to 192.168.1.241
01300 allow tcp from 192.168.1.239 to 192.168.1.241
01400 allow tcp from 192.168.1.239 to 192.168.1.241
01500 allow tcp from 192.168.1.239 to 192.168.1.241Как из удалить без flush, без использования номера правила.
>Есть вот такой список правил для примера:
>
>01200 allow tcp from 192.168.1.239 to 192.168.1.241
>01300 allow tcp from 192.168.1.239 to 192.168.1.241
>01400 allow tcp from 192.168.1.239 to 192.168.1.241
>01500 allow tcp from 192.168.1.239 to 192.168.1.241
>
>Как из удалить без flush, без использования номера правила.ipfw flushyt не использовать, ipfw delete NN не использовать...
То-есть, как удалить правило не удаляя его? Никак.
>>Есть вот такой список правил для примера:
>>
>>01200 allow tcp from 192.168.1.239 to 192.168.1.241
>>01300 allow tcp from 192.168.1.239 to 192.168.1.241
>>01400 allow tcp from 192.168.1.239 to 192.168.1.241
>>01500 allow tcp from 192.168.1.239 to 192.168.1.241
>>
>>Как из удалить без flush, без использования номера правила.
>
>ipfw flushyt не использовать, ipfw delete NN не использовать...
>То-есть, как удалить правило не удаляя его? Никак.как в ipchains есть ключ -A добавить правило, -D удалить...
Причём писать можно не только сам номер, но и полностью такое же правило как добавлялось ключом -A.
>>>Есть вот такой список правил для примера:
>>>
>>>01200 allow tcp from 192.168.1.239 to 192.168.1.241
>>>01300 allow tcp from 192.168.1.239 to 192.168.1.241
>>>01400 allow tcp from 192.168.1.239 to 192.168.1.241
>>>01500 allow tcp from 192.168.1.239 to 192.168.1.241
>>>
>>>Как из удалить без flush, без использования номера правила.
>>
>>ipfw flushyt не использовать, ipfw delete NN не использовать...
>>То-есть, как удалить правило не удаляя его? Никак.
>
>как в ipchains есть ключ -A добавить правило, -D удалить...
>Причём писать можно не только сам номер, но и полностью такое же
>правило как добавлялось ключом -A.а вот так не подойдет?
root@# ipfw show
00050 0 0 deny udp from any to me 137-139
00100 2223 217065 allow ip from any to any
65535 0 0 deny ip from any to anyroot@# ipfw delete `ipfw -a l | grep "deny udp from any to me 137-139"|cut -f 1 -d " "`
root@# ipfw show
00100 2223 217065 allow ip from any to any
65535 0 0 deny ip from any to any
>а вот так не подойдет?
>
>root@# ipfw show
>00050 0 0 deny
>udp from any to me 137-139
>00100 2223 217065 allow ip from any to any
>65535 0 0 deny
>ip from any to any
>
>root@# ipfw delete `ipfw -a l | grep "deny udp from any
>to me 137-139"|cut -f 1 -d " "`
>
>root@# ipfw show
>00100 2223 217065 allow ip from any to any
>65535 0 0 deny
>ip from any to anyВариант, я вот ещё такую конфигу нашёл
#!/usr/bin/perl$buffer="$ENV{'QUERY_STRING'}";
if (length($buffer) == 0) {
&PrintHeader;
&PrintFooter;
exit 0;
}#system("/bin/echo \'$buffer\' \>\>/1111");
($cmd,$ip) = split('&', $buffer);
($temp, $cmd) = split('=', $cmd);
($temp, $ip) = split('=', $ip);
($temp, $temp, $temp, $ruleset) = split('\.',$ip);
$ruleset=$ruleset*100;
if ($ruleset <= 900) {
&PrintHeader;
&PrintFooter;
exit 0;
}
&PrintHeader;if ($cmd == 2) {
system("/usr/local/bin/sudo /sbin/ipfw add $ruleset deny all from any to $ip via xl0 >/dev/null");
system("/usr/local/bin/sudo /sbin/ipfw add $ruleset deny all from $ip to any via xl0 >/dev/null");
if (&CheckFirewallRules($ruleset) == 1) {
print "<center>Service stopped for $ip.</center>\n";
} else {
print "<center>Operation error! Please, contact system administrator!</center>\n";
}
print "</body>\n";
&PrintFooter;
exit 0;
} else {
system ("/usr/local/bin/sudo /sbin/ipfw delete $ruleset");
if (&CheckFirewallRules($ruleset) == 0) {
print "<center>Service started for $ip.</center>\n";
} else {
print "<center>Operation error! Please, contact system administrator!</center>\n";
}
print "</body>\n";
&PrintFooter;
exit 0;
}exit 0;
sub GetIP {
return $ENV{'REMOTE_ADDR'};
}sub CheckFirewallRules($) {
my ($fwrule);open (FW, "/usr/local/bin/sudo /sbin/ipfw show $_[0]|");
$fwrule=<FW>;
close FW;
if (length($fwrule) !=0) {return 1} else {return 0}
}sub PrintHeader {
print "Content-type: text/html\n\n";
print "<head>\n";
print "\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n";
print "</head>";
}sub PrintFooter {
print "\n";
}