【问题标题】:Access host iptables and ufw from privileged Docker container从特权 Docker 容器访问主机 iptables 和 ufw
【发布时间】:2020-03-16 00:49:56
【问题描述】:

我想从 Docker 容器(在同一主机)。

需要哪些卷或 Docker 容器参数才能实现这一点?容器可以使用 root 用户和特权访问运行。

我完全了解这里的安全隐患,但在这种情况下安全不是问题。

【问题讨论】:

    标签: docker ubuntu-18.04


    【解决方案1】:

    使用 SSH

    您可以使用--net=host 选项运行容器,然后可以使用 ssh 从容器连接到主机。

    在主机模式下,可以从容器连接到主机的22端口。

    没有 SSH

    如果您不想使用 ssh,this 帖子中解释了一种方法。您需要使用--privileged--pid=host 运行容器,然后使用nsenter 命令。使用此命令,您可以从主机获得一个交互式 shell。您也可以只运行所需的命令。

    $ sudo docker run --privileged --pid=host -it alpine:3.8 \
    nsenter -t 1 -m -u -n -i sh
    
    $ sudo docker run --privileged --pid=host -it alpine:3.8 \
    nsenter -t 1 -m -u -n | sudo iptables -S
    

    请注意,如果您使用的是 MacOS 或 Windows,则 docker 在虚拟机管理程序中运行,因此使用它,您将在虚拟机管理程序的外壳中。

    【讨论】:

    • SSH 在主机上被禁用,所以这不是一个选项。应该在我的原始帖子中告知这一点。对不起!
    • @IsmarSlomic 如果只关闭端口,它应该仍然可以工作。不是这样吗?
    • 主机上的防火墙(iptables/ufw)不允许SSH端口。我想如果我无法从其他机器 SSH 到主机,那么从 Docker 容器尝试 SSH 会得到相同的结果吗?
    • 我认为我需要避免使用 SSH,而是尽可能尝试直接从容器中执行 ufw/iptables 命令
    • 如果你想避免它,那是另一回事,你可能有充分的理由,但如果你对网络使用主机模式,从容器连接 ssh 与连接到 localhost 相同SSH。防火墙通常会关闭其他 IP 的端口,而不是主机本身。如果您还没有看到这个,请检查一下,前几个答案是 ssh,但还有一些其他答案有很多赞成票。 stackoverflow.com/q/32163955/2596409
    猜你喜欢
    • 1970-01-01
    • 2020-02-17
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多