4 votes

Comment forcer Network Manager à définir la négociation automatique sur false/off pour un NIC particulier (eth0) au démarrage ?

Il se trouve que j'ai une carte d'interface réseau qui n'est capable d'établir une connexion avec le réseau actuel que lorsque la négociation automatique est réglée sur faux. Sous Windows, cela peut être réalisé assez facilement en changeant les propriétés de la carte réseau via le Gestionnaire de périphériques. Actuellement, je ne peux le faire que sous Ubuntu (10.04 si cela compte) en procédant comme suit après connexion :

sudo ethtool -s eth0 autoneg off speed 100 duplex full

sudo service network-manager restart

PS : J'ai lu sur les forums ubuntu qu'il pouvait être nécessaire de supprimer network-manager et de n'utiliser que /etc/network/interfaces pour la configuration, mais je n'ai l'intention de le faire qu'en dernier recours. J'apprécierais également que quelqu'un ajoute auto-negotiation ethtool à la liste des étiquettes.

5voto

hmm Points 140

Il semble qu'il n'y ait aucun moyen de le faire dans Network Manager. Édition /etc/network/interfaces d'autre part, est maladroit et provoque des retards dans les éditions ultérieures d'Ubuntu comme la 12.04 (voir este y este ). En fin de compte, la solution proposée aquí s'avère être la meilleure solution (pour l'instant), en ajoutant la commande ethtool à rc.local :

sudo -H gedit /etc/rc.local

ethtool -s eth0 autoneg off speed 100 duplex full    # put this above 'exit 0'

4voto

sidewinder12s Points 141

Si quelqu'un d'autre se retrouve avec ce problème d'essayer de configurer des interfaces réseau dans 18.04, il s'est avéré que le gestionnaire de réseau mettait l'auto-négociation à off pour moi, donc au redémarrage rien ne semblait fonctionner ; ifupdown (obsolète), netplan Il s'agit probablement d'une autre option, car nous ne pouvons pas choisir une technologie.

Utilisation

nmcli c show "Wired connection 1"

Pour afficher les paramètres actuels. Utiliser nmcli c edit "Wired connection 1" pour définir des valeurs de manière interactive (parcourir la hiérarchie des paramètres avec goto y retour , cambiar y fixer pour les valeurs. Il existe une aide intégrée) :

goto 802-3-ethernet.auto-negotiate
change
save persistent
quit

2voto

Jeff M. Points 21

J'ai obtenu de meilleurs résultats en plaçant ethtool scripts dans /etc/network/if-up.d . Selon la documentation de Network Manager, scripts en /etc/NetworkManager/dispatcher.d sera exécuté après que NM aura "manipulé les interfaces". Sur mon système 12.04, le seul script est 01ifupdown, qui exécutera ensuite les script en /etc/network/if-up.d (également /etc/network/if-post-down.d ).

Cette séquence d'événements semble se produire bien après l'apparition de l'écran de connexion sur mon système.

J'ai trouvé de nombreuses occurrences de la ligne suivante dans le journal du système, ce qui pourrait expliquer la cause du retard :

NetworkManager[871]: <info> (eth0): carrier now OFF (device state 100, deferring action  for 4 seconds).

N'oubliez pas d'indiquer la description de l'interprète ( #!/bin/sh ) comme première ligne de votre script. Sinon, cela ne fonctionnera pas car NetworkManager utilise l'utilitaire run-parts pour les exécuter. Ils doivent également appartenir à root et n'avoir des droits d'écriture que pour leur propriétaire.

1voto

dragon788 Points 1216

Comme Jeff M l'a suggéré, vous pouvez le faire avec NetworkManager et j'ai eu beaucoup de chance de le faire de cette façon.

Créer un fichier dans /etc/NetworkManager/dispatcher.d/ nommée 50-ethtool-autoneg-off et y mettre le contenu suivant. Notez que vous pouvez modifier eth0 a eth* si vous souhaitez désactiver un dispositif eth, vous pouvez également ajouter eth*|en* si vous avez un système utilisant les nouveaux "noms de noyau prévisibles".

#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2

case ${IFACE} in
    eth0)
        case ${ACTION} in
            up)
                log "Disabling auto-negotation on $IFACE"
                ethtool -s $IFACE autoneg off speed 100 duplex full
                ;;
        esac
        ;;
esac

Vous avez besoin d'un ensemble #!/bin/sh ou #!/bin/bash d'après les exemples que j'ai vus, et les autorisations qu'il a mentionnées sont certainement importantes. Il devrait être au moins en lecture/exécution pour root, et en écriture, il est plus facile de mettre à jour sans avoir à changer les permissions ou forcer votre éditeur à sauvegarder.

sudo chmod 0744 /etc/NetworkManager/dispatcher.d/50-ethtool-autoneg-off

Si vous avez des problèmes avec cela, faites-le moi savoir et je ferai quelques expériences, mais j'utilise actuellement une méthode similaire pour changer une interface de speed 1000 a speed 100 en raison de l'instabilité de la vitesse par défaut.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X