Iptables的手冊中提到LOG target這個target是專門用來記錄數據包有關信息的。這些信息可能是非法的,那就可以用來除錯。LOG會返回包的有關細節,如IP頭的大部分和其他有趣的信息。這個功能是通過內核的日志工具完成的,一般是syslogd。返回的信息可用dmesg閱讀,或者可以直接查看syslogd的日志文件,也可以用其他的什麼程序來看。LOG對調試規則有很大的幫助,你可以看到包去了哪裡、經過了什麼規則的處理,什麼樣的規則處理什麼樣的包,等等。下面我們來實現如何通過內核的日志工具管理IPtables日志。
一、配置syslogd的配置文件/etc/syslog.conf
syslogd默認把日志信息輸出到/var/log/messages文件。 下面向大家介紹如何建立一個新的IPtables日志文件/var/log/iptables。 修改syslogd的配置文件/etc/syslog.conf,告訴syslogd IPtables使用哪個記錄等級。記錄等級的詳細信息可以查看文件syslog.conf,一般來說有以下幾種,它們的級別依次是:debug,info,notice,warning,warn,err,error,crit,alert, emerg,panic。其中,error和err、warn和warning、panic和emerg分別是同義詞,也就是說作用完全一樣的。注意這三種級別是不被贊成使用的(因為信息量太大)。信息級別說明了被記錄信息所反映的問題的嚴重程度。
IPtables的所有LOG信息可以通過內核的功能被記錄。
首先在文件syslog.conf裡添加如下內容
# Iptables logging kern.debug /var/log/iptables
然後再指定iptables的LOG規則使用級別debug(例如:iptables -I INPUT 1 -j LOG --log-prefix '[IPTABLES DROP LOGS]:' --log-level debug),就可以把所有的信息存入文件/var/log/iptables內。
最後重新啟動syslog服務或重啟計算機。
我用的是FC6,用service syslog restart命令可以很方便地啟動syslog服務。