On Tue, Feb 01, 2005 at 05:15:30PM +0200, LazCorp wrote:
Здравейте,
опитвам се да логвам от iptables в отделен лог файл,а не във syslog
както си е по default.
Ето какъв ред добавям в syslog.conf:
local7.* /var/log/log7
В iptables вмъквам това:
iptables -A INPUT -p tcp --dport 113 -j LOG --log-level 7 --log-prefix "AUTH pack: "
Няма да стане така...
По принцип при syslog има две основни понятия: facility и level.
Facility е нещото, от което идва съобщението - kernel, mail, security,
user, news и т.н. Level е нивото, на което това нещо е решило, че
трябва да изпрати съобщението - level е debug, info, notice, error и
т.н.
Проблемът тук е в това, че iptables, като част от ядрото, може да
изпраща syslog съобщения *само* с facility 'kernel'. Това, което ти се
опитваш да направиш, е да го конфигурираш да логва с facility 'local7',
което за съжаление просто не е възможно.
Този log level, който задаваш с командата iptables, е точно level, и
стойността 7 отговаря на ниво 'debug' - затова всичко се появява във
/var/log/debug.
Надявам се, че това ти изяснява ситуацията, макар че май не помага много
относно това какво всъщност да направиш... Иначе има два варианта:
1. Харесваш си някой log level и казваш, че всичко, което идва от ядрото
с този log level, сигурно е от iptables - тогава трябва да кажеш в
syslog.conf нещо като 'kernel.emerg /var/log/iptables.log' или нещо
такова.
2. Заменяш syslogd с нещо друго, което може да match-ва не само по
източник и ниво, ами и по низове: iptables позволява да кажеш с какъв
текст да започне съобщението. Не съм сигурен обаче точно кой
заместител на syslogd може да направи такова нещо; не съм си играл с
никой друг досега :(
А, другият вариант е не заместител на syslogd, ами да кажеш на syslogd
да пише в pipe и после там да имаш или multilog (от daemontools), или
просто едно grep към файл :)
Поздрави,
Петър