• Nftables/Conntrack: confusion ctmark/fwmark

    From Olivier@21:1/5 to All on Mon Oct 18 16:20:01 2021
    Bonjour,

    Je découvre nftables sur une machine équipée de Bullseye.

    Sur cette machine j'ai les règles:

    # ip rule show
    0: from all lookup local
    0: from all fwmark 0x2 lookup link2
    32766: from all lookup main
    32767: from all lookup default

    J'aimerai que nftables ajoute une marque donnée pour le trafic non-marqué reçu sur une interface Ethernet donnée, auto-configurée par DHCP.
    Comment l'obtenir ?

    J'ai essayé (sans succès) où ens3.432 est le nom de l'interface (virtuelle) sur laquelle le trafic est reçu:

    add rule ip mangle input iifname "ens3.432" meta mark 0 log prefix
    "Rule42-A1" counter ct mark set 0x2

    La table mangle et sa chaine input sont définies par:

    table mangle {
    chain prerouting { type filter hook prerouting priority -150; }
    chain input { type filter hook input priority -150; }
    chain forward { type filter hook forward priority -150; }
    chain output { type route hook output priority -150; }
    chain postrouting { type filter hook postrouting priority -150; }
    }

    Dans les faits, j'observe que:

    - la règle mangle ci-dessus est exécutée car je elle figure dans les logs
    et la commande "conntrack -L -o id,extended" montre qu'une marque est appliquée sur le rafic avec l'émetteur

    - la réponse est émise vers l'émetteur avec la bonne adresse source mais
    une autre interface (celle par défaut).

    Ces deux observations me laissent pense que la règle "fwmark 0x2 lookup
    link2" est ignorée.
    Cette conviction est renforcée par le fait que quand je remplace cette
    règle par une règle basée sur l'IP source ("from 192.168.17.0/24 lookup link2"), l'émetteur reçoit la réponse via la bonne interface.
    Comme l'interface est configurée par DHCP, j'aimerai autant que possible ne pas utiliser de règle faisant intervenir des données que je ne maîtrise pas (ie celles fournies par le serveur DHCP).

    J'ai l'impression que:
    soit il y a une confusion de ma part entre les marques de conntrack et
    celles de nftables,
    soit il y a une erreur dans la définition de la chaine input ou sa table mangle,
    soit encore autre chose.

    Qui pourrait me mettre sur la bonne voie ?

    Slts

    <div dir="ltr"><div>Bonjour,</div><div><br></div><div>Je découvre nftables sur une machine équipée de Bullseye.</div><div><br></div><div>Sur cette machine j&#39;ai les règles:</div><div><br></div><div># ip rule show<br>0: from all lookup local<br>0:
    from all fwmark 0x2 lookup link2<br>32766: from all lookup main<br>32767: from all lookup default<br></div><div><br></div><div>J&#39;aimerai que nftables ajoute une marque donnée pour le trafic non-marqué reçu sur une interface Ethernet donnée, auto-
    configurée par DHCP.</div><div>Comment l&#39;obtenir ?</div><div><br></div><div>J&#39;ai essayé (sans succès) où ens3.432 est le nom de l&#39;interface (virtuelle) sur laquelle le trafic est reçu:</div><div><br></div><div>add rule ip mangle input
    iifname &quot;ens3.432&quot; meta mark 0 log prefix &quot;Rule42-A1&quot; counter ct mark set 0x2</div><div><br></div><div>La table mangle et sa chaine input sont définies par:</div><div><br></div><div>table mangle {<br> chain prerouting { type filter
    hook prerouting priority -150; }<br> chain input { type filter hook input priority -150; }<br> chain forward { type filter hook forward priority -150; }<br> chain output { type route hook output priority -150; }<br> chain postrouting { type filter
    hook postrouting priority -150; }<br>}</div><div><br></div><div>Dans les faits, j&#39;observe que:</div><div><br></div><div>- la règle mangle ci-dessus est exécutée car je elle figure dans les logs et la commande &quot;conntrack -L -o id,extended&quot;
    montre qu&#39;une marque est appliquée sur le rafic avec l&#39;émetteur<br></div><div><br></div><div>- la réponse est émise vers l&#39;émetteur avec la bonne adresse source mais une autre interface (celle par défaut).</div><div><br></div><div>Ces
    deux observations me laissent pense que la règle &quot;fwmark 0x2 lookup link2&quot; est ignorée.</div><div>Cette conviction est renforcée par le fait que quand je remplace cette règle par une règle basée sur l&#39;IP source (&quot;from <a href="
    http://192.168.17.0/24">192.168.17.0/24</a> lookup link2&quot;), l&#39;émetteur reçoit la réponse via la bonne interface.</div><div>Comme l&#39;interface est configurée par DHCP, j&#39;aimerai autant que possible ne pas utiliser de règle faisant
    intervenir des données que je ne maîtrise pas (ie celles fournies par le serveur DHCP).</div><div><br></div><div>J&#39;ai l&#39;impression que:</div><div>soit il y a une confusion de ma part entre les marques de conntrack et celles de nftables,</div><
    soit il y a une erreur dans la définition de la chaine input ou sa table mangle,</div><div>soit encore autre chose.</div><div><br></div><div>Qui pourrait me mettre sur la bonne voie ?</div><div><br></div><div>Slts<br></div><div><br></div><div><br></
    </div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Olivier@21:1/5 to All on Mon Oct 18 16:20:01 2021
    Dans [1], j'ai lu:
    nft add rule inet classify output ip daddr 1.1.1.1 ct mark set numgen inc
    mod 3 offset 390
    nft add rule inet classify output ip daddr 1.1.1.1 meta mark set ct mark

    Qui pourrait m'expliquer ces 2 lignes ?

    [1] https://forums.gentoo.org/viewtopic-t-1136379-start-0.html

    Le lun. 18 oct. 2021 à 16:17, Olivier <oza.4h07@gmail.com> a écrit :

    Bonjour,

    Je découvre nftables sur une machine équipée de Bullseye.

    Sur cette machine j'ai les règles:

    # ip rule show
    0: from all lookup local
    0: from all fwmark 0x2 lookup link2
    32766: from all lookup main
    32767: from all lookup default

    J'aimerai que nftables ajoute une marque donnée pour le trafic non-marqué reçu sur une interface Ethernet donnée, auto-configurée par DHCP.
    Comment l'obtenir ?

    J'ai essayé (sans succès) où ens3.432 est le nom de l'interface (virtuelle) sur laquelle le trafic est reçu:

    add rule ip mangle input iifname "ens3.432" meta mark 0 log prefix "Rule42-A1" counter ct mark set 0x2

    La table mangle et sa chaine input sont définies par:

    table mangle {
    chain prerouting { type filter hook prerouting priority -150; }
    chain input { type filter hook input priority -150; }
    chain forward { type filter hook forward priority -150; }
    chain output { type route hook output priority -150; }
    chain postrouting { type filter hook postrouting priority -150; }
    }

    Dans les faits, j'observe que:

    - la règle mangle ci-dessus est exécutée car je elle figure dans les logs et la commande "conntrack -L -o id,extended" montre qu'une marque est appliquée sur le rafic avec l'émetteur

    - la réponse est émise vers l'émetteur avec la bonne adresse source mais une autre interface (celle par défaut).

    Ces deux observations me laissent pense que la règle "fwmark 0x2 lookup link2" est ignorée.
    Cette conviction est renforcée par le fait que quand je remplace cette règle par une règle basée sur l'IP source ("from 192.168.17.0/24 lookup link2"), l'émetteur reçoit la réponse via la bonne interface.
    Comme l'interface est configurée par DHCP, j'aimerai autant que possible
    ne pas utiliser de règle faisant intervenir des données que je ne maîtrise pas (ie celles fournies par le serveur DHCP).

    J'ai l'impression que:
    soit il y a une confusion de ma part entre les marques de conntrack et
    celles de nftables,
    soit il y a une erreur dans la définition de la chaine input ou sa table mangle,
    soit encore autre chose.

    Qui pourrait me mettre sur la bonne voie ?

    Slts




    <div dir="ltr"><div>Dans [1], j&#39;ai lu:</div><div>nft add rule inet classify output ip daddr 1.1.1.1 ct mark set numgen inc mod 3 offset 390

    nft add rule inet classify output ip daddr 1.1.1.1 meta mark set ct mark</div><div><br></div><div>Qui pourrait m&#39;expliquer ces 2 lignes ?<br></div><div><br></div><div>[1] <a href="https://forums.gentoo.org/viewtopic-t-1136379-start-0.html">https://
    forums.gentoo.org/viewtopic-t-1136379-start-0.html</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 18 oct. 2021 à 16:17, Olivier &lt;<a href="mailto:oza.4h07@gmail.com">oza.4h07@gmail.com</a>&gt; a écrit :<br></
    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Bonjour,</div><div><br></div><div>Je découvre nftables sur une machine équipée de Bullseye.</div><div><br><
    /div><div>Sur cette machine j&#39;ai les règles:</div><div><br></div><div># ip rule show<br>0: from all lookup local<br>0: from all fwmark 0x2 lookup link2<br>32766: from all lookup main<br>32767: from all lookup default<br></div><div><br></div><div>J&#
    39;aimerai que nftables ajoute une marque donnée pour le trafic non-marqué reçu sur une interface Ethernet donnée, auto-configurée par DHCP.</div><div>Comment l&#39;obtenir ?</div><div><br></div><div>J&#39;ai essayé (sans succès) où ens3.432 est
    le nom de l&#39;interface (virtuelle) sur laquelle le trafic est reçu:</div><div><br></div><div>add rule ip mangle input iifname &quot;ens3.432&quot; meta mark 0 log prefix &quot;Rule42-A1&quot; counter ct mark set 0x2</div><div><br></div><div>La table
    mangle et sa chaine input sont définies par:</div><div><br></div><div>table mangle {<br> chain prerouting { type filter hook prerouting priority -150; }<br> chain input { type filter hook input priority -150; }<br> chain forward { type filter hook
    forward priority -150; }<br> chain output { type route hook output priority -150; }<br> chain postrouting { type filter hook postrouting priority -150; }<br>}</div><div><br></div><div>Dans les faits, j&#39;observe que:</div><div><br></div><div>- la rè
    gle mangle ci-dessus est exécutée car je elle figure dans les logs et la commande &quot;conntrack -L -o id,extended&quot; montre qu&#39;une marque est appliquée sur le rafic avec l&#39;émetteur<br></div><div><br></div><div>- la réponse est émise
    vers l&#39;émetteur avec la bonne adresse source mais une autre interface (celle par défaut).</div><div><br></div><div>Ces deux observations me laissent pense que la règle &quot;fwmark 0x2 lookup link2&quot; est ignorée.</div><div>Cette conviction
    est renforcée par le fait que quand je remplace cette règle par une règle basée sur l&#39;IP source (&quot;from <a href="http://192.168.17.0/24" target="_blank">192.168.17.0/24</a> lookup link2&quot;), l&#39;émetteur reçoit la réponse via la bonne
    interface.</div><div>Comme l&#39;interface est configurée par DHCP, j&#39;aimerai autant que possible ne pas utiliser de règle faisant intervenir des données que je ne maîtrise pas (ie celles fournies par le serveur DHCP).</div><div><br></div><div>J&#
    39;ai l&#39;impression que:</div><div>soit il y a une confusion de ma part entre les marques de conntrack et celles de nftables,</div><div>soit il y a une erreur dans la définition de la chaine input ou sa table mangle,</div><div>soit encore autre chose.
    </div><div><br></div><div>Qui pourrait me mettre sur la bonne voie ?</div><div><br></div><div>Slts<br></div><div><br></div><div><br></div></div>
    </blockquote></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Olivier@21:1/5 to All on Thu Oct 21 13:30:01 2021
    D'après mes essais, il semble que la marque appelée fwmark dans ip rule correspond à une marque sur le paquet (mark) et pas celle sur les
    connexions (connmark).

    J'espère que ça pourra aider quelqu'un d'autre.
    Slts

    Le lun. 18 oct. 2021 à 16:18, Olivier <oza.4h07@gmail.com> a écrit :

    Dans [1], j'ai lu:
    nft add rule inet classify output ip daddr 1.1.1.1 ct mark set numgen inc
    mod 3 offset 390
    nft add rule inet classify output ip daddr 1.1.1.1 meta mark set ct mark

    Qui pourrait m'expliquer ces 2 lignes ?

    [1] https://forums.gentoo.org/viewtopic-t-1136379-start-0.html

    Le lun. 18 oct. 2021 à 16:17, Olivier <oza.4h07@gmail.com> a écrit :

    Bonjour,

    Je découvre nftables sur une machine équipée de Bullseye.

    Sur cette machine j'ai les règles:

    # ip rule show
    0: from all lookup local
    0: from all fwmark 0x2 lookup link2
    32766: from all lookup main
    32767: from all lookup default

    J'aimerai que nftables ajoute une marque donnée pour le trafic non-marqué >> reçu sur une interface Ethernet donnée, auto-configurée par DHCP.
    Comment l'obtenir ?

    J'ai essayé (sans succès) où ens3.432 est le nom de l'interface
    (virtuelle) sur laquelle le trafic est reçu:

    add rule ip mangle input iifname "ens3.432" meta mark 0 log prefix
    "Rule42-A1" counter ct mark set 0x2

    La table mangle et sa chaine input sont définies par:

    table mangle {
    chain prerouting { type filter hook prerouting priority -150; }
    chain input { type filter hook input priority -150; }
    chain forward { type filter hook forward priority -150; }
    chain output { type route hook output priority -150; }
    chain postrouting { type filter hook postrouting priority -150; }
    }

    Dans les faits, j'observe que:

    - la règle mangle ci-dessus est exécutée car je elle figure dans les logs >> et la commande "conntrack -L -o id,extended" montre qu'une marque est
    appliquée sur le rafic avec l'émetteur

    - la réponse est émise vers l'émetteur avec la bonne adresse source mais >> une autre interface (celle par défaut).

    Ces deux observations me laissent pense que la règle "fwmark 0x2 lookup
    link2" est ignorée.
    Cette conviction est renforcée par le fait que quand je remplace cette
    règle par une règle basée sur l'IP source ("from 192.168.17.0/24 lookup >> link2"), l'émetteur reçoit la réponse via la bonne interface.
    Comme l'interface est configurée par DHCP, j'aimerai autant que possible
    ne pas utiliser de règle faisant intervenir des données que je ne maîtrise
    pas (ie celles fournies par le serveur DHCP).

    J'ai l'impression que:
    soit il y a une confusion de ma part entre les marques de conntrack et
    celles de nftables,
    soit il y a une erreur dans la définition de la chaine input ou sa table
    mangle,
    soit encore autre chose.

    Qui pourrait me mettre sur la bonne voie ?

    Slts




    <div dir="ltr"><div>D&#39;après mes essais, il semble que la marque appelée fwmark dans ip rule correspond à une marque sur le paquet (mark) et pas celle sur les connexions (connmark).</div><div><br></div><div>J&#39;espère que ça pourra aider quelqu&
    #39;un d&#39;autre.</div><div>Slts<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 18 oct. 2021 à 16:18, Olivier &lt;<a href="mailto:oza.4h07@gmail.com">oza.4h07@gmail.com</a>&gt; a écrit :<br></div><blockquote
    class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Dans [1], j&#39;ai lu:</div><div>nft add rule inet classify output ip daddr 1.1.1.1 ct mark set numgen inc mod 3 offset 390

    nft add rule inet classify output ip daddr 1.1.1.1 meta mark set ct mark</div><div><br></div><div>Qui pourrait m&#39;expliquer ces 2 lignes ?<br></div><div><br></div><div>[1] <a href="https://forums.gentoo.org/viewtopic-t-1136379-start-0.html" target="_
    blank">https://forums.gentoo.org/viewtopic-t-1136379-start-0.html</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 18 oct. 2021 à 16:17, Olivier &lt;<a href="mailto:oza.4h07@gmail.com" target="_blank">oza.4h07@
    gmail.com</a>&gt; a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Bonjour,</div><div><br></div><div>Je découvre nftables sur une machine é
    quipée de Bullseye.</div><div><br></div><div>Sur cette machine j&#39;ai les règles:</div><div><br></div><div># ip rule show<br>0: from all lookup local<br>0: from all fwmark 0x2 lookup link2<br>32766: from all lookup main<br>32767: from all lookup
    default<br></div><div><br></div><div>J&#39;aimerai que nftables ajoute une marque donnée pour le trafic non-marqué reçu sur une interface Ethernet donnée, auto-configurée par DHCP.</div><div>Comment l&#39;obtenir ?</div><div><br></div><div>J&#39;ai
    essayé (sans succès) où ens3.432 est le nom de l&#39;interface (virtuelle) sur laquelle le trafic est reçu:</div><div><br></div><div>add rule ip mangle input iifname &quot;ens3.432&quot; meta mark 0 log prefix &quot;Rule42-A1&quot; counter ct mark
    set 0x2</div><div><br></div><div>La table mangle et sa chaine input sont définies par:</div><div><br></div><div>table mangle {<br> chain prerouting { type filter hook prerouting priority -150; }<br> chain input { type filter hook input priority -150; }<
    chain forward { type filter hook forward priority -150; }<br> chain output { type route hook output priority -150; }<br> chain postrouting { type filter hook postrouting priority -150; }<br>}</div><div><br></div><div>Dans les faits, j&#39;observe
    que:</div><div><br></div><div>- la règle mangle ci-dessus est exécutée car je elle figure dans les logs et la commande &quot;conntrack -L -o id,extended&quot; montre qu&#39;une marque est appliquée sur le rafic avec l&#39;émetteur<br></div><div><br><
    /div><div>- la réponse est émise vers l&#39;émetteur avec la bonne adresse source mais une autre interface (celle par défaut).</div><div><br></div><div>Ces deux observations me laissent pense que la règle &quot;fwmark 0x2 lookup link2&quot; est
    ignorée.</div><div>Cette conviction est renforcée par le fait que quand je remplace cette règle par une règle basée sur l&#39;IP source (&quot;from <a href="http://192.168.17.0/24" target="_blank">192.168.17.0/24</a> lookup link2&quot;), l&#39;é
    metteur reçoit la réponse via la bonne interface.</div><div>Comme l&#39;interface est configurée par DHCP, j&#39;aimerai autant que possible ne pas utiliser de règle faisant intervenir des données que je ne maîtrise pas (ie celles fournies par le
    serveur DHCP).</div><div><br></div><div>J&#39;ai l&#39;impression que:</div><div>soit il y a une confusion de ma part entre les marques de conntrack et celles de nftables,</div><div>soit il y a une erreur dans la définition de la chaine input ou sa
    table mangle,</div><div>soit encore autre chose.</div><div><br></div><div>Qui pourrait me mettre sur la bonne voie ?</div><div><br></div><div>Slts<br></div><div><br></div><div><br></div></div>
    </blockquote></div>
    </blockquote></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)