首页 > 解决方案 > Docker:如何验证覆盖网络是否已加密

问题描述

有什么方法可以检查覆盖网络是否实际加密?

我知道您可以使用创建加密覆盖网络

docker network create --opt encrypted --driver overlay my-encrypted-network

但是由于您几乎可以将任何内容指定为驱动程序选项 ( --opt),因此您很容易错误地键入“已加密”并且 docker 不会抱怨。

假设我输入(注意错字!)

docker network create -d overlay --opt encryptedsd my-encrypted-network

现在使用docker network inspect my-encrypted-network我只得到我输入的信息,但我看不到网络是否真的被加密了。

[
    {
        "Name": "my-encrypted-network",
        "Id": "j4jd8dlde9u7rs1crlzbqco4p",
        "Created": "2020-02-01T13:17:39.65392102Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.4.0/24",
                    "Gateway": "10.0.4.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4100",
            "encryptedsd": ""
        },
        "Labels": null
    }
]

除了拼写错误之外,这并不让人放心,因为我真的很想知道是否真的启用了加密,而不仅仅是知道我输入了什么。

有谁知道是否有更好的方法来获得可靠的答案?

标签: dockerdocker-swarm

解决方案


根据文档:

当您启用覆盖加密时,Docker 在为附加到覆盖网络的服务安排任务的所有节点之间创建 IPSEC 隧道。这些隧道还在 GCM 模式下使用 AES 算法,管理节点每 12 小时自动轮换一次密钥。

与您提到的方法不同(IMO 是有效的)的一种方法是检查(例如使用netstat)是否创建了这些 IPSEC 隧道。


推荐阅读