Question Comment redémarrer avec succès un réseau sans redémarrer sur SSH?


Dans Ubuntu 14.04 ni sudo service networking restart ni sudo /etc/init.d/networking restart ne fais plus rien. Ils ont également tous deux quitté avec le code 1. Quelque chose a évidemment changé (ou a changé à moitié) mais je ne trouve pas quoi. Cela provoque évidemment des problèmes avec la reconfiguration du réseau distant et des outils comme Ansible.

$ sudo bash -x /usr/sbin/service networking restart
[sudo] password for wirehive:
++ basename /usr/sbin/service
+ VERSION='service ver. 0.91-ubuntu1'
++ basename /usr/sbin/service
+ USAGE='Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]'
+ SERVICE=
+ ACTION=
+ SERVICEDIR=/etc/init.d
+ OPTIONS=
+ '[' 2 -eq 0 ']'
+ cd /
+ '[' 2 -gt 0 ']'
+ case "${1}" in
+ '[' -z '' -a 2 -eq 1 -a networking = --status-all ']'
+ '[' 2 -eq 2 -a restart = --full-restart ']'
+ '[' -z '' ']'
+ SERVICE=networking
+ shift
+ '[' 1 -gt 0 ']'
+ case "${1}" in
+ '[' -z networking -a 1 -eq 1 -a restart = --status-all ']'
+ '[' 1 -eq 2 -a '' = --full-restart ']'
+ '[' -z networking ']'
+ '[' -z '' ']'
+ ACTION=restart
+ shift
+ '[' 0 -gt 0 ']'
+ '[' -r /etc/init/networking.conf ']'
+ which initctl
+ grep -q upstart
+ initctl version
+ case "${ACTION}" in
+ stop networking
stop: Job failed while stopping
+ :
+ exec start networking
start: Job is already running: networking

Quelle est la bonne façon de redémarrer le réseau dans Ubuntu 14.04 Server à distance?


92
2018-03-31 18:27


origine


Voulez-vous vraiment redémarrer le réseau ou redémarrer une interface telle que eth0? En tout cas, cela va probablement rompre la connexion ssh. - chili555
Puisque les deux sont des scripts shell, obtenez des informations avec sudo bash -x /usr/sbin/service networking restart et sudo bash -x /etc/init.d/networking restart - waltinator
@terdon est un peu bête d'avoir un tag pour le 14.04 alors que la description dit que ce n'est pas la version "actuelle". cela dit, ce problème est totalement reproductible en 13.10. - SimonJGreen
@ chili555 ce que je veux, c'est que les changements dans / etc / network / interfaces prennent effet. Avant que ces scripts ne cessent de fonctionner, les connexions SSH survivent à ce redémarrage. - SimonJGreen
@waltinator informations supplémentaires ajoutées à la question, merci pour la suggestion - SimonJGreen


Réponses:


Il s'avère que c'est une "fonctionnalité". le seulement moyen pris en charge de redémarrer une interface dans Ubuntu Server est sudo ifdown eth0 && sudo ifup eth0 

https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1301015 


117
2018-04-02 11:03



Assurez-vous de lancer 'sudo ifdown eth0 && sudo ifup eth0 '(notez le second sudo) si vous n'exécutez pas cette commande en tant que root - mtpettyp
Est-ce ok à faire si connecté via ssh? Ie, les deux commandes s'exécuteront-elles avant la déconnexion? - meawoppl
Dans mon cas, courir sudo service networking restart semblait avoir foiré les choses. Donc je devais courir sudo ifdown eth0 && sudo ifup eth0 deux fois. Oui deux fois - polarise
@ExceptionSlayer: Non, ils n'ont pas fonctionné pour moi. J'ai dû éteindre le serveur physiquement et le rallumer (Ubuntu 14.04). - Xdg
N'utilise pas un ; au lieu de && une option plus sûre? - Isaac


ifdown, ifup ne fonctionnait pas pour moi (délai d'expiration probable de la connexion SSH avant la deuxième commande). Ce qui a fonctionné était:

sudo service network-manager restart

C'était sur un système de bureau 14.04 ubuntu.


71
2018-04-21 02:25



La réponse acceptée n'a pas fonctionné pour moi; celui-ci l'a fait. (Nouvelle installation de 14.04.1) - u2n
Peut confirmer que cela fonctionne pour moi sur Trusty (Ubuntu 14.04). - gerlos
La réponse "ifdown / ifup" n'a pas fonctionné pour moi non plus sur Ubuntu 14.04, mais cela a été le cas. - dieuwe
La réponse acceptée est applicable pour Ubuntu 12.04 et versions ultérieures. Cette réponse est acceptable pour 14.04. - Swiss
Sur mon 14.04.2 ce service n'existe pas - sudo service network-manager restart. - Xdg


Ce qui a changé, c'est qu'ils ne veulent plus "faire rebondir" le réseau. s'arrêter et commencer à travailler redémarrer ne fonctionne plus. Je viens de "résoudre" ce "problème", c’est-à-dire de retrouver l’ancien comportement. Pour revenir au comportement précédent: Prenez un fichier 13.10 /etc/init/networking.conf et remplacez le fichier 14.04 par celui-ci. (edit: clarifié qui remplace qui)

Le processus ressemble à ceci:

(Just before this, I configured my /etc/network/interfaces for eth1 on a 192.168.117.x address)

"/etc/network/interfaces" 16L, 413C written  
root@1404-Anode:~# service networking restart  
stop: Job failed while stopping  
start: Job is already running: networking  
root@1404-Anode:~# echo "hmm, wth?"
hmm, wth?
root@1404-Anode:~# ifconfig  
eth0      Link encap:Ethernet  HWaddr 00:0c:29:d6:a8:19  
          inet addr:192.168.115.105  Bcast:192.168.115.255  Mask:255.255.255.0  
          inet6 addr: 2002:4077:9050:1234:a08c:29c1:ce9b:a57b/64 Scope:Global  
          inet6 addr: fe80::20c:29ff:fed6:a819/64 Scope:Link  
          inet6 addr: 2002:4077:9050:1234:20c:29ff:fed6:a819/64 Scope:Global  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:646 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:531 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:58748 (58.7 KB)  TX bytes:75465 (75.4 KB)  
(lo removed here)  
root@1404-Anode:~# cd /etc/init
root@1404-Anode:/etc/init# diff networking.conf.1310 networking.conf.1404  
13c13  
<       and (stopped udevtrigger or container)) or runlevel [2345]  
---  
>     and (stopped udevtrigger or container)) or runlevel [2345] or stopped  networking   >RESULT=failed PROCESS=post-stop EXIT_STATUS=100  
16a17,20  
>     if [ "$UPSTART_EVENTS" = "stopped" ] && [ "$UPSTART_JOB" = "networking" ] && [ "$EXIT_STATUS" = "100" ]; then  
>         exit 0  
>     fi  
>  
21a26,31  
>     if [ -z "$UPSTART_STOP_EVENTS" ]; then  
>        echo "Stopping or restarting the networking job is not supported."  
>         echo "Use ifdown & ifup to reconfigure desired interface."  
>         exit 100  
>     fi  
root@1404-Anode:/etc/init#  

Faites de même pour le script /etc/init.d/networking, qui fait référence à /etc/init/networking.conf.

root@1404-Anode:/etc/init# cp networking.conf.1310 networking.conf  
root@1404-Anode:/etc/init# cd ../init.d  
root@1404-Anode:/etc/init.d# diff networking.1404 networking.1310  
15d14  
< STATEDIR="$RUN_DIR/state"
21a21,27
> # Make sure that it's clear to the user that they shouldn't use this
> # script under upstart
> if init_is_upstart; then
>       echo "ERROR: Calling a sysvinit script on a system using upstart isn't supported. Please use the 'service' command instead."  
>       exit 1
> fi
>
52,54d57
<       if ! chown root:netdev "$RUN_DIR" ; then
<           log_warning_msg "can't chown $RUN_DIR"
<       fi
160,162d162
<       if init_is_upstart; then
<               exit 1
<       fi
166c166
<       state=$(ifquery --state)
---
>       state=$(cat /run/network/ifstate)
root@1404-Anode:/etc/init.d# cp networking.1310 networking
root@1404-Anode:/etc/init.d# service networking restart
networking stop/waiting
networking start/running
root@1404-Anode:/etc/init.d# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:d6:a8:19
          inet addr:192.168.115.105  Bcast:192.168.115.255  Mask:255.255.255.0
          inet6 addr: 2002:4077:9050:1234:a08c:29c1:ce9b:a57b/64 Scope:Global
          inet6 addr: fe80::20c:29ff:fed6:a819/64 Scope:Link
          inet6 addr: 2002:4077:9050:1234:20c:29ff:fed6:a819/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3398 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2545 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:318654 (318.6 KB)  TX bytes:418804 (418.8 KB)

eth1      Link encap:Ethernet  HWaddr 00:0c:29:d6:a8:23
          inet addr:192.168.117.105  Bcast:192.168.117.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed6:a823/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:98 errors:0 dropped:58 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:20055 (20.0 KB)  TX bytes:1226 (1.2 KB)
(lo removed)
root@1404-Anode:/etc/init.d# echo "hah, it works! *8^)"
Hah, it works! *8^)
root@1404-Anode:/etc/init.d#

(note: the steps where I scp'd the 1310 versions into the 1404 system are omitted for brevity). 

Évidemment, il y a une raison pour laquelle ils ont mis sur pied une sortie défensive, mais ils ne prennent pas la peine de produire ce qui se passe très bien.

Une entrée entre dans /var/log/upstart/networking.log lorsque vous essayez, qui ressemble à ceci:

Stopping or restarting the networking job is not supported.  
Use ifdown & ifup to reconfigure desired interface.  

Mais ils pourraient / devraient avoir comme résultat que le message de dialogue lorsque vous essayez de redémarrer le service réseau. Et bien. compris et même un ancien travail autour.

EDIT: J'ai trouvé que cela provoquait un déclenchement involontaire du script contrôlé par /etc/init/failsafe.conf, ce qui est indésirable car il provoque un délai de temporisation de 120 secondes à chaque démarrage ... et peut-être aussi un masquage de la configuration / du réseau réel problèmes que l'apparence de ce délai indiquerait, mais ils apparaissent déjà tout le temps. (Par exemple, un câble débranché permettant d'accéder à un partage de fichiers réseau mappé dans / etc / fstab, par exemple)

Dans tous les cas, je vais trouver ce qui cause toujours ce problème et publier un correctif lorsque je le trouve.


6
2018-04-18 16:56



la sagesse de modifier un comportement de base du système d'exploitation est discutable. - 0xF2
Pourquoi ont-ils supprimé la possibilité de redémarrer? Je voudrais le savoir avant de le rétablir. - flickerfly
@ 0xF2 - vous voulez dire questionable. - Dale Anderson
@DaleAnderson ça aussi ;-) - 0xF2


En référence à la réponse de kvm-user420, j'ai mis en place un script pour remplacer les scripts réseau d'Ubuntu 14.04 par celui d'Ubuntu 13.10

Vous pouvez le trouver ici: https://github.com/metral/restore_networking

Prendre plaisir!


3
2018-04-18 20:23



Cela a fonctionné pour moi. Espérons qu'un jour, Upstart s'en ira ;-) - Andrew


Je résous le problème avec ce script: veuillez ajouter ce script sur "/etc/network/if-down.d"

cd /etc/network/if-down.d
vim ifdown

contenu :

#!/bin/bash 

for I in /sys/class/net/* 
do
        ifname=$(basename $I) 
        if [ $ifname != "lo" ] ; then 
                ip addr flush $ifname
        fi
done

et enfin :

chmod +x ifdown

Vous pouvez maintenant modifier l'adresse IP et redémarrer le service réseau avec la commande systemctl ou service.
REMARQUE : ce script est trop simple et NE PAS MANIPULER vm, tap, bridge, ... interfaces. en fait vider toutes les interfaces exclure lo (loopback).


0
2017-09-24 07:43