Outils pour utilisateurs

Outils du site


sysadmin:linux:systemd:troubleshooting:echec_de_chargement_ruleset_nftables

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
sysadmin:linux:systemd:troubleshooting:echec_de_chargement_ruleset_nftables [2024/06/26 12:45] – créée yoannsysadmin:linux:systemd:troubleshooting:echec_de_chargement_ruleset_nftables [2024/06/27 09:23] (Version actuelle) yoann
Ligne 1: Ligne 1:
 {{tag>sysadmin netadmin linux systemd nft nftables}} {{tag>sysadmin netadmin linux systemd nft nftables}}
  
-:TODO: 
  
-===== Systemd : Echec de chargement du ruleset nftables ======+===== Systemd : Échec de chargement du ruleset nftables ======
  
 +Au démarrage de la machine le service **''nftables.service''** tente de charger le ruleset mais les interfaces (notamment l'interface wifi) ne sont pas encore prêtes.
  
 +La configuration [[https://wiki.phobos-net.fr/doku.php/netadmin/linux/renommer_interface_reseau#systemd|utilise systemd (via les fichers .link) pour renommer l'interface wifi]]. Les règles de filtrage utilisent l'interface renommée mais lorsque elle sont chargées par le service, l'interface ''wifi0'' n'est pas encore disponible et le processus échoue. 
 +
 +Les journaux système retracent l'évènement :
 +
 +<file>
 +journalctl -xeu nftables.service
 +
 +...
 +
 +░░ L'unité (unit) nftables.service a commencé à démarrer.
 +juin 27 09:20:06 node-7c87 nft[631]: /etc/nftables.conf:96:17-23: Error: Interface does not exist
 +juin 27 09:20:06 node-7c87 nft[631]:                 iif { "lan0", "wifi0" } udp dport {137, 138 } ip daddr 192.9.200.255 counter drop comment "Elimine les paquets net>
 +juin 27 09:20:06 node-7c87 nft[631]:                               ^^^^^^^
 +juin 27 09:20:06 node-7c87 nft[631]: /etc/nftables.conf:99:17-23: Error: Interface does not exist
 +juin 27 09:20:06 node-7c87 nft[631]:                 iif { "lan0", "wifi0" } udp dport 5353 ip daddr 224.0.0.251 counter drop comment "Elimine les paquets mDNS"
 +juin 27 09:20:06 node-7c87 nft[631]:                               ^^^^^^^
 +juin 27 09:20:06 node-7c87 systemd[1]: nftables.service: Main process exited, code=exited, status=1/FAILURE
 +░░ Subject: Unit process exited
 +</file>
 +
 +L'activation du service échoue au démarrage et les règles ne sont pas chargées. Par contre si l'utilisateur lance manuellement le service tout se passe bien. Entre temps, l'interface wifi a bien été renommée et activée.
 +
 +<code bash>
 +systemctl is-active nftables.service 
 +failed
 +
 +systemctl start nftables.service
 +
 +systemctl is-active nftables.service 
 +active
 +</code>
 +
 +Une solution consiste à surcharger le fichier unité par défaut pour le service nftables.service et temporiser en attendant que l'interface soit disponible.
 +
 +<code bash>
 +systemctl edit nftables.service
 +</code>
 +
 +La directive ci-dessous permet de patienter jusqu'a ce que l'interface wifi0 soit disponible :
 +
 +<file>
 +[Service]
 +ExecStartPre=timeout 60s bash -c 'until ip link show wifi0; do sleep 2; done'
 +</file>
 +
 +Après modification du fichier unité et redémarrage de la machine, le service est correctement démarré. Les derniers logs apparaissant via la commande **''systemctl status nftables.service''** montrent que la boucle **until** permet bien de temporiser le démarrage du service en attendant la disponibilité de l'interface.
 +
 +<file>
 +...
 +juin 27 11:13:20 node-7c87 timeout[359]: Device "wifi0" does not exist.
 +juin 27 11:13:22 node-7c87 timeout[797]: Device "wifi0" does not exist.
 +juin 27 11:13:24 node-7c87 timeout[803]: Device "wifi0" does not exist.
 +juin 27 11:13:26 node-7c87 timeout[1410]: 3: wifi0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
 +juin 27 11:13:26 node-7c87 timeout[1410]:     link/ether 34:cf:f6:b2:09:8a brd ff:ff:ff:ff:ff:ff
 +juin 27 11:13:26 node-7c87 systemd[1]: Finished nftables.service - nftables.
 +Notice: journal has been rotated since unit was started, output may be incomplete.
 +</file>
  
 ===== Références ===== ===== Références =====
  
   * [[https://unix.stackexchange.com/questions/257888/systemd-wait-for-network-interface-to-be-up-before-running-service | Attendre qu' une interface réseau soit active avant de démarrer un service avec systemd (stackexchange.com) ]]    * [[https://unix.stackexchange.com/questions/257888/systemd-wait-for-network-interface-to-be-up-before-running-service | Attendre qu' une interface réseau soit active avant de démarrer un service avec systemd (stackexchange.com) ]] 
sysadmin/linux/systemd/troubleshooting/echec_de_chargement_ruleset_nftables.1719405902.txt.gz · Dernière modification : 2024/06/26 12:45 de yoann