docker 的 nftables 规则

问题描述 投票:0回答:2

系统:RHEL 8.4 Docker 版本:20.10

RHEL 8 已从 iptables 迁移到 nftables,并且 Docker inbuild 使用 iptables 在计算机上设置防火墙规则。

它似乎中断了从 docker 容器到主机服务以及到同一网络上其他托管 docker 容器的通信。

我必须与端口 5000 上的容器中托管的注册表进行通信。

我还在容器中托管 impala 服务,并打开了以下暴露的端口

21000

21050

25000

25010

25020

此外,当我登录容器时,它无法连接到互联网。

有谁知道可以设置什么规则来与docker进行正确的通信。 此外,容器中托管的服务必须能够联系所有相关的主机服务。

到目前为止尝试过的事情:

在 /etc/docker/daemon.json 中进行了更改

{
"iptables" : false
}

并基于此链接尝试设置规则,但没有运气

仅供参考:我不知道如何在 Linux 防火墙中设置任何类型的规则(不使用 iptables 或 nftables)

docker iptables firewalld nftables
2个回答
3
投票

从Docker 20.10开始,Docker提供了对firewalld的支持,无需手动添加任何规则。

它解决了我与 iptables 和 efatbles 相关的问题


0
投票

就我而言,我有一条链挂在

forward
上,导致所有流量丢失,导致部分 docker 网络中断:

chain forward {
    type filter hook forward priority 0; policy drop;
}

主机-容器和容器-主机流量仍然有效,因为它不经过转发链。

但是,容器到容器和容器世界的流量确实通过前向链,并且上述规则被丢弃。

假设没有特殊的 docker 网络设置(即默认网络上的所有容器),可以通过在上述链中添加以下内容来修复此问题:

chain forward {
    type filter hook forward priority 0; policy drop;

    # Allow outgoing traffic, initiated by docker containers
    # This includes container-container and container-world traffic 
    # (assuming interface name is docker0)
    iifname "docker0" accept

    # Allow incoming traffic from established connections
    # This includes container-world traffic
    ct state vmap { established: accept, related: accept, invalid: drop }
}
© www.soinside.com 2019 - 2024. All rights reserved.