2016-11-07 3 views
0

Je les éléments suivants si la configuration:Filtrage des VLAN marqués paquets sur le pont Linux

eth0 --- br0 --- eth1 

Je reçois la transmission de diffusion udp (sur le port 20000) sur eth1 et ne veulent pas le pont de le transmettre à eth0 (mon interface filaire). Par conséquent, je applique

ebtables -t filter -A FORWARD -o eth0 -p 0x0800 --ip-protocol udp --ip-destination-port 20000 -j DROP 

Cela fonctionne très bien pour moi. Quand je courais mon appareil en mode VLAN, soit avec la configuration suivante,

eth0 --- br0 --- eth1 
      | 
     br0.100 

ici, j'ai ajouté un pont VLAN activé pour gérer la radio sur le VLAN 100. Le trafic arrive marqué sur eth1 et je suis incapable de le détecter en utilisant la même règle quand il traverse le pont.

Essayé de détecter les paquets avec iptables et ebtables avec ses options vlan. N'étaient pas en mesure de les filtrer par port udp via ebtables. De plus, n'a pas pu trouver la méthode pour les marquer par port via iptables. En outre, essayé de marquage en utilisant physdev sans succès.

Existe-t-il une bonne méthode pour faire cela pour un flux étiqueté?

+0

C'est une bonne question (et une question intéressante!) Mais c'est hors-sujet pour stackoverflow (qui est pour la question de développement de logiciel). Ce serait un bon candidat pour [serverfault] (http://serverfault.com) – larsks

Répondre

1

Vous ne pourrez peut-être pas voir les paquets pontés encapsulés 802.1Q avec iptables par défaut.

Pour ce faire, faire:

echo 1 > /proc/sys/net/bridge/bridge-nf-filter-vlan-tagged 

Voir http://ebtables.netfilter.org/documentation/bridge-nf.html

Maintenant, vous pouvez filtrer les paquets avec iptables. Vous devez savoir comment faire correspondre le port de destination dans le paquet avec quelque chose comme:

iptables -A FORWARD -m u32 --u32 "W&0xFFFF=0x4E20" -j DROP 

où 0x4E20 est votre port (20000) et W est le décalage de votre match du 4 octets (notez que vous êtes correspondant uniquement aux deux derniers octets avec 0x0000FFFF). Vous devez savoir ce que le W est.

Voir la page de manuel iptables pour plus de détails sur la correspondance u32.