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

2. На вкладке server прописать адрес и порт сервера


3. На вкладке Authentication – ввести имя пользователя и путь к файлу ключа.
С именем пользователя всё понятно – оно вводится как обычно, а вот чтобы ввести путь к файлу ключа – нужно сначала нажать … рядом с полем Path to SSH private key

Затем нажать Cmd+Shift+G – чтобы появилось текстовое поле ввода и ввести путь к файлу уже туда. Просто найти его через Finder может быть затруднительно, т.к. файл лежит в скрытой папке и по-умолчанию она в Finder не показывается.

В итоге владка выглядит так:

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

Кнопка Save

Готово

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *