Назад | Перейти на главную страницу

Мостовая фильтрация для сетевого узла типа "человек посередине"

Я вставляю свой сетевой узел между двумя устаревшими устройствами, которые обмениваются сообщениями tcp и udp с использованием выделенных портов в обоих направлениях. Моему новому узлу необходимо прозрачно протолкнуть некоторые сообщения tcp / udp и перехватить другие сообщения tcp / udp для обработки на уровне приложения перед отправкой обработанных сообщений. Схема для этой конфигурации типа "человек посередине" выглядит так:

[legacy1] - [mitm] - [legacy2]

с этими интерфейсами

Машина MITM работает под управлением Ubuntu 16.04.

Будет ли достаточно iptables (на 3-м уровне), хотя я хочу установить мост (на 2-м уровне)? Что лучше: ebtables или nftables?

Вы упоминаете мост (L2), но согласно вашей диаграмме вы делаете маршрутизация (L3), поскольку кажется, что есть две одинаковые подсети (скажем, 192.168.1.0/24), одна включает legacy1 и mitm-left, а другая включает legacy2 и mitm-right.

Вам, наверное, нужно ...

изменить вашу настройку

# create bridge between mitm-left and mitm-right
ip l a name br0 type bridge
ip l set br0 up
ip l set eth0 up
ip l set eth0 master br0
ip l set eth1 up
ip l set eth1 master br0

# add IP within the subnet that legacy1 and legacy2 is part of
ip a a 192.168.1.0/24 dev br0

# now ensure that netfilter works on the l2 bridge
modprobe br_netfilter
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

Последние две строки - это только одноразовые изменения, вы должны сделать их постоянными, чтобы гарантировать:

  • загрузка br_netfilter модуль ядра при очень старте
  • включение bridge-nf-call возможности в iptables (т.е. echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf)

результат

Эта настройка позволяет части netfilter ядра Linux фильтровать правила / log / NAT для трафика через мост.

Теперь вы можете:

  • использовать iptables инструмент для установки правил netfilter для обработки / изменения пакетов IPv4 / IPv6.
  • использовать ebtables инструмент для установки правил netfilter для обработки / изменения любых других фреймов.
  • использовать nftables инструмент для установки правил netfilter (если ваш дистрибутив достаточно актуален).

Что касается вашего последнего вопроса - поскольку существует множество примеров, а также поддержка iptables / ebtables, я бы пошел с ними. Nftables мог принесите лучшую производительность, но я думаю, ваша установка не является сценарием с высокой производительностью.