Wireshark для colima docker в macos

Исходная проблема

При попытке посмотреть трафик между докер-контейнерами wireshark этого трафика не видит.

Причина

При использоваании colima для запуска докер-контейнеров используется виртуальная машина с linux, контейнеры запускаются внутри виртуальной машины. Поскольку трафик остаётся внутри виртуалки – он не виден на интерфейсах macos и Wireshark не может до него добраться.

Решение

Решением будет сбор траффика через tcpdump внутри виртуальной машины.

colima

Для начала нужно установить tcpdump внутри виртуалки:

colima ssh  # Команда выполняется в терминале macos - подключаемся к виртуальной машине с linux.
sudo apk add tcpdump  # команда выполняется внутри виртуальной машины

# проверка того что tcpdump поставился
tcpdump --help

# тут должна отобразиться версия tcpdump и справка по параметрам

exit # возвращаемся в терминал macos

Дальше нужно понять параметры подключения к виртуальной машине, это можно сделать командой colima ssh config

colima ssh-config
Host colima
  IdentityFile "/Users/rekby/.lima/_config/user"
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  NoHostAuthenticationForLocalhost yes
  GSSAPIAuthentication no
  PreferredAuthentications publickey
  Compression no
  BatchMode yes
  IdentitiesOnly yes
  Ciphers "^aes128-gcm@openssh.com,aes256-gcm@openssh.com"
  User rekby
  ControlMaster auto
  ControlPath "/Users/rekby/.lima/colima/ssh.sock"
  ControlPersist 5m
  Hostname 127.0.0.1
  Port 50921

Из этого конфига нам важны опции: 
IdentityFile – это путь к файлу ssh-ключа для входа на виртуалку
User – имя пользователя
Hostname – адрес для подключения (у меня всегда 127.0.0.1)
Port – порт для подключения, этот параметр меняется при каждом запуске виртуалки.

Wireshark

Нужно прописать эти параметры в Wireshark.

  1. В списке интерфейсов нажать на шестерёнку рядом с SSH remove capture
    Wireshark для colima docker в macos.png
    2. На вкладке server прописать адрес и порт сервера
    Wireshark для colima docker в macos-1.png

  2. На вкладке Authentication – ввести имя пользователя и путь к файлу ключа. С именем пользователя всё понятно – оно вводится как обычно, а вот чтобы ввести путь к файлу ключа – нужно сначала нажать … рядом с полем Path to SSH private key
    Wireshark для colima docker в macos-2.png
    Затем нажать Cmd+Shift+G – чтобы появилось текстовое поле ввода и ввести путь к файлу уже туда. Просто найти его через Finder может быть затруднительно, т.к. файл лежит в скрытой папке и по-умолчанию она в Finder не показывается.
    Wireshark для colima docker в macos-3.png
    В итоге владка выглядит так:
    Wireshark для colima docker в macos-4.png

  3. На вкладке Capture нужно прописать:
    Remote Interface: any – чтобы не мучаться с выбором правильного, а собирать весь траффик.
    Remove capture command selection: tcpdump
    Use sudo on the remote machine – поставить галочку (у исходного пользователя нет прав собирать трафик)

Кнопка Save

Готово

Всё готово. теперь можно дважды кликнуть в главном окне по интерфейсу SSH Remote capture и дальше разбираться с фильтрами.