¿Cómo reiniciar una red exitosamente sin reiniciar a través de SSH?

92

En Ubuntu 14.04 ni sudo service networking restart ni sudo /etc/init.d/networking restart hacen nada más. También ambos salen con el código 1. Algo obviamente ha cambiado (o ha cambiado a medias) pero no puedo encontrar qué. Obviamente, esto causa problemas con la reconfiguración de red remota y herramientas como 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 "" 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 "" 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

¿Cuál es la forma correcta de reiniciar la red en el servidor Ubuntu 14.04 de forma remota?

    
pregunta SimonJGreen 31.03.2014 - 20:27

5 respuestas

117

Resulta que esta es una "característica". La única forma de reiniciar una interfaz en Ubuntu Server es sudo ifdown eth0 && sudo ifup eth0

enlace

    
respondido por el SimonJGreen 02.04.2014 - 13:03
71

ifdown, ifup no funcionó para mí (probablemente el tiempo de espera de conexión SSH antes del segundo comando). Lo que funcionó fue:

sudo service network-manager restart

Esto estaba en un sistema de 14.04 ubuntu-desktop.

    
respondido por el dpb 21.04.2014 - 04:25
6

Lo que ha cambiado es que ya no quieren que "salte" la red. parar, y comenzar, todavía funciona. reiniciar ya no funciona. Simplemente "resolví" este "problema", es decir, recuperé el antiguo comportamiento. Para volver al comportamiento anterior: tome un archivo 13.10 /etc/init/networking.conf y reemplace el archivo 14.04 con él. (editar: aclarado que reemplaza a cual)

El proceso se ve así:

(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#  

Haga lo mismo con el script /etc/init.d/networking, que es a lo que hace referencia / llama el archivo /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). 

Obviamente, hay una razón por la que pusieron una salida defensiva allí, pero no se molestan en sacar lo que está pasando muy bien.

Una entrada entra en /var/log/upstart/networking.log cuando intenta, que se ve así:

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

Pero realmente podrían / ​​deberían tener salida como mensaje de diálogo cuando intente reiniciar la red de servicio. Ah bueno. lo descubrí e incluso a la vieja usanza.

EDITAR: he descubierto que esto provoca un desencadenamiento involuntario de la secuencia de comandos controlada por /etc/init/failsafe.conf, que es indeseable, ya que causa un retraso de 120 segundos en el tiempo de espera en cada arranque ... y tal vez enmascaramiento real errores de configuración / problemas de red que la aparición de este retraso indicaría, pero ya se está mostrando todo el tiempo. (Por ejemplo, un cable desenchufado, que permitía el acceso a un archivo compartido de red mapeado en / etc / fstab, por ejemplo)

En cualquier caso, averiguaré qué está causando esto siempre golpeando el tiempo de espera, y publicaré una corrección cuando lo encuentre.

    
respondido por el kvm-user420 18.04.2014 - 18:56
3

En referencia a la respuesta de kvm-user420, he seguido y configuré una secuencia de comandos para reemplazar las secuencias de comandos de red de Ubuntu 14.04 con la de Ubuntu 13.10

Puede encontrarlo aquí: enlace

¡Disfrútalo!

    
respondido por el metral 18.04.2014 - 22:23
0

Soluciono el problema con este script: por favor agregue este script en "/etc/network/if-down.d"

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

contenido:

#!/bin/bash 

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

y finalmente:

chmod +x ifdown

ahora puede cambiar la dirección IP y reiniciar el servicio de red con systemctl o el comando de servicio.
NOTA : este script es demasiado simple y NO MANIPULAR vm, toque , bridge, ... interfaces. en realidad eliminar todas las interfaces excluir lo (loopback).

    
respondido por el mah454 24.09.2017 - 09:43

Lea otras preguntas en las etiquetas