在 LXC 容器上執行 Debian 10:
# apt-get -y install nftables
# nft --version
nftables v0.7 (Scrooge McDuck)
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input
# nft add rule inet filter input log
# nft list ruleset
table inet filter {
chain input {
log
}
}
然後,我轉到/var/log/syslog
,創建一些網路流量並且...我沒有看到來自的消息nftables根本不。
我也嘗試(不成功)以這種方式定義規則:
nft add rule inet filter input log prefix \"FINDME \" counter
更多測試:
# logger test && tail -1 /var/log/syslog
Aug 18 20:39:53 my-server root: test
# echo "test2" | systemd-cat && tail -1 /var/log/syslog
Aug 18 20:40:52 my-server cat[1907]: test2
# uname -v
#1 SMP PVE 5.4.34-2 (Thu, 07 May 2020 10:02:02 +0200)
為什麼是nftables不寫信給我的系統日誌?
作為一個獎勵問題:當比賽發生時有什麼方法可以觸發一個動作嗎?例如,將被封鎖的 IP 儲存在資料庫中。
答案1
嗯...多虧了@anx 的線索,我顯然發現了這一點網路過濾器發送資料有一些困難系統日誌。
這可能與主機是一個沒有自己核心的 LXC 容器以及cgroups在虛擬機器管理程式中...(Buff,我正在進入黑暗領域)...好吧...無論如何。
無論如何,如果有人碰巧遇到類似的問題,我可以透過將資料發送到中來獲取一些日誌烏洛格德。以下是使基本範例正常運作的步驟:
# apt-get -y install nftables ulogd2
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input '{ type filter hook input priority 0 ; }'
# nft add rule inet filter input log prefix "FINDME" group 0 accept
# nft list ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy accept;
log prefix "FINDME" group 0 accept
}
}
# tail -f /var/log/ulog/syslogemu.log
答案2
我遇到了一個非常相似的問題:nftables 在網路命名空間內運行時沒有記錄。 Julen 的解決方案對我來說不起作用。
由於我沒有運行任何容器,我可以使用解決我的問題
echo 1 >/proc/sys/net/netfilter/nf_log_all_netns