Всем привет!
Такое дело. Есть несколько небольших сеток с выходом Internet. Они соединены между собой openvpn, интерфейс самого OVpn включен с обеих сторон в мост в котором так же ещё физический интерфейс смотрящий в каждую из сетей. Основная задача такой городульки - прозрачное виденье UPnP медиа-сервера устройствами во всех сетях. Это даже работает. Понятно, что в тунель трафик ограничен, и он только для UPnP. На самих же «роутерах» так же подняты UPnP сервера для управления NAT, в частности чтобы Торрент клиенты внутри сетей и им подобные могли открыть себе порты. это тоже работает. Но есть одно но. Хочется чтобы эти самые UPnP были видны только внутри своей маленькой сети. SSDP протокол, на котором они общаются, использует мультикаст пакеты UDP:1900.
В итоге. я не могу запретить выходить мультикаст пакетам с самого «роутера» во вне. Я делаю так:
На роутере (192.168.60.201 его адресс на br0, br0 = tap0+eth0):
# iptables -I OUTPUT -o br0 -m physdev --physdev-out tap0 -p udp -s 192.168.60.201 --dport 1900 -j DROP
С другой стороны (192.168.60.137 на br0, br0 = tap0+eth0)
# tcpdump -i tap0 -n dst port 1900
16:03:47.902167 IP 192.168.60.201.47940 > 239.255.255.250.1900: UDP, length 453
16:03:47.902714 IP 192.168.60.201.47940 > 239.255.255.250.1900: UDP, length 414
16:03:47.903290 IP 192.168.60.201.47940 > 239.255.255.250.1900: UDP, length 485
Я пробовал разные конфигурации правила дабы понять что я делаю не так, но так и не понял :)
iptables -I OUTPUT -m physdev --physdev-out tap0 -p udp -s 192.168.60.201 --dport 1900 -j DROP
iptables -I OUTPUT -o br0 -m physdev --physdev-out tap0 -p udp --dport 1900 -j DROP
iptables -I OUTPUT -o br0 -m physdev --physdev-out tap0 -p udp -s 192.168.60.201 --dport 1900 -j DROP
iptables -I OUTPUT -m physdev --physdev-out tap0 -p udp -j DROP
Руководствуюсь http://ebtables.netfilter.org/br_fw_ia/PacketFlow.png