Auteur Sujet: Filtrer les raw socket avec nftables ?  (Lu 2290 fois)

0 Membres et 1 Invité sur ce sujet

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 306
Filtrer les raw socket avec nftables ?
« Réponse #24 le: 11 juillet 2024 à 16:05:52 »
@cyayon : Il semblerait bien.

Avec un peu de chance, je pourrais lancer mon test ce week-end.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 306
Filtrer les raw socket avec nftables ?
« Réponse #25 le: 11 juillet 2024 à 16:07:46 »
Il faut aussi pouvoir modifier le PCP des paquets ARP.

Je me demande si le code ci-dessous permet cela ?

table arp filter {
chain output {
type filter hook output priority 0;
oifname vlan832 meta priority set 0:6 comment "Set CoS value to 6 for ARP packets"
}
}

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 306

cyayon

  • Abonné Orange Fibre
  • *
  • Messages: 675
  • Cordon 74 - Orange Fibre Pro
Filtrer les raw socket avec nftables ?
« Réponse #27 le: 11 juillet 2024 à 16:21:58 »
je n'en ai jamais eu besoin. Mais c'est peut etre mieux de l'ajouter.
Cela me semblerait logique et ca allégerait le système.
Je suis actuellement sur mikrotik (plus pour tres longtemps je pense), mais je ne peux pas tester rapidement.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 306
Filtrer les raw socket avec nftables ?
« Réponse #28 le: 11 juillet 2024 à 17:20:10 »
Il faut avoir une version récente du noyau Linux (au moins >= 5.16) pour le support du crochet egress.

cyayon

  • Abonné Orange Fibre
  • *
  • Messages: 675
  • Cordon 74 - Orange Fibre Pro
Filtrer les raw socket avec nftables ?
« Réponse #29 le: 11 juillet 2024 à 17:23:29 »
Je suis sous Archlinux (rolling), actuellement 6.9.8…

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 433
  • XGS-PON et G-PON
Filtrer les raw socket avec nftables ?
« Réponse #30 le: 11 juillet 2024 à 22:48:24 »
table netdev filter {
      chain egress {
              type filter hook egress device eth1 priority 0;
              udp dport { 67, 547 } meta priority set 0:6 comment "Set CoS value to 6 for DHCPv4/v6 packets"
      }
}

Suffit il me semble. Les trames DHCP capturé sont bien en prio 6.

Ou alors c'est pour autre chose que les trames DHCP, si oui, quoi ?

cyayon

  • Abonné Orange Fibre
  • *
  • Messages: 675
  • Cordon 74 - Orange Fibre Pro
Filtrer les raw socket avec nftables ?
« Réponse #31 le: 12 juillet 2024 à 10:24:13 »
Salut,

il me semble qu'il faut que les packets qui doivent être targués COS6 et DSCP 6 :
- DHCP requests/renew (clients ipv4 et ipv6)
- ICMP ipv6 (nd-router-solicit, nd-neighbor-solicit, nd-neighbor-advert)
- ARP

Donc,  si egress fonctionne (et suffit), il faudrait ça :


define iface_wan1 = <orange_interface_vlan_832>

table netdev filter {
chain egress {
             type filter hook egress devices = $iface_wan1 priority 0;
                 udp dport { 67, 547 } meta priority set 0:6 ip dscp set cs6 counter comment "egress_orange_DHCP"
                 icmpv6 type { nd-router-solicit, nd-neighbor-solicit, nd-neighbor-advert } meta priority set 0:6 ip6 dscp set cs6 counter comment "egress_orange_ICMP"
                 ip6 daddr { fe80::/10, ff02::/16 } meta priority set 0:6 ip6 dscp set cs6 counter comment "egress_orange_LL"
}
}


Questions :
- donc plus besoin de règles mangle ?
- Comment fait-on pour ARP ?
- Est-ce que egress suffit pour les DHCP clients request ET renew ?


Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 433
  • XGS-PON et G-PON
Filtrer les raw socket avec nftables ?
« Réponse #32 le: 12 juillet 2024 à 17:55:10 »
J'ai envie de dire que seul la règle
table netdev filter {
      chain egress {
              type filter hook egress device eth1 priority 0;
              udp dport { 67, 547 } meta priority set 0:6 comment "Set CoS value to 6 for DHCPv4/v6 packets"
      }
}
est importante.

CF l'image. Les résultats sont les mêmes pour les req DHCP ipv6.

Après levieux expliquait effectivement la chose suivante :
Citer
La COS6 sert à prioriser les pkts DHCP(4/6), ARP et ICMP NS/NA entre la boxe et la BNG (premier routeur qui gère les IPs)  qui gère le contexte client.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 306
Filtrer les raw socket avec nftables ?
« Réponse #33 le: 12 juillet 2024 à 17:57:50 »
@cyayon :

Les chaînes nftables sont plus ou moins équivalentes aux tables iptables. Néanmoins, nftables est un socle d'application étant plus abstrait que iptables. On modifie l'en-tête des paquets
via une déclaration de la charge utile (payload statement).


Citation de: man 8 nft
payload_expression   set    value

[18:10] Je me suis trompé ce n'est pas une déclaration de charge utile (payload statement) mais une déclaration meta (meta statement).

Citation de: man 8 nft
meta  {mark | priority | pkttype | nftrace | broute}  set  value

L'expression de la charge utile est le champ de l'en-tête d'un paquet (c.f. man 8 nft).

Pour l'ARP, je me suis aussi posé la question.

Il faut aussi pouvoir modifier le PCP des paquets ARP.

Je me demande si le code ci-dessous permet cela ?

table arp filter {
chain output {
type filter hook output priority 0;
oifname vlan832 meta priority set 0:6 comment "Set CoS value to 6 for ARP packets"
}
}

Cela me paraîtrait logique de changer la priorité d'un paquet ARP dans une table de la famille ARP.

Remarque : On peut écrire meta oifname ou tout simplement oifname dans une expression meta (le mot meta est optionnel).
« Modifié: 12 juillet 2024 à 18:22:47 par basilix »

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 433
  • XGS-PON et G-PON
Filtrer les raw socket avec nftables ?
« Réponse #34 le: 12 juillet 2024 à 18:21:16 »
C'est bon j'ai l'ensemble (sauf ARP).

Mastah

  • Abonné Orange Fibre
  • *
  • Messages: 433
  • XGS-PON et G-PON
Filtrer les raw socket avec nftables ?
« Réponse #35 le: 12 juillet 2024 à 18:23:49 »
DHCPV4/V6 => image 1

RA/RS => image 2