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.
-
В списке интерфейсов нажать на шестерёнку рядом с SSH remove capture
2. На вкладке server прописать адрес и порт сервера
-
На вкладке Authentication – ввести имя пользователя и путь к файлу ключа. С именем пользователя всё понятно – оно вводится как обычно, а вот чтобы ввести путь к файлу ключа – нужно сначала нажать … рядом с полем Path to SSH private key
Затем нажать Cmd+Shift+G – чтобы появилось текстовое поле ввода и ввести путь к файлу уже туда. Просто найти его через Finder может быть затруднительно, т.к. файл лежит в скрытой папке и по-умолчанию она в Finder не показывается.
В итоге владка выглядит так:
-
На вкладке Capture нужно прописать:
Remote Interface: any – чтобы не мучаться с выбором правильного, а собирать весь траффик.
Remove capture command selection: tcpdump
Use sudo on the remote machine – поставить галочку (у исходного пользователя нет прав собирать трафик)
Кнопка Save
Готово
Всё готово. теперь можно дважды кликнуть в главном окне по интерфейсу SSH Remote capture и дальше разбираться с фильтрами.