-1

Я использую docker-toolbox на моем компьютере с Windows 10. По умолчанию docker-toolbox устанавливает boot2docker в виртуальной машине VirtualBox с одним интерфейсом NAT и одним интерфейсом только для хоста. Интерфейс NAT (eth0 10.0.2.15/24) подключен к Интернету, а интерфейс Host-Only (eth1 192.168.99.104/24) подключен к ОС хоста. Сетевые пакеты, поступающие от интерфейса Host-Only, шифруются протоколом TLS, поэтому данные выглядят как мусор в любом инструменте захвата пакетов.

Итак, как я могу посмотреть, что записано в этих зашифрованных сетевых пакетах, поступающих с интерфейса Host-Only?

1 ответ1

0

Предупреждение . Следующая процедура отключает протокол TLS . docker-toolbox использует TLS для защиты соединения между демоном docker и клиентами docker. Отключение этого безопасного канала делает вашу систему докеров уязвимой для угроз безопасности.

Чтобы создать виртуальную машину boot2docker VirtualBox с отключенным TLS, следуйте этому SO-ответу. Если эта ВМ уже создана, выполните следующие действия. Запустите эту виртуальную машину из VirtualBox Manager или SSH в эту виртуальную docker-machine ssh <vm-name> . Запустите эту команду 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 . Или выйдите из сеанса ssh и перезагрузите boot2docker VM. Вот сетевые пакеты в виде простого текста после выполнения команды 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_HOST и DOCKER_TLS - переменные окружения, используемые в движке докера. DOCKER_TLS=no отключает шифрование TLS, а порт 2375 является портом по умолчанию, используемым без шифрования. Изменяя эти значения в файле /var/lib/boot2docker/profile , демон docker всегда принимает эти параметры. Поскольку /var/lib является постоянным диском в boot2docker VM. Вот несколько цитат (Источник):

Параметры демона Docker Если вам нужно настроить параметры, используемые для запуска демона Docker, вы можете сделать это, добавив записи в файл /var /lib /boot2docker /profile в постоянном разделе виртуальной машины Boot2Docker. Затем перезапустите демон.

Когда вы запускаете docker-machine, инструмент автоматически создает диск, который будет автоматически смонтирован и использован для сохранения ваших данных докера в /var /lib /docker и /var /lib /boot2docker.

Смотрите эту статью для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .