Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)

  • État Nouveau
  • Pourcentage achevé
    0%
  • Type Autre
  • Catégorie LAN
  • Assignée à Personne
  • Système d'exploitation Freebox Server V6 (Révolution)
  • Sévérité Moyenne
  • Priorité Très Basse
  • Basée sur la version 4.9.13
  • Due pour la version Non décidée
  • Échéance Non décidée
  • Votes
  • Privée
Concerne le projet: Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)
Ouverte par fabienO - 24/11/2025
Dernière modification par fabienO - 26/11/2025

FS#40680 - Requêtes ARP incessantes du Freebox Server - Who has 192.168.27.1? - Who has 192.168.27.98?

Je viens de migrer ma V5 vers la V6 Révolution (j’étais peut-être le dernier en V5 :) et depuis mon réseau est saturé de requêtes ARP à raison d’environ deux par seconde. Exemple d’une capture Wireshark :

No.        Time            Source                  Destination     Protocol   Length          Info
1	   0.000000000	   FreeboxSas_4f:36:d3	   Broadcast	   ARP	      60	      Who has 192.168.27.1? Tell 192.168.27.14
2	   1.035509266	   FreeboxSas_4f:36:d3	   Broadcast	   ARP	      60	      Who has 192.168.27.98? Tell 192.168.27.99
3	   1.039834113	   FreeboxSas_4f:36:d3	   Broadcast       ARP	      60	      Who has 192.168.27.1? Tell 192.168.27.14
4	   2.079834644	   FreeboxSas_4f:36:d3	   Broadcast	   ARP	      60	      Who has 192.168.27.1? Tell 192.168.27.14
5	   2.079835099	   FreeboxSas_4f:36:d3	   Broadcast	   ARP	      60	      Who has 192.168.27.98? Tell 192.168.27.99
6	   3.119842341	   FreeboxSas_4f:36:d3	   Broadcast	   ARP	      60	      Who has 192.168.27.98? Tell 192.168.27.99
7	   3.120214935	   FreeboxSas_4f:36:d3	   Broadcast	   ARP	      60	      Who has 192.168.27.1? Tell 192.168.27.14

Cela perturbe très fortement mon monitoring réseau en le rendant pratiquement illisible. Par ailleurs, je déteste les services parasites sur mon réseau.

D’après mes recherches, ces requêtes seraient liées à la fonctionnalité de serveur VPN du Freebox Server.

Dans Freebox OS, tout est désactivé dans Serveur VPN et Client VPN ; dans Gestion des ports → Connexions entrantes, tout (Autorisé et Actif) est paramétré à Non, en particulier tout ce qui concerne Serveur VPN. Plus généralement, j’ai éliminé tous les services qu’il est possible de désactiver (je peux donner plus de détails si nécessaire).

En l’état actuel du système, est-il possible de faire cesser ces requêtes inutiles, indésirables et injustifiées ?
Sinon, serait-il possible de le faire évoluer pour que le serveur VPN soit totalement désactivé quand c’est le souhait de l’utilisateur ? Cela paraîtrait logique.

Tâche ouverte possiblement liée : FS#40505 - gros ralentissements de mon reseau / envoie d’ ARP sur des adresses fantomes

Merci.

Admin

bonjour,

D’après mes recherches, ces requêtes seraient liées à la fonctionnalité de serveur VPN du Freebox Server.

ce n'est pas lié au VPN

En l’état actuel du système, est-il possible de faire cesser ces requêtes inutiles, indésirables et injustifiées ?

non

Sinon, serait-il possible de le faire évoluer pour que le serveur VPN soit totalement désactivé quand c’est le souhait de l’utilisateur ? Cela paraîtrait logique.

si aucun service vpn n'est activé, alors le service VPN ne fait rien mis à part attendre un changement de configuratioN

fabienO a commenté le 25.11.2025 07:46

Bonjour mmakassikis, merci pour votre réponse.

ce n'est pas lié au VPN

Pourriez-vous s'il vous plaît donner quelques éléments sur l'origine et la justification de ces requêtes ARP sur mon réseau ?

Admin

il s'agit de tentatives de connexions de la box vers d'autres équipements free (player, backup 4g)

fabienO a commenté le 25.11.2025 17:55

Tout d'abord merci d'avoir corrigé mon hypothèse d'un lien avec le serveur VPN, j'ai modifié mon titre initial en conséquence.

« il s'agit de tentatives de connexions de la box vers d'autres équipements free (player, backup 4g) »

OK, merci pour l'information. J'imagine qu'il serait vain d'espérer une modification du design.
En ce qui concerne le Player, j'ai en effet remarqué que les requêtes pour 192.168.27.1 cessent quand il est démarré.
Le "backup 4g" (probablement 192.168.27.98) pourrait cependant peut-être faire l'objet d'une option au choix de l'utilisateur.

La seule solution semble de passer en mode bridge, avec des conséquences qu'il me reste à examiner, et mettre en place une passerelle.

Admin
Le "backup 4g" (probablement 192.168.27.98) pourrait cependant peut-être faire l'objet d'une option au choix de l'utilisateur.

le backup 4g est censé être plug-and-play pour l'abonné: la box passe automatiquement sur le backup si celui-ci est allumé et connecté au réseau local et le lien fibre/DSL est down.

rajouter une option est un coup à ce que quelqu'un la décoche, l'oublie, et le jour où il y a un besoin d'utiliser un backup cela ne marche pas du tout. bien évidemment tout le monde (abonné, hotline, …) aura oublié que cela existe.

Cela perturbe très fortement mon monitoring réseau en le rendant pratiquement illisible.

n'y a-t-il pas moyen de lui indiquer d'ignorer les requêtes ARP en question ?

fabienO a commenté le 25.11.2025 22:35

« le backup 4g est censé être plug-and-play pour l'abonné: la box passe automatiquement sur le backup si celui-ci est allumé et connecté au réseau local et le lien fibre/DSL est down. »

D'accord, je comprends. Mais puisque la fonctionnalité n'est utilisée que si la synchro est perdue, pourquoi ne pas lancer les requêtes uniquement dans ce cas ? Si c'est pour des raisons de diagnostic du boîtier backup, le technicien devrait pouvoir lancer les requêtes au besoin. Si c'est pour permettre à l'usager de tester la détection du boîtier, un élément de menu dans l'interface pourrait déclencher cette action. Pardonnez ma question, je suis bien sûr plus que loin d'avoir conscience de l'ensemble des impératifs.

« n'y a-t-il pas moyen de lui indiquer d'ignorer les requêtes ARP en question ? »

Oui,avec Wireshark c'est facile : clic droit sur la partie info du paquet (Who has 192…) → Appliquer comme un filtre → Non sélectionné. Le filtre automatiquement créé est
!(_ws.col.info == "Who has 192.168.27.98? Tell 192.168.27.99")
Mais en fait, j'ai surtout l'habitude de regarder ce qu'il se passe quand j'ai du trafic alors qu'il devrait être à zéro, et maintenant j'ai un trafic permanent. Je choisis les services et limite au strict nécessaire, ce qui me permettait de détecter une activité inhabituelle d'un coup d'œil ou de savoir si un programme communique. Bref, je viens de subir une petite disruption dans mes habitudes :) Vos explications ont cependant le mérite de rationaliser l'origine du problème et d'apporter des justifications recevables pour un service grand public destiné à des usages larges et variés.

Admin
D'accord, je comprends. Mais puisque la fonctionnalité n'est utilisée que si la synchro est perdue, pourquoi ne pas lancer les requêtes uniquement dans ce cas ?

le backup peut être connecté alors que le lien principal (fibre/dsl) est encore opérationel, auquel cas la box s'assure qu'il est en mode avion puisque non utilisé. Pour faire ceci, il faut bien s'y connecter.

le technicien devrait pouvoir lancer les requêtes au besoin

un backup peut être envoyé suite à l'identification d'un problème sur la ligne d'un abonné, sans intervention de technicien.

Mais en fait, j'ai surtout l'habitude de regarder ce qu'il se passe quand j'ai du trafic alors qu'il devrait être à zéro, et maintenant j'ai un trafic permanent

dans wireshark, vous pouvez utiliser le filtre "not vlan 400" avant de lancer la capture.

fabienO a commenté le 26.11.2025 22:41

Bonjour/Bonsoir mmakassikis. Je travaille sur une solution générale basée sur l'ID du VLAN suite à votre précieux indice. Je cherche à créer une règle nftables, mais ce n'est pas encore gagné :)
Je ferai, j'espère bientôt, une réponse complète à votre précédent message.

fabienO a commenté le 27.11.2025 22:39

Échec :(

table arp filter {
   chain INPUT {
      type filter hook input priority 0; policy accept;
      meta protocol arp arp saddr ether $FbxServerMAC arp ptype vlan counter drop
      counter accept
   }
}

ne matche rien, le compteur drop reste à zéro, même si je supprime la condition saddr. Le compteur accept incrémente doucement (c'est à dire normalement).

table netdev filter {
        chain INGRESS {
                type filter hook ingress device enp3s0 priority 0; policy accept;
                vlan id { 100, 400 } vlan type arp counter drop
                counter accept
        }
}

matche très bien, le compteur drop incrémente au rythme des requêtes du vlan. Mais pour une raison qui me dépasse, les paquets ne sont pas réellement droppés, ils apparaissent toujours dans Wireshark ou tcpdump, et mon indicateur de charge réseau n'est toujours pas à zéro. C'est très mystérieux pour moi.

« le backup peut être connecté alors que le lien principal (fibre/dsl) est encore opérationel, auquel cas la box s'assure qu'il est en mode avion puisque non utilisé. Pour faire ceci, il faut bien s'y connecter. »
« un backup peut être envoyé suite à l'identification d'un problème sur la ligne d'un abonné, sans intervention de technicien. »

Je me doutais qu'il y avait de bonnes raisons. Merci pour les explications.

« dans wireshark, vous pouvez utiliser le filtre "not vlan 400" avant de lancer la capture. »

Votre indice m'a incité à chercher une solution nftables utilisant l'ID du VLAN. Même si j'ai échoué, c'est une recherche intéressante. Merci beaucoup.
Le filtre d'affichage de Wireshark qui fonctionne bien est

!(arp && vlan.id in {100,400})

Dommage que ça ne soit pas aussi simple avec nftables :)

C'est un plaisir et un privilège d'être guidé avec des informations de première main, un grand merci mmakassikis. Je ne manquerai pas de publier un message si je trouve une solution.

fabienO a commenté le 28.11.2025 06:32

J'ai réfléchi (si, si). Pas de mystère. D'après nft(8) :

Table 3. Netdev address family hooks
[…]
ingress
All packets entering the system are processed by this hook. It is invoked after the network taps (ie. tcpdump), right after tc ingress and before layer 3 protocol handlers, it can be used for early filtering and policing.

C'est donc normal que, par exemple, tcpdump voit passer les paquets. Le trafic réel sur l'interface physique ne peut pas être ignoré.
La solution ne peut être qu'un switch manageable. Ou une passerelle intermédiaire (là la règle de drop serait efficiente pour le reste du réseau).

nbanba a commenté le 29.11.2025 10:05

Bonjour

un peu violent mais:

sudo ethtool -K enp3s0 rxvlan off

et

table netdev filter {
    chain INGRESS {
        type filter hook ingress device enp3s0 priority 0; policy accept;
        vlan id { 100, 400 } arp counter drop
    }
}

Puis monitor si vous voyez toujours les vlan:

nft monitor trace
tcpdump -i enp3s0 -e vlan | grep 400

Cordialement
nbanba

nbanba a commenté le 29.11.2025 10:29

Bonjour

Si vous ne voulez pas faire la solution violente proposée avec ethtool -K vous pouvez aussi faire des règles pour chaque vlan
quelque chose comme

Monter une interface vlan pour chaque vlan qui "atrape le trafic"

sudo ip link add link enp3s0 name enp3s0.100 type vlan id 100
sudo ip link set enp3s0.100 up
sudo ip link add link enp3s0 name enp3s0.400 type vlan id 100
sudo ip link set enp3s0.400 up

Puis créer un ingress hook sur chaque vlan interfaces:

table netdev filter {
    chain INGRESS_VLAN100 {
        type filter hook ingress device enp3s0.100 priority 0;
        counter drop
    }
    chain INGRESS_VLAN400 {
        type filter hook ingress device enp3s0.100 priority 0;
        counter drop
    }
}

et confirmer les drop avec

watch -n 0.5 'nft list ruleset | grep counter'

Dans l'idées ça peut marcher

Sinon autre idée, eh oui j'en ai plein (problème intéressant aux limite du L2 dans la stack net du kernel), traffic control:

tc qdisc add dev enp3s0 ingress
tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 action drop hw
tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 400 action drop hw

Ou violemment désactiver les vlan sur le hardware (très violent !):

# mellanox
mlxconfig -d <pci> set LINK_TYPE_P1=2
# intel E810 - incompatible sur X710 / XL710
devlink port function set pci/<addr>/1 trust off


Sinon on peut également travailler directement à la couche OSI-L2 (Ethernet) avec ethernet bridge:

ebtables -A INPUT -i enp3s0 -p arp --arp-op Request -vlan-id 100 -j DROP
ebtables -A INPUT -i enp3s0 -p arp --arp-op Request -vlan-id 400 -j DROP

Dites moi si une des solution fonctionne svp

Cordialement
nbanba

fabienO a commenté le 29.11.2025 23:46

Bonjour nbanba, merci beaucoup pour vos propositions de tests. Dans l'ordre:


proposition 1

#> ethtool -K enp3s0 rxvlan off
#> ethtool --show-offload enp3s0 | grep "rx-\?vlan"
rx-vlan-offload: off
rx-vlan-filter: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
table netdev filter {
   chain INGRESS {
      type filter hook ingress device enp3s0 priority 0; policy accept;
      meta nftrace set 1
      vlan id { 100, 400 } vlan type arp counter drop
      counter accept
   }
}
#> nft monitor trace
trace id 98d04b60 netdev filter INGRESS packet: iif "enp3s0" ether saddr 34:27:92:4f:36:d3 ether daddr ff:ff:ff:ff:ff:ff vlan pcp 0 vlan dei 0 vlan id 400 arp operation request
trace id 98d04b60 netdev filter INGRESS rule meta nftrace set 1 (verdict continue)
trace id 98d04b60 netdev filter INGRESS rule vlan id { 100, 400 } vlan type arp counter packets 2956 bytes 124152 drop (verdict drop)
trace id c97e425f netdev filter INGRESS packet: iif "enp3s0" ether saddr 34:27:92:4f:36:d3 ether daddr ff:ff:ff:ff:ff:ff vlan pcp 5 vlan dei 0 vlan id 100 arp operation request
trace id c97e425f netdev filter INGRESS rule meta nftrace set 1 (verdict continue)
trace id c97e425f netdev filter INGRESS rule vlan id { 100, 400 } vlan type arp counter packets 2956 bytes 124152 drop (verdict drop)
[...]
!>#> tcpdump -i enp3s0 -e vlan | grep 400
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
17:34:07.828698 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:08.839236 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:09.879216 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:12.828873 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:13.879128 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:14.919118 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:17.829050 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:18.839029 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:19.879034 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:22.829241 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:23.878977 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
17:34:24.918933 34:27:92:4f:36:d3 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
^C21 packets captured
21 packets received by filter
0 packets dropped by kernel
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0800 or ether proto 0x0806'
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel

proposition 2

#> ip link add link enp3s0 name enp3s0.100 type vlan id 100
#> ip link set enp3s0.100 up
#> ip link add link enp3s0 name enp3s0.400 type vlan id 400
#> ip link set enp3s0.400 up
table netdev filter {
    chain INGRESS_VLAN100 {
        type filter hook ingress device enp3s0.100 priority 0;
        meta nftrace set 1
        counter drop
    }
    chain INGRESS_VLAN400 {
        type filter hook ingress device enp3s0.400 priority 0;
        meta nftrace set 1
        counter drop
    }
}
#> nft monitor trace
trace id 1397141f netdev filter INGRESS_VLAN100 packet: iif "enp3s0.100" ether saddr 34:27:92:4f:36:d3 ether daddr ff:ff:ff:ff:ff:ff arp operation request
trace id 1397141f netdev filter INGRESS_VLAN100 rule meta nftrace set 1 (verdict continue)
trace id 1397141f netdev filter INGRESS_VLAN100 rule counter packets 26 bytes 1092 drop (verdict drop)
trace id 5389d103 netdev filter INGRESS_VLAN400 packet: iif "enp3s0.400" ether saddr 34:27:92:4f:36:d3 ether daddr ff:ff:ff:ff:ff:ff arp operation request
trace id 5389d103 netdev filter INGRESS_VLAN400 rule meta nftrace set 1 (verdict continue)
trace id 5389d103 netdev filter INGRESS_VLAN400 rule counter packets 24 bytes 1008 drop (verdict drop)
[...]
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0800 or ether proto 0x0806'
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel

Je pense qu'on est peu ou prou dans le même cas que ce à quoi j'étais arrivé, c'est à dire que les paquets sont droppés trop tard.


proposition 3

#> tc qdisc add dev enp3s0 ingress
#> tc qdisc show 
qdisc noqueue 0: dev lo root refcnt 2
qdisc fq_codel 0: dev enp3s0 root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
qdisc ingress ffff: dev enp3s0 parent ffff:fff1 ----------------
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 action drop hw
Command line is not complete. Try option "help"

J'ai tenté de compléter la ligne de commande après quelques recherches dans le manuel de tc et ses manuels affiliés.

#> tc filter add dev enp3s0 ingress protocol 802.1Q prio 1 flower vlan_id 100 flowid ffff:1 action drop hw
Command line is not complete. Try option "help"

Je me suis arrêté là car tc n'est pas une commande qu'on maîtrise en cinq minutes.
Une idée ?


proposition 4

« Ou violemment désactiver les vlan sur le hardware (très violent !): »

# mellanox
mlxconfig -d <pci> set LINK_TYPE_P1=2
# intel E810 - incompatible sur X710 / XL710
devlink port function set pci/<addr>/1 trust off
$> lspci | grep -i "eth"
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 09)

proposition 5

#> ebtables -L
Bridge table: filter
 
Bridge chain: INPUT, entries: 0, policy: ACCEPT
 
Bridge chain: FORWARD, entries: 0, policy: ACCEPT
 
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
#> ebtables -A INPUT -i enp3s0 -p arp --arp-op Request --vlan-id 100 -j DROP
ebtables v1.8.11 (nf_tables):  RULE_APPEND failed (Invalid argument): rule in chain INPUT
#> ### le protocole doit être spécifié comme 802_1Q pour pouvoir utiliser --vlan-id
#> ### --protocol ne peut pas être spécifié plusieurs fois
#> ebtables -A INPUT -i enp3s0 -p 802_1Q --vlan-id 400 -j DROP
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0800 or ether proto 0x0806'
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
#> ebtables --delete INPUT -p 802_1Q -i enp3s0 --vlan-id 400 -j DROP
#> ip link add link enp3s0 name enp3s0.4 type vlan id 400
#> ip link set enp3s0.4 up
#> ebtables -A INPUT -i enp3s0.4@enp3s0 -p 802_1Q --vlan-id 400 -j DROP
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0800 or ether proto 0x0806'
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 400, p 0, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.98 tell 192.168.27.99, length 42
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel

Peut-être tc s'il est possible de corriger la commande ?

Merci beaucoup nbanba.

note: si un admin en a la possibilité, serait-il possible de corriger mon subjonctif dans mon message précédent ? que […] tcpdump voit passer les paquets → que […] tcpdump voie passer les paquets.

nbanba a commenté le 30.11.2025 09:41

Bonjour

J'ai joué les commandes tc sur une VM avec une NIC VirtIO ⇒ no hardware offload.
Donc dans mes tests, seul les options "softwares" fonctionnent et l'interface est enp0s5 (à modifier par enp3s0):

$ sudo tc filter add dev enp0s5 ingress protocol 802.1Q flower vlan_id 100 skip_hw action drop
$ sudo tc -s filter show dev enp0s5 ingress
filter protocol 802.1Q pref 49152 flower chain 0 
filter protocol 802.1Q pref 49152 flower chain 0 handle 0x1 
  vlan_id 100
  skip_hw
  not_in_hw
	action order 1: gact action drop
	 random type none pass val 0
	 index 1 ref 1 bind 1 installed 305 sec used 305 sec
	Action statistics:
	Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
	backlog 0b 0p requeues 0

On voit clairement le "skip hardware offload" (skip_hw) du à la typologie de NIC que j'utilise pour ce test (redhat virtIO virtual nic)

Chez moi les options sont limités

hw offload to NIC ASIC ❌ “Illegal TC index” –> NIC does not support HW TC
skip_sw only hardware, never software ❌ “Operation not supported” –> NIC has no HW pipeline
skip_hw software only, never hardware ✔ accepted –> software mode only

Mais chez vous sur votre NIC physique 'hw' devrait fonctionner

Vous pouvez également essayer de bloquer l'ARP

sudo tc filter add dev enp0s5 ingress protocol 802.1Q flower vlan_id 100 vlan_ethtype arp action drop skip_hw
sudo tc -s filter show dev enp0s5 ingress
filter protocol 802.1Q pref 49150 flower chain 0 
filter protocol 802.1Q pref 49150 flower chain 0 handle 0x1 
  vlan_id 100
  vlan_ethtype arp
  eth_type arp
  not_in_hw
	action order 1: gact action drop
	 random type none pass val 0
	 index 3 ref 1 bind 1 installed 5 sec used 5 sec
	Action statistics:
	Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
	backlog 0b 0p requeues 0

Toujours en essayant les options du tableau ci dessus.

PS: sinon je vois que vous maniez plutôt bien bash donc j'en profite pour faire un peu de pub: Je maintien une library BASH pour gérer les freebox depuis l'API FreeboxOS permettant d'utiliser les fonctionnalités de l'API comme de simples commandes shell dans votre terminal, exemple pour lister les fichiers sur le disque de la freebox (chez moi /FBX24T mais souvent /disque\040dur avec le nopm par défaut) :

$ . loginfbx
$ ls_fs /FBX24T/box-vm-bck/
idx: 0    hidden  dir	20251123-21:17:54	size: 4 KB	name: .
idx: 1    hidden  dir	20251123-17:47:34	size: 4 KB	name: ..
idx: 2  	  dir	20241123-17:29:25	size: 4 KB	name: 20241222_vm
idx: 3  	  dir	20250202-18:50:44	size: 4 KB	name: 20250202_vm
idx: 4  	  dir	20250208-11:59:05	size: 4 KB	name: 20250208_vm
idx: 5  	  dir	20250225-08:28:53	size: 4 KB	name: 20250225_vm
idx: 6  	  dir	20250319-08:36:25	size: 4 KB	name: 20250319_vm
idx: 7  	  dir	20250410-16:28:07	size: 4 KB	name: 20250410_vm
idx: 8  	  dir	20250731-09:55:10	size: 4 KB	name: 20250731_vm
idx: 9  	  dir	20251116-20:04:02	size: 4 KB	name: 20251116_vm
idx: 10  	  dir	20251123-21:17:00	size: 4 KB	name: 20251123_vm
idx: 11  	  dir	20251123-17:58:46	size: 4 KB	name: _bad_20251123_vm
idx: 12  	  file	20250728-09:13:20	size: 10 GB	name: vm-franck-00.qcow2
idx: 13  	  file	20250728-09:13:20	size: 1 MB	name: vm-franck-00.qcow2.efivars
$
$ list_wifi-ap 
---------------------------------------------------------------------------------------------------------
						WIFI GLOBAL STATE
---------------------------------------------------------------------------------------------------------
WIFI STATUS: enabled
POWER SAVE:  supported
RADIO COUNT: 3
---------------------------------------------------------------------------------------------------------
			AP ID, NAME, BAND, STATE, WIDTH, PRIMARY CHANNEL, SECONDARY CHANNEL
---------------------------------------------------------------------------------------------------------
AP-0 id: 0  name: 2.4G 	 band: 2d4g 	width: 20  	chan: 9,0 	state: active
AP-10 id: 10  name: 5G 	 band: 5g 	width: 80  	chan: 36,40 	state: active
AP-30 id: 30  name: 5G1 	 band: 5g 	width: null  	chan: null 	state: disabled_power_saving
$...

Le projet est ici:
https://github.com/nbanb/fbx-delta-nba_bash_api.sh
Il y a la doc en ligne sur la page du projet github et aussi un wiki résumant les actions / configurations :
https://github.com/nbanb/fbx-delta-nba_bash_api.sh/wiki

Et ce wiki contient également 1 page 'quick start' en français ici:
https://github.com/nbanb/fbx-delta-nba_bash_api.sh/wiki#access-quick-start-documentation-in-french
(désolé des users peu à l'aise avec l'anglais me l'ont demandé)

Ça peut vous intéresser !

Cordialement
nbanba

nbanba a commenté le 30.11.2025 09:59

Bonjour

Désolé pour ce second post mais à la relecture de votre réponse, je pensais à:

sudo bash -c 'echo "options r8169 rx_vlan=0 tx_vlan=0" >>/etc/modprobe.d/r8169.conf'
sudo modprobe -r r8169
sudo modprobe r8169

ethtool -k ne devrait pas pouvoir réactiver le support de vlan en faisant ça

ethtool --show-offload enp3s0 | grep "rx-\?vlan"

Vous devriez voir toutes les options flag avec

[fixed]

Cordialement
nbanba

fabienO a commenté le 01.12.2025 21:59

Bonjour nbanba, merci d'avoir creusé le sujet. Pas d'action sur le problème, ça ne semble pas possible, en tout cas avec mon interface Realtek.

#> tc -s filter show dev enp3s0 ingress
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 action drop
#> tc -s filter show dev enp3s0 ingress
filter protocol 802.1Q pref 49152 flower chain 0
filter protocol 802.1Q pref 49152 flower chain 0 handle 0x1
  vlan_id 100
  not_in_hw
   action order 1: gact action drop
    random type none pass val 0
    index 1 ref 1 bind 1 installed 11 sec used 0 sec firstused 10 sec
   Action statistics:
   Sent 252 bytes 6 pkt (dropped 6, overlimits 0 requeues 0)
   backlog 0b 0p requeues 0
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0806' | grep "vlan 100"
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
^C22 packets captured
23 packets received by filter
0 packets dropped by kernel
#> tc filter delete dev enp3s0 ingress prio 49152
#> tc -s filter show dev enp3s0 ingress
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 skip_sw action drop
RTNETLINK answers: Operation not supported
We have an error talking to the kernel
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 skip_hw action drop
#> tc -s filter show dev enp3s0 ingress
filter protocol 802.1Q pref 49152 flower chain 0
filter protocol 802.1Q pref 49152 flower chain 0 handle 0x1
  vlan_id 100
  skip_hw
  not_in_hw
   action order 1: gact action drop
    random type none pass val 0
    index 1 ref 1 bind 1 installed 2 sec used 0 sec firstused 1 sec
   Action statistics:
   Sent 84 bytes 2 pkt (dropped 2, overlimits 0 requeues 0)
   backlog 0b 0p requeues 0
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0806' | grep "vlan 100"
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
^C22 packets captured
23 packets received by filter
0 packets dropped by kernel

#> tc -s filter show dev enp3s0 ingress
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 vlan_ethtype arp action drop
#> tc -s filter show dev enp3s0 ingress
filter protocol 802.1Q pref 49152 flower chain 0
filter protocol 802.1Q pref 49152 flower chain 0 handle 0x1
  vlan_id 100
  vlan_ethtype arp
  eth_type arp
  not_in_hw
   action order 1: gact action drop
    random type none pass val 0
    index 1 ref 1 bind 1 installed 2 sec used 0 sec firstused 0 sec
   Action statistics:
   Sent 42 bytes 1 pkt (dropped 1, overlimits 0 requeues 0)
   backlog 0b 0p requeues 0
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0806' | grep "vlan 100"
 
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
^C24 packets captured
24 packets received by filter
0 packets dropped by kernel
#> tc filter delete dev enp3s0 ingress prio 49152
#> tc -s filter show dev enp3s0 ingress
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 vlan_ethtype arp action drop skip_sw
Error: Mismatch between action and filter offload flags.
We have an error talking to the kernel
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 vlan_ethtype arp skip_sw action drop
RTNETLINK answers: Operation not supported
We have an error talking to the kernel
#> tc filter add dev enp3s0 ingress protocol 802.1Q flower vlan_id 100 vlan_ethtype arp skip_hw action drop
#> tc -s filter show dev enp3s0 ingress
filter protocol 802.1Q pref 49152 flower chain 0
filter protocol 802.1Q pref 49152 flower chain 0 handle 0x1
  vlan_id 100
  vlan_ethtype arp
  eth_type arp
  skip_hw
  not_in_hw
   action order 1: gact action drop
    random type none pass val 0
    index 1 ref 1 bind 1 installed 8 sec used 0 sec firstused 2 sec
   Action statistics:
   Sent 126 bytes 3 pkt (dropped 3, overlimits 0 requeues 0)
   backlog 0b 0p requeues 0
#> tcpdump -nnei enp3s0 -vvt 'ether proto 0x8100 and ether[14:2] & 0xfff == 100 or ether proto 0x0806' | grep "vlan 100"
tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
34:27:92:4f:36:d3 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 60: vlan 100, p 5, ethertype ARP (0x0806), Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.27.1 tell 192.168.27.14, length 42
^C22 packets captured
22 packets received by filter
0 packets dropped by kernel

#> cat /etc/modprobe.d/r8169.conf
options r8169 rx_vlan=0 tx_vlan=0
#> modprobe -r r8169
#> modprobe r8169
#> tail -f /var/log/syslog
[...]
[...] kernel: r8169: unknown parameter 'rx_vlan' ignored
[...] kernel: r8169: unknown parameter 'tx_vlan' ignored

« j'en profite pour faire un peu de pub: Je maintien une library BASH pour gérer les freebox depuis l'API FreeboxOS »

Vous faites bien de faire un peu de pub, on ne travaille pas pour rien :) Merci pour le lien. Vous trouverez certains de mes scripts ici https://forums.debian.net/viewtopic.php?t=151887 (apt-fly, schow-pkg, why-pkg). Actuellement il faut créer un compte pour y accéder en raison du comportement déraisonnable des bots AI qui saturent le site. Si vous n'utilisez pas Debian vous pourriez néanmoins trouver des choses qui pourraient vous intéresser dans les scripts. Si vous avez des questions ou des remarques, il y a un e-mail de contact en début des scripts.

Encore merci et bonne journée nbanba !

nbanba a commenté le 01.12.2025 22:30

Bonjour

Merci pour votre retour !
La difficultée est d'attraper les trames arp en tout premier.
Si traffic control "queuing disciplines" n'y arrive pas malgré sa place d'action dans la stack netfilter:
https://fr.wikipedia.org/wiki/Netfilter#/media/Fichier%3ANetfilter-packet-flow.svg

Il ne reste plus qu'à écrire un petit hoock en C pour eBPF, et tester !

Sinon merci pour les scripts, en fait Debian et moi c'est une longue histoire, j'utilise Debian à titre personnel depuis potaeto et j'ai mon ordi pro sous Debian depuis2que je travaille…
Merci encore

PS: la lib bash contient plus de 115 fonctions dont plusieurs dizaines dites "frontend" utilisables comme de simples commandes dans un terminal. Dans certains cas comme l'upload de fichiers par websocket API (utilisant des pipes bidirectionnels), on arrive aux limites de bash. J'assure le support, n'hésitez pas à me solliciter si besoin.

Cordialement
nbanba

Chargement...

Activer les raccourcis clavier

Liste des tâches

Détails de la tâche

Édition de la tâche