Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In Ubuntu 14.04 neither sudo service networking restart nor sudo /etc/init.d/networking restart do anything any more. They also both exit with code 1. Something has obviously changed (or half changed) but I can't find what. This obviously causes problems with remote network reconfiguration and tools like 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

What is the correct way to restart networking in Ubuntu 14.04 Server remotely?

share|improve this question
    
Do you really want to restart networking or just restart an interface such as eth0? In any case, it will probably break the ssh connection. – chili555 Mar 31 '14 at 18:47
1  
Since both are shell scripts, gain information with sudo bash -x /usr/sbin/service networking restart and sudo bash -x /etc/init.d/networking restart – waltinator Mar 31 '14 at 19:43
    
@terdon bit silly to have a tag around for 14.04 then, especially as the description says it's the "current" release which it isn't. that said, this problem is totally reproducible in 13.10. – SimonJGreen Mar 31 '14 at 21:10
    
@chili555 what I want to happen is for changes in /etc/network/interfaces to take effect. Prior to these scripts stopping working SSH connections survive this restart. – SimonJGreen Mar 31 '14 at 21:11
    
@waltinator additional info added to question, thanks for the suggestion – SimonJGreen Mar 31 '14 at 21:13
up vote 83 down vote accepted

Turns out this is a "feature". The only supported way of restarting an interface in Ubuntu Server is sudo ifdown eth0 && sudo ifup eth0

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

share|improve this answer
7  
Make sure you run 'sudo ifdown eth0 && sudo ifup eth0' (note the second sudo) if you're not running this command as root – mtpettyp Apr 30 '14 at 20:02
2  
Is this ok to do if connected via ssh? Ie, will both commands run before the disconnect? – meawoppl Jul 25 '14 at 17:55
    
@meawoppl yes . – ExceptionSlayer Dec 7 '14 at 1:10
1  
In my case, running sudo service networking restart seemed to have messed things up. So I had to run sudo ifdown eth0 && sudo ifup eth0 twice. Yes, twice. – polarise Feb 17 '15 at 14:40
3  
Isn't using a ; instead of && a safer option? – Isaac Aug 30 '15 at 7:56

ifdown, ifup didn't work for me (likely SSH connection timeout before the second command). What did work was:

sudo service network-manager restart

This was on a 14.04 ubuntu-desktop system.

share|improve this answer
2  
Accepted answer didn't work for me; this one did. (Fresh install of 14.04.1) – u2n Aug 24 '14 at 12:18
1  
Can confirm that this works for me on Trusty (Ubuntu 14.04). – gerlos Sep 29 '14 at 18:15
2  
The "ifdown/ifup" answer did not work for me either on Ubuntu 14.04, but this did. – dieuwe Sep 29 '14 at 21:26
3  
The accepted answer is applicable for Ubuntu 12.04 and lower. This answer is acceptable for 14.04. – Swiss Dec 12 '14 at 23:24
4  
On my 14.04.2 this service does not exist - sudo service network-manager restart. – Xdg Mar 1 '15 at 14:51

What's changed is they don't want you "bouncing" the network anymore. stopping, and starting, still work. restart no longer works. I just "solved" this "problem", that is to say I got the old behavior back. To revert to prior behavior: Take a 13.10 /etc/init/networking.conf file and replace the 14.04 file with it. (edit: clarified which replaces which)

The process looks like this:

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

Do the same for /etc/init.d/networking script, which is what the /etc/init/networking.conf file references/calls.

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

Obviously there's a reason they put a defensive exit in there, but they don't bother to really output what's going on very well.

An entry does go into /var/log/upstart/networking.log when you try, that looks like:

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

But they really could/should have output that as the dialog message when you try service networking restart. ah well. figured it out and even a old-way work around.

EDIT: I have found this causes an unintentional triggering of the script controlled by /etc/init/failsafe.conf which is undesirable as it causes a 120 second timeout delay in every boot up... as well as perhaps masking actual misconfigurations/network issues which this delay's appearance would indicate, but it's already showing all the time. (e.g. An unplugged cable, which was allowing access to a network file share mapped in /etc/fstab, for instance)

In any case, I will figure out what is causing this always hitting the timeout, and post a fix when I find it.

share|improve this answer
2  
the wisdom of modifying a core OS behavior is debatable. – 0xF2 Jan 5 '15 at 14:34
    
Why did they remove the ability to restart? I'd like to know that before reinstating it. – flickerfly Nov 11 '15 at 15:53

In reference to kvm-user420's response, I've gone ahead and setup a script to replace Ubuntu 14.04's networking scripts with that of Ubuntu 13.10

You can find it here: https://github.com/metral/restore_networking

Enjoy!

share|improve this answer
    
This worked for me. Hopefully, one day Upstart will just go away ;-) – Andrew Feb 6 '15 at 22:57

protected by Community Jun 13 '14 at 15:04

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.