Saya mencoba menyiapkan aturan iptables untuk wadah buruh pelabuhan. Saya menggunakan nsenter untuk menjalankan perintah iptables di dalam namespace jaringan wadah:
# log access to port 8080
PID=$(docker inspect --format "{{.State.Pid}}" $ID)
/home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG
Pendekatan ini berfungsi dengan baik kecuali untuk LOG
aturan. Mereka sepertinya tidak masuk di mana pun. Perhatikan bahwa aturan yang sama yang diterapkan pada sistem host berfungsi dan masuk /var/log/kern.log
.
Di mana saya dapat menemukan output dari aturan log itu? Apakah ini masalah / batasan ruang nama jaringan yang diketahui?
networking
iptables
docker
containers
Fabian Jakobs
sumber
sumber
NFLOG
sebagai gantinya tetapi tetap tidak berhasilJawaban:
Seperti yang disebutkan Donald, aturan LOG iptables di dalam kontainer ditekan secara default.
Dalam kernel <= 4.10, perilaku ini tidak dapat disesuaikan tanpa menambal kernel. Seperti yang disebutkan agrrd, penyelesaian adalah menjalankan ulogd di setiap wadah dan menggunakan aturan iptables NFLOG (atau ULOG) alih-alih aturan LOG.
Namun, pada kernel 4.11, berjalan
echo 1 > /proc/sys/net/netfilter/nf_log_all_netns
di host (di luar wadah) akan menyebabkan aturan LOG iptables di dalam semua kontainer untuk login ke host. (Lihat Komit Kernel ini.)sumber
Output dari target LOG iptables dari dalam namespace jaringan ditekan oleh desain untuk mencegah kontainer dari DOSing host mereka dengan menduduki buffer log.
berkomitmen memperkenalkan perubahan
baris kode sumber yang relevan di kernel saat ini
sumber
Saya dapat mencatat aturan iptables untuk kontainer buruh pelabuhan dengan menginstal ulogd dan mengganti "-j LOG" dengan "-j ULOG". Paket yang cocok dicatat ke direktori / var / log / ulog
sumber
Saya telah melihat contoh (tidak terkait kernel) menggunakan
-v /dev/log:/dev/log
. Saya ingin tahu apakah Anda perlu melakukan sesuatu yang serupa ..Juga, saya melihat bahwa Anda menggunakan nsenter daripada
docker exec
: versi buruh pelabuhan apa yang Anda jalankan?sumber