[netctl] Utilisation de netctl-ifplugd (résolu)

Applications, problèmes de configuration réseau
Répondre
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

[netctl] Utilisation de netctl-ifplugd (résolu)

Message par Anghirrim »

Bonsoir,

En cours de migration vers netctl, tout se passe bien. Mon profil réseau filaire dhcp ainsi que mon profil wifi maison fonctionnent.

Le dhcp est démarré automatiquement grâce à:

Code : Tout sélectionner

netctl enable lan_maison_dhcp
J'aimerai remplacer cela par un:

Code : Tout sélectionner

systemctl enable netctl-ifplugd@eth0.service
Du coup, j'imagine qu'il faut adapter le netctl.action à mes profils existants, mais ça a l'air un poil plus compliqué que le ifplugd.action que j'avais jusque là? :mrgreen: :mrgreen: De plus, le ifplugd.conf doit-il être modifié?

Mon ifplugd.action actuel est:

Code : Tout sélectionner

#!/bin/bash
case "$2" in
  up)
    netcfg lan_maison_static
    netcfg down wifi_maison
    ;;
  down)
    netcfg wifi_maison
    netcfg down lan_maison_static
    ;;
esac
Question subsidiaire, un "netctl stop wifi_maison" coupe bien la connection wifi, mais ne désactive pas la carte (conky capte encore une émission). Alors que "netctl start wifi_maison" la démarre bien si elle ne l'est pas. Est-il possible de faire que "stop" coupe et la connection, et le signal?

Merci d'avance pour votre aide!
Dernière modification par Anghirrim le lun. 15 avr. 2013, 21:27, modifié 2 fois.
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [netctl] Utilisation de netctl-ifplugd@<interface>.servi

Message par FoolEcho »

Je n'ai pas touché au ifplugd.action sur mon portable (en même temps, je me sers essentiellement du wifi avec).
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd@<interface>.servi

Message par Anghirrim »

Mon ifplugd.action est de toute manière utilisé pour netcfg. netctl.action prend-il le pas dessus si ifplugd est lancé via le service netctl?

Je n'ai pas trouvé de ligne dans ifplugd.conf qui dise quel fichier .action ifplugd doit lire.
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd@<interface>.servi

Message par Anghirrim »

Je relisais mon premier sujet sur ifplugd, quand ce dernier était lié à netcfg.

Il semble que je puisse toujours utiliser mon ifplugd.action en le modifiant un peu.

Code : Tout sélectionner

#!/bin/bash
case "$2" in
  up)
    netctl restart lan_maison_dhcp
    netctl stop wifi_maison
    ;;
  down)
    netctl restart wifi_maison
    netctl stop lan_maison_dhcp
    ;;
esac
Ça devrait fonctionner. je tente ce soir.
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Bon, après tentative, voici le statut:
- Désactivation de tous les profils netctl potentiellement chargés (netctl disable mesprofils)
- Etablissement de ifplugd avec "systemctl enable netctl-ifplugd@eth0.service"
- Remplissage du /etc/ifplugd/netctl.action avec le contenu de mon dernier post
- Reboot et ifplugd détecte bien le statut "up" de eth0 et tente de lancer le contenu de /etc/ifplugd/netctl.action

Seulement, une fois le démarrage fini, pas de connexion établie, et voici le retour de "journalctl -b":

Code : Tout sélectionner

journalctl dernier boot:

avril 11 21:17:21 archasus ifplugd[281]: ifplugd 0.28 initializing.
avril 11 21:17:22 archasus ifplugd[281]: Using interface eth0/10:BF:48:27:35:58 with driver <atl1c> (version: 1.0.1.1-NAPI)
avril 11 21:17:22 archasus ifplugd[281]: Using detection mode: SIOCETHTOOL
avril 11 21:17:22 archasus ifplugd[281]: Initialization complete, link beat detected.
avril 11 21:17:22 archasus ifplugd[281]: Executing '/etc/ifplugd/netctl.action eth0 up'.
avril 11 21:17:22 archasus ifplugd[281]: client: Job for netctl@lan_maison_dhcp.service failed. See 'systemctl status netctl@lan_maison_
avril 11 21:17:22 archasus ifplugd[281]: Program executed successfully.
......
avril 11 21:17:23 archasus network[302]: Starting network profile 'lan_maison_dhcp'...
avril 11 21:17:23 archasus network[302]: The interface of network profile 'lan_maison_dhcp' is already up
Puis, juste par acquis de conscience, le "systemctl status netctl@lan_maison_dhcp".

Code : Tout sélectionner

[thomas@archasus ~]$ systemctl status netctl@lan_maison_dhcp
netctl@lan_maison_dhcp.service - Networking for netctl profile lan_maison_dhcp
	  Loaded: loaded (/usr/lib/systemd/system/netctl@.service; static)
	  Active: failed (Result: exit-code) since jeu. 2013-04-11 21:16:55 CEST; 4min 27s ago
	    Docs: man:netctl.profile(5)
	 Process: 302 ExecStart=/usr/lib/network/network start %I (code=exited, status=1/FAILURE)

avril 11 21:17:23 archasus network[302]: Starting network profile 'lan_maison_dhcp'...
avril 11 21:17:23 archasus network[302]: The interface of network profile 'lan_maison_dhcp' is already up
Je ne comprends pas là... help??
A noter que si je redémarre après un "netctl enable lan_maison_dhcp" (tout en ayant désactivé ifplugd), mon réseau est bien connecté (cependant le service met 26 secondes à se lancer selon systemd-analyze).
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Personne qui utilise ifplugd et netctl (ou au moins tenté)?
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Bon, je pense que ce soir marquera le retour à netcfg. Démarrage ultra long de dhcp avec netctl (20 secondes dans la vue), impossible d'utiliser mon profil IP fixe, ifplugd qui n'arrive pas à lancer le DHCP au démarrage.

Le tout sans message d'erreur ou d'explication dans les logs, ça fait un poil trop pour moi.

Si jamais il y a des joueurs pour ifplugd, je prends :).
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [netctl] Utilisation de netctl-ifplugd

Message par FoolEcho »

Pour le profil avec IP fixe, regarde le wiki (j'ai eu le même problème, c'est simplement qu'il faut rajouter le masque de réseau avec les addresses).

Sinon, j'utilise netctl-ifplugd et netctl-auto sans problèmes, mais je ne cherche pas à couper wifi ou filiaire. :P
Mais, idée en l'air, je pense que ton problème est lié au contenu du .action (c'est notamment l'histoire de latence qui me fait dire ça), lorsque netctl-ifplugd ou netctl-auto fonctionnent ils ne sont pas censés lancés les profils via netctl@<profile> (c'est la grosse différence avec netcfg), il faut désactiver ces derniers, sans quoi ça fait doublon (d'où accès plus lent, problème avec le wifi), donc le fait de lancer le service à ce niveau, pas sûr que ça passe bien...
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Salut,

Pour l'IP fixe, c'est ma box qu'il n'arrive pas à joindre "can't join gateway '192.168.1.1''", ou un truc comme ça. Je vais voir le Wiki.

Pour ifplugd, tu penses qu'il faut que j'utilise le .action d'origine?
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [netctl] Utilisation de netctl-ifplugd

Message par FoolEcho »

Anghirrim a écrit :Pour l'IP fixe, c'est ma box qu'il n'arrive pas à joindre "can't join gateway '192.168.1.1''", ou un truc comme ça. Je vais voir le Wiki.
Et c'est bien la solution que je te propose. :chinois:
Anghirrim a écrit :Pour ifplugd, tu penses qu'il faut que j'utilise le .action d'origine?
En tous cas pour vérifier que tu n'as pas de problème de latence ou de connexion.
Après, je ne me suis jamais trop intéressé au ifplugd.action donc je ne sais pas trop (je n'ai d'ailleurs pas trop saisi ce que tu cherches à faire: quand le cable est retiré eth/filiaire est déconnecté, autrement, il se connecte et peu importe à mon avis que le wifi tourne à ce moment là). Toujours est-il que le netctl.action d'origine ne lance pas netctl ('sais pas comment il fait par contre, mais il n'utilise pas network.target c'est certain).
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Je me suis mal exprimé pardon. Je parlais bien d'utiliser le netctl.action d'origine, celui qui est très rempli et "complexe". De toute manière, netctl-ifplugd lit le netctl.action.

Mais du coup... pour le modifier je suis un peu à la rue. Je remplace tous les "$profile" par mes profiles (lan_maison_dhcp et lan_maison_static)??

Code : Tout sélectionner

#!/bin/bash
#
# ifplugd.action script for netctl
 
. /usr/lib/network/globals
 
PROFILE_FILE="$STATE_DIR/ifplugd_$1.profile"
 
case "$2" in
  up)
    # Look for a dhcp based profile to try first
    # dhcp can actually outright fail, whereas
    # it's difficult to tell if static succeeded
    # Also check profile is same iface and is right connection
    echo "up"
    declare -a preferred_profiles
    declare -a dhcp_profiles
    declare -a static_profiles
    while read -r profile; do
        (
          echo "Reading profile '$profile'"
          source "$PROFILE_DIR/$profile"
          [[ "$Interface" == "$1" && "$Connection" == "ethernet" ]] || continue
          is_yes "${AutoWired:-no}" && exit 1 # user preferred AUTO profile
          [[ "$IP" == "dhcp" ]] && exit 2 # dhcp profile
          exit 3 # static profile
        )
        case $? in
          1) preferred_profiles+=("$profile");;
          2) dhcp_profiles+=("$profile");;
          3) static_profiles+=("$profile");;
        esac
    done < <(list_profiles)
    if [[ ${#preferred_profiles[@]} > 1 ]]; then
        echo "AutoWired flag for '$1' set in more than one profile (${preferred_profiles[*]})"
    fi
    for profile in "${preferred_profiles[@]}" "${dhcp_profiles[@]}" "${static_profiles[@]}"; do
        if ForceConnect=yes "$SUBR_DIR/network" start "$profile"; then
            mkdir -p "$(dirname "$PROFILE_FILE")"
            printf "%s" "$profile" > "$PROFILE_FILE"
            exit 0
        fi
    done
  ;;
  down)
    if [[ -e "$PROFILE_FILE" ]]; then
        if ForceConnect=yes "$SUBR_DIR/network" stop "$(< "$PROFILE_FILE")"; then
            rm -f "$PROFILE_FILE"
            exit 0
        fi
    fi
  ;;
  *)
    echo "Wrong arguments" > /dev/stderr
  ;;
esac
 
exit 1
Pour l'IP statique, on parle donc bien de:
Pour les profils en IP statique, vous devez spécifier le masque de réseau (netmask) pour chaque IP de Address=, par exemple
Address=('192.168.1.23/24' '192.168.1.87/24')
.
Soit, rajouter un /24.

Effectivement un peu de recherche me donne ça.

Je vais essayer de modifier ça on verra. Je te redis. Merci,
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [netctl] Utilisation de netctl-ifplugd

Message par FoolEcho »

Le hic est que netctl-ifplugd est bien plus orienté filiaire que ça ne l'était avec netcfg.

Une idée en l'air (pas testé donc je dis peut-être n'importe quoi) serait peut-être de laisser netctl-ifplugd tel quel et de rajouter les options ExecUpPost= et ExecDownPre= dans ton profil filiaire (et là rien ne t'empêche de lancer ou de couper le profil wifi via netctl, voire manuel de netctl.profile). Tu établis les services pour ton profil wifi d'une part et ifplugd d'autre part au démarrage (ça élimine la latence): si l'ethernet se lance ça coupe le profil wifi (ExecUpPost=netctl stop <wifi>), s'il est déconnecté par la suite ou non actif au départ, le wifi (re)démarre normalement (ExecUpPost=netctl start <wifi>).
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Bonsoir,

C'est effectivement ce type de comportement que je cherche. N'utilisant généralement que ma connexion lan maison en IP fixe, puis ma Wifi maison en cas de déconnexion, je veux que ifplugd gère ce passage wifi/ethernet.

Je n'avais pas envisagé d'utiliser ces deux commandes mais c'est un outil génial! J'étais passé dessus sans tilter lors de la lecture despages de man.

Du coup, je ne règle ifplugd pour qu'il me lance le profil statique en premier, puis le DHCP si le statique échoue.

Tu avais changé quelque chose pour mettre tes noms de profils dans ton netctl.action?

Au fait, le coup du "/24" a fonctionné, merci! Ca m'a permit de passer de 25 secondes pour le réseau à 4 secondes, ce que j'avais avant avec netcfg.
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [netctl] Utilisation de netctl-ifplugd

Message par FoolEcho »

Anghirrim a écrit :Tu avais changé quelque chose pour mettre tes noms de profils dans ton netctl.action?
Rien. L'interface est passée à netctl-ifplugd@ qui se débrouille à trouver les profils.

Pour le reste, c'est à tester, hein... sur le papier c'est ce qui me paraît le plus simple avec netctl (instinctif en tout cas, ayant parfois de grosses sautes de logique :mrgreen: ).
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Testé en manuel déjà, ça n'a pas l'air de marcher. :|

Mon "nouveau" /etc/netctl/lan_maison_static:

Code : Tout sélectionner

Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.1.19/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.1.1'
DNS=('80.10.246.130')
ExecUpPost=netctl stop wifi_maison || true
ExecDownPre=netctl start wifi_maison || true
Du coup, après démarrage, je coupe lan_maison_static avec un "netctl stop lan_maison_static". L'ethernet se coupe bien, seulement rien ne se passe pour le wifi (que j'ai lancé juste après sans souci avec un "netctl start wifi_maison").

Un "sudo netctl reenable lan_maison_static" me donne:

Code : Tout sélectionner

[thomas@archasus ~]$ sudo netctl reenable lan_maison_static
rm '/etc/systemd/system/multi-user.target.wants/netctl@lan_maison_static.service'
/etc/netctl/lan_maison_static: ligne9: stop : commande introuvable
/etc/netctl/lan_maison_static: ligne10: start : commande introuvable
ln -s '/etc/systemd/system/netctl@lan_maison_static.service' '/etc/systemd/system/multi-user.target.wants/netctl@lan_maison_static.service'
Etrange non? Il ne reconnait pas stop et start...

Edit: J'ai fait un essai avec seulement un "ExecDownPre=pcmanfm", comme ça au moins c'est visible si la commande fonctionne. Pas d'erreur au "netctl reenable lan_maison_static". Mais ça rend inopérante la commande "sudo netctl stop lan_maison_wifi". Il me suffit de commenter la ligne, lancer un reenable et tout fonctionne normalement...
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [netctl] Utilisation de netctl-ifplugd

Message par FoolEcho »

Rajoute des guillemets pour voir:

Code : Tout sélectionner

ExecUpPost='netctl stop wifi_maison || true'
ExecDownPre='netctl start wifi_maison || true'
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anghirrim
Elfe
Messages : 701
Inscription : mar. 28 févr. 2012, 11:09
Localisation : Loire-Atlantique

Re: [netctl] Utilisation de netctl-ifplugd

Message par Anghirrim »

Du coup:
- Ajout des guillemets
- Test manuel OK
- Etablissement de ifplugd (avec le fichier netctl.action de base)

Tout fonctionne parfaitement. Démarrage rapide, connexion ethernet opérationnelle, si je débranche le cable, le wifi prends le relais. Si je rebranche, le wifi s'arrête, et l'ethernet est opé.

Merci beaucoup pour ton aide!

Reste à comprendre pourquoi la carte wifi reste allumée (signal actif sur mon conky). Je vais ouvrir un sujet séparé.
Optiplex 3060 Micro Intel© Core™ i5-8500T, 16Go RAM, Arch Linux Cinnamon + Windows 10
Asus X53S, Linux Mint Cinnamon
Répondre