Vraag Hoe een netwerk opnieuw opstarten zonder opnieuw op te starten via SSH?


In Ubuntu 14.04 geen van beide sudo service networking restart noch sudo /etc/init.d/networking restart doe nog iets anders. Ze sluiten beiden ook af met code 1. Er is duidelijk iets veranderd (of half veranderd) maar ik kan niet vinden wat. Dit veroorzaakt uiteraard problemen met de herconfiguratie van externe netwerken en hulpmiddelen zoals 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

Wat is de juiste manier om het netwerk opnieuw te starten in Ubuntu 14.04 Server op afstand?


92
2018-03-31 18:27


oorsprong


Wil je echt het netwerk opnieuw opstarten of herstart je gewoon een interface zoals eth0? In ieder geval zal het waarschijnlijk de ssh-verbinding verbreken. - chili555
Omdat beide shell-scripts zijn, krijg je informatie met sudo bash -x /usr/sbin/service networking restart en sudo bash -x /etc/init.d/networking restart - waltinator
@terdon beetje gek om een ​​tag rond te hebben voor 14.04 dan, vooral omdat de beschrijving zegt dat het de "huidige" versie is die het niet is. dat gezegd hebbende, dit probleem is volledig reproduceerbaar in 13.10. - SimonJGreen
@ chili555 wat ik wil gebeuren, is dat wijzigingen in / etc / network / interfaces van kracht worden. Voorafgaand aan deze scripts overleeft het stoppen van werkende SSH-verbindingen deze herstart. - SimonJGreen
@waltinator extra info toegevoegd aan vraag, bedankt voor de suggestie - SimonJGreen


antwoorden:


Blijkt dat dit een "functie" is. De enkel en alleen ondersteunde manier om een ​​interface opnieuw op te starten in Ubuntu Server is sudo ifdown eth0 && sudo ifup eth0 

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


117
2018-04-02 11:03



Zorg ervoor dat u 'sudo ifdown eth0 &&' uitvoert sudo ifup eth0 '(let op de tweede sudo) als je deze opdracht niet als root uitvoert - mtpettyp
Is dit oké als ik via ssh verbonden ben? Dwz, zullen beide opdrachten worden uitgevoerd voordat de verbinding wordt verbroken? - meawoppl
In mijn geval hardlopen sudo service networking restart leek de zaken verprutst te hebben. Dus ik moest vluchten sudo ifdown eth0 && sudo ifup eth0 tweemaal. Ja, twee keer. - polarise
@ExceptionSlayer: Nee, ze werkten niet voor mij. Ik moest de server fysiek uitschakelen en weer aanzetten (Ubuntu 14.04). - Xdg
Gebruikt geen ; in plaats van && een veiligere optie? - Isaac


ifdown, ifup werkte niet voor mij (waarschijnlijk SSH-verbinding time-out voor de tweede opdracht). Wat werkte was:

sudo service network-manager restart

Dit was op een 14.04 ubuntu-desktopsysteem.


71
2018-04-21 02:25



Geaccepteerd antwoord werkte niet voor mij; deze deed. (Nieuwe installatie van 14.04.1) - u2n
Kan bevestigen dat dit voor mij werkt op Trusty (Ubuntu 14.04). - gerlos
Het antwoord "ifdown / ifup" werkte ook niet voor mij op Ubuntu 14.04, maar dit deed het. - dieuwe
Het geaccepteerde antwoord is van toepassing op Ubuntu 12.04 en lager. Dit antwoord is aanvaardbaar voor 14.04. - Swiss
Op mijn 14.04.2 bestaat deze service niet - sudo service network-manager restart. - Xdg


Wat er is veranderd, is dat ze niet willen dat je het netwerk "terugkaatst". stoppen en beginnen, werken nog steeds. herstarten werkt niet meer. Ik heb dit "probleem" gewoon "opgelost", dat wil zeggen dat ik het oude gedrag terug kreeg. Om terug te keren naar voorafgaand gedrag: neem een ​​13.10 /etc/init/networking.conf-bestand en vervang het bestand 14.04 ermee. (bewerken: verduidelijkt welke welke vervangt)

Het proces ziet er als volgt uit:

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

Doe hetzelfde voor /etc/init.d/networking script, dat is wat het bestand /etc/init/networking.conf verwijst / roept.

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). 

Natuurlijk is er een reden dat ze daar een defensieve exit doen, maar ze doen niet de moeite om echt goed te presteren wat er gaande is.

Een invoer gaat in /var/log/upstart/networking.log wanneer je het probeert, dat ziet er als volgt uit:

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

Maar ze kunnen / moeten echt output hebben die als het dialoogvenster verschijnt wanneer je de herstart van het servicenetwerk probeert. ach goed. bedacht het en zelfs een oude weg werk rond.

EDIT: Ik heb ontdekt dat dit een onbedoelde activering veroorzaakt van het script beheerd door /etc/init/failsafe.conf, wat ongewenst is omdat het een 120 seconden vertraging veroorzaakt bij elke opstart ... evenals misschien het maskeren van daadwerkelijke misconfiguraties / netwerk problemen die het uiterlijk van deze vertraging zou aangeven, maar het is al de hele tijd te zien. (bijvoorbeeld een niet-aangesloten kabel, die toegang gaf tot een gedeeld netwerkbestand gedeeld in / etc / fstab, bijvoorbeeld)

In elk geval zal ik erachter komen waardoor dit de time-out veroorzaakt en een fix posten wanneer ik het vind.


6
2018-04-18 16:56



de wijsheid om een ​​OS-gedrag in de kern aan te passen is discutabel. - 0xF2
Waarom hebben ze de mogelijkheid om opnieuw te starten verwijderd? Ik zou dat graag willen weten voordat ik het opnieuw installeer. - flickerfly
@ 0xF2 - bedoel je questionable. - Dale Anderson
@DaleAnderson dat ook ;-) - 0xF2


Met betrekking tot de reactie van kvm-user420 heb ik een script ingesteld om de netwerkscripts van Ubuntu 14.04 te vervangen door die van Ubuntu 13.10

Je kunt het hier vinden: https://github.com/metral/restore_networking

Genieten!


3
2018-04-18 20:23



Dit werkte voor mij. Hopelijk zal één dag Upstart gewoon weggaan ;-) - Andrew


Ik los het probleem met dit script op: voeg dit script toe op "/etc/network/if-down.d"

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

inhoud :

#!/bin/bash 

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

en tenslotte :

chmod +x ifdown

nu kunt u het ip-adres wijzigen en de netwerkdienst opnieuw starten met de opdracht systemctl of service.
NOTITIE : dit script is te simpel en BEHANDEL NIET vm, tap, bridge, ... interfaces. eigenlijk alle interfaces doorspoelen, behalve lo (loopback).


0
2017-09-24 07:43