У меня странное виртуальное (докер-мосты) сетевое состояние
У меня есть два докера, подключенных к одному и тому же мосту через docker-compose. Один докер — «зонд», а другой — «инжектор». Инжектор использует tcpreplay для воспроизведения захвата, а «зонд» должен получить его через tcpdump. Излишне говорить, что воспроизведенный захват не имеет никакого отношения к IP-адресам или компьютерам Mac NICS, подключенным к мосту.пинг между хостами работает нормально.
Теперь есть третий сетевой адаптер, автоматически открываемый докером для хост-компьютера.
+---> NIC1 [докер "инжектор" / использует tcpreplay для внедрения]
мост +---> NIC2 [докер-зонд / использует tcpdump для прослушивания]
|
+--- Хост NIC3 [используется для тестирования иногда как инжектор, а иногда как слушатель]
Что на самом деле происходит, так это то, что когда tcpreplay запускается с HOST (вводит захват через NIC3), все работает нормально, а tcpdump на «зонде» показывает воспроизведенный трафик. Однако, когда tcpreplay используется на инжекторе и внедряет захват через NIC1, только первые два пакета перехвата можно увидеть на «зонде», а затем весь трафик на «зонде» останавливается (также перестанет работать внедрение с хоста). если tcpdump запущен на NIC3, он нормально получает весь захваченный трафик от инжектора.
- ifconfig на «пробе» не показывает отброшенных пакетов
- iptables на хосте не увеличивает счетчики отброшенных пакетов (надеюсь, я делаю это правильно «sudo iptables -L -v -n | grep -i drop»)
- tcpdump автоматически включает неразборчивый режим на зонде
У кого-нибудь есть объяснение этому асимметричному поведению? Есть идеи, как его отлаживать?
Инжектор и хост - AlmaLinux:8, зонд -Centos:7
tcpreplay версии 4.4.1