
TL:DR: Я создаю сетевой ответвитель с помощью Raspberry Pi, который должен оставатьсяскрытность. У меня есть мост (br0) между интерфейсом коммутатора (eth0) и рабочая станция (eth1).
Вот как я это строю (открыт для любых предложений):
# Create a bridge with the name br0
ip link add "$BRIDGE_INT" type bridge
# Add the eth0 interface to the bridge
ip link set "$WORKSTATION_INT" master "$BRIDGE_INT"
# Add the eth1 interface to the bridge
ip link set "$SWITCH_INT" master "$BRIDGE_INT"
После завершения этого процесса я подключаю сетевые кабели и вижу, что мойeth0раскрывает свой MAC-адрес по нескольким протоколам.
Что я тестировал:
nft add table inet filter
nft add chain inet filter output { type filter hook output priority 0 \; }
nft add rule inet filter output ether saddr "$SWITCH_MAC" drop
Который все еще утекает на eth0 DHCP -> ARP -> MDNS.
Затем я решил поставить статический адрес DHCP. После нескольких попыток я нашел правильную конфигурацию для этого (Открыт для любых предложений):
/etc/network/interfaces
auto eth0
iface eth0 inet manual
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.254
/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8
Эта конфигурация не будет запрашивать сеть для dhcp. Но ARP -> MDNS все еще утекает.
Поскольку этот проект нацелен на то, чтобы быть адаптивным, я думаю, что лучшим решением будет отказаться от всего, что имеет SWITCH_MAC. Но это не остановит поток трафика.
Я заметил, что мое правило корректно отбрасывает пакеты с SWITCH_MAC, которые я отправляю намеренно, но не отбрасывает те, которые отправляет ОС.
ЗАКЛЮЧЕНИЕ ОС пропускает нежелательный трафик, хотя тестовый трафик отбрасывается. Я подозреваю, что моя проблема похожа на эту:Фильтрация трафика по MAC-адресу с помощью nftables Это очень хорошо объяснено, но решение пока не найдено.