У меня есть физический сервер под управлением Ubuntu 16.04 с KVM и 3 сетевыми картами, которые подключены мостами br1, br2 и br3 к гостевой виртуальной машине, на которой также работает Ubuntu Server 16.04.
Первая сетевая карта — br1 — подключена к Интернету, а адрес ее маршрутизатора определен как шлюз по умолчанию для гостя.
У меня есть код, работающий на гостевой машине, которому нужно прослушивать пакеты, полученные br2 и br3, код должен прослушивать только 1 сетевую карту,
Я попробовал перенаправить трафик с en2 (имя гостевой сетевой карты, подключенной через br2) на en3 (то же самое с br3) с помощьюследуя этому:
sudo nano /etc/sysctl.conf
uncomment net.ipv4.ip_forward = 1
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING --out-interface en3 -j MASQUERADE
sudo iptables -A FORWARD --in-interface en2 --out-interfac en3 -j ACCEPT
sudo tpcdump -i en3
Однако при использовании и отправке ping-сообщения на NIC2 ничего не регистрируется (хотя если я запущу sudo tpcdump -i en2
, то увижу ping-сообщения)
Что я здесь упускаю? Есть ли лучший способ получить желаемый результат (чтобы мой код слушал 1 NIC и получал трафик обоих NIC)?
решение1
Чтобы прослушивать именно пересылаемый трафик, лучше создать nflog
правило/интерфейс.
Снятие дампов трафика на Linux
Итак, вы создадите nflog
интерфейс:
sudo iptables -t filter -I FORWARD -j NFLOG --nflog-group 6
а затем послушайте это:
sudo tcpdump -s 0 -n -i nflog:6
Решением проблемы является использование интерфейса nflog в фреймворке iptables для получения именно тех пакетов, которые нас интересуют.
Правила nflog регистрируются во внутренней группе многоадресной рассылки ядра, которая идентифицируется целым числом в диапазоне 0 - 2^16-1. Будет захвачена только та часть датаграммы, которую видит фреймворк. Для iptables это пакет IPv4.
Использование nflog для дампа пакетов заставляет вас использовать специальный синтаксис интерфейса для tcpdump и wireshark. Вы должны использовать nflog:groupnumber в качестве интерфейса.
Поскольку правила nflog являются обычными правилами iptables, правилам нужна правильная часть соответствия и цели, чтобы вы получили именно тот трафик, который вам нужен. Вы также должны поместить правило в правильное место, чтобы оно получило пакеты, которые вам интересны.