Цепочка трафика Iptables FORWARD не видна tcpdump

Цепочка трафика Iptables FORWARD не видна tcpdump

У меня есть физический сервер под управлением 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, правилам нужна правильная часть соответствия и цели, чтобы вы получили именно тот трафик, который вам нужен. Вы также должны поместить правило в правильное место, чтобы оно получило пакеты, которые вам интересны.

Связанный контент