Fab*_*obs 11 networking iptables containers docker
我正在尝试为 docker 容器设置 iptables 规则。我正在使用nsenter在容器的网络命名空间内执行 iptables 命令:
# 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
Run Code Online (Sandbox Code Playgroud)
除了LOG规则之外,这种方法非常有效。那些似乎没有在任何地方登录。请注意,应用于主机系统的相同规则有效并记录到/var/log/kern.log.
我在哪里可以找到这些日志规则的输出?这是网络命名空间的已知问题/限制吗?
Pau*_*hue 11
正如唐纳德提到的,容器内的 iptables LOG 规则默认被抑制。
在内核 <=4.10 中,如果不修补内核,则无法调整此行为。正如 agrrd 所提到的,解决方法是在每个容器中运行 ulogd 并使用 iptables NFLOG(或 ULOG)规则而不是 LOG 规则。
但是,从内核 4.11 开始,echo 1 > /proc/sys/net/netfilter/nf_log_all_netns在主机(容器外部)上运行将导致所有容器内部的 iptables LOG 规则都记录到主机。 (请参阅此内核提交。)