如何从docker-toolbox Host-Only接口捕获纯文本?

如何从docker-toolbox Host-Only接口捕获纯文本?

我在跑步docker 工具箱在我的 Windows 10 PC 中。默认情况下,docker-toolbox 在 VirtualBox VM 中安装 boot2docker,该 VM 具有一个 NAT 接口和一个 Host-Only 接口。NAT 接口 (eth0 10.0.2.15/24) 连接到 Internet,Host-Only 接口 (eth1 192.168.99.104/24) 连接到主机操作系统。来自 Host-Only 接口的网络数据包使用TLS 协议,因此这些数据在任何数据包捕获工具中看起来都像是垃圾。

那么,我如何查看来自 Host-Only 接口的加密网络数据包中写了什么?

答案1

警告:以下步骤禁用TLS 协议.docker-toolbox 使用 TLS 来保护 docker 守护进程和 docker 客户端之间的连接。禁用此安全通道会使您的 docker 系统容易受到安全威胁。

要创建禁用 TLS 的 boot2docker VirtualBox VM,请按照这个答案。如果该 VM 已创建,请按照以下步骤操作。从 VirtualBox Manager 启动该 VM 或使用docker-machine ssh <vm-name>命令通过 SSH 进入该 VM。运行此命令vi /var/lib/boot2docker/profile以在 vi 编辑器中编辑文件。

  • 默认值为:
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_TLS=yes
  • 更改如下内容:
DOCKER_HOST='-H tcp://0.0.0.0:2375'
DOCKER_TLS=no
DOCKER_TLS_VERIFY=no

然后退出vi编辑器并dockerd使用此命令重新启动守护进程sudo /etc/init.d/docker restart。或者退出会话并重新启动 boot2docker VM。运行命令ssh后,以下是纯文本形式的网络数据包:docker system info

C:\> tshark.exe -i Host-Only -f "tcp port 2375"
Capturing on 'Host-Only'
192.168.99.1 → 192.168.99.104 TCP 62827 → 2375 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
192.168.99.104 → 192.168.99.1 TCP 2375 → 62827 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=128
192.168.99.1 → 192.168.99.104 TCP 62827 → 2375 [ACK] Seq=1 Ack=1 Win=1051136 Len=0
192.168.99.1 → 192.168.99.104 HTTP GET /_ping HTTP/1.1
192.168.99.104 → 192.168.99.1 TCP 2375 → 62827 [ACK] Seq=1 Ack=99 Win=29312 Len=0
192.168.99.104 → 192.168.99.1 HTTP HTTP/1.1 200 OK  (text/plain)
192.168.99.1 → 192.168.99.104 HTTP GET /v1.37/info HTTP/1.1
192.168.99.104 → 192.168.99.1 TCP HTTP/1.1 200 OK  [TCP segment of a reassembled PDU]
192.168.99.104 → 192.168.99.1 HTTP HTTP/1.1 200 OK  (application/json)
192.168.99.1 → 192.168.99.104 TCP 62827 → 2375 [ACK] Seq=202 Ack=3039 Win=1051136 Len=0
192.168.99.1 → 192.168.99.104 TCP 62827 → 2375 [RST, ACK] Seq=202 Ack=3039 Win=0 Len=0
11 packets captured

那么,这是如何运作的呢DOCKER_HOSTDOCKER_TLS环境变量在 docker 引擎中使用。DOCKER_TLS=no禁用 TLS 加密,端口 2375 是默认使用的端口,无需加密。通过更改/var/lib/boot2docker/profile文件中的这些值,docker 守护进程始终接受这些参数。因为/var/lib持久驱动在 boot2docker VM 中。以下是一些引述(来源):

Docker 守护进程选项 如果您需要自定义用于启动 Docker 守护进程的选项,可以通过在 Boot2Docker 虚拟机内的持久分区上向 /var/lib/boot2docker/profile 文件添加条目来实现。然后重新启动守护进程。

当您运行 docker-machine 时,该工具会自动创建一个磁盘,该磁盘将自动挂载并用于将您的 docker 数据保存在 /var/lib/docker 和 /var/lib/boot2docker 中。

看到这个文章了解更多信息。

相关内容