Ok j'ai trouvé, la norme 802.1p définit une inversion de prio 1 et prio 0 pour taguer les packets.
Voici la configuration actuelle permettant de faire tout dans les règles de l'art et qui fonctionne parfaitement de mon côté (eh oui PF c'est carrèment mieux que les trucs crado avec netfilter
).
C'est le PF le plus simple avec une bonne sécurité pour le routeur OpenBSD. Pour rappel PacketFilter est stateful, donc seul les entrées autorisées d'un côté pourront revenir d'un autre. Il faut encore que j'affine cela pour avoir un bon filtrage pour l'IPv6 mais les hosts IPv4 sont bien protégés et le routeur n'a que SSH et HTTP d'actifs.
wan_iface="vlan832"
table <lan_v4> { 192.168.1.0/24 172.16.9.0/23 }
block log # block stateless traffic
pass keep state # establish keep-state
block in log quick on $wan_iface inet proto tcp to port { ssh http } # Block ssh and http from WAN
block in log quick on $wan_iface inet proto udp to port { syslog domain } # Block DNS and syslog from WAN
# Tag packets on wan interface with vlan priority 0 (1 in PF because of 802.1p)
match out on $wan_iface inet proto tcp set prio 1
# nat clients to wan interface
pass out quick on $wan_iface inet from <lan_v4> nat-to ($wan_iface) keep state
J'ai du découper le set prio, ca a permi de corriger le pb et ca ne s'applique que sur TCP ici, je pense qu'un 2e match out qui ignore le port bootpc devrait faire l'affaire pour ceux qui aiment UDP
Voici le bench actuel, c'est très satisfaisant
En ce qui concerne l'IP je note que j'ai la même depuis plus de 24 heures
Je valide donc ma configuration avec OpenBSD, très simple avec juste le paquet isc-dhcp-client
Je commence les tests IPv6 avec dibbler bientôt et s'il faut à terme je filerai une image OpenBSD de mon routeur (sans les ID bien sûr) pour ceux qui veulent se monter ca sur un routeur (j'ai une alix board 2d13 en l'occurence)