Как успешно перезапустить сеть без перезагрузки по SSH?

В Ubuntu 14.04 ни то, ни другое sudo service networking restart ни sudo /etc/init.d/networking restart больше ничего не делай. Они также оба выходят с кодом 1. Очевидно, что-то изменилось (или наполовину изменилось), но я не могу найти, что именно. Это, очевидно, вызывает проблемы с удаленной реконфигурацией сети и такими инструментами, как 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 networkingstop: Job failed while stopping+ :+ exec start networkingstart: Job is already running: networking

Каков правильный способ удаленного перезапуска сети на сервере Ubuntu 14.04?

Оказывается, это "особенность". То только поддерживаемый способ перезапуска интерфейса в Ubuntu Server - это sudo ifdown eth0 && sudo ifup eth0

https://bugs .launchpad.net/ubuntu /+источник/ifupdown/+ошибка/1301015

ifdown, ifup у меня не сработали (вероятно, тайм-аут SSH-соединения перед второй командой). То, что действительно сработало, было:

sudo service network-manager restart

Это было в настольной системе ubuntu 14.04.

Что изменилось, так это то, что они больше не хотят, чтобы вы "подпрыгивали" в сети. остановка и запуск все еще работают. перезапуск больше не работает. Я просто "решил" эту "проблему", то есть вернул себе прежнее поведение. Чтобы вернуться к предыдущему поведению: Возьмите файл 13.10 /etc/init/networking.conf и замените им файл 14.04. (редактировать: уточнил, что заменяет что)

Процесс выглядит следующим образом:

(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/initroot@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#  

Сделайте то же самое для скрипта /etc/init.d/networking, на который ссылается/вызывает файл /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"<       fi160,162d162<       if init_is_upstart; then<               exit 1<       fi166c166<       state=$(ifquery --state)--->       state=$(cat /run/network/ifstate)root@1404-Anode:/etc/init.d# cp networking.1310 networkingroot@1404-Anode:/etc/init.d# service networking restartnetworking stop/waitingnetworking start/runningroot@1404-Anode:/etc/init.d# ifconfigeth0      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). 

Очевидно, есть причина, по которой они поставили там защитный выход, но они не утруждают себя тем, чтобы действительно показать, что происходит очень хорошо.

Запись действительно попадает в /var/log/upstart/networking.регистрируйте, когда вы пытаетесь, это выглядит как:

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

Но они действительно могли / должны были вывести это в виде диалогового сообщения при попытке перезапуска сети службы. ну что ж. разобрался с этим и даже по-старому обошелся.

РЕДАКТИРОВАТЬ: Я обнаружил, что это приводит к непреднамеренному запуску скрипта, управляемого / etc / init / failsafe.conf, что нежелательно, поскольку вызывает 120-секундную задержку тайм-аута при каждой загрузке ... а также, возможно, маскирует фактические неправильные настройки / сетевые проблемы, на которые указывает появление этой задержки, но это уже показывает все время. (например, отсоединенный кабель, который разрешал доступ к общему сетевому файловому ресурсу, отображенному в /etc/fstab, например)

В любом случае, я выясню, что является причиной того, что это всегда приводит к тайм-ауту, и опубликую исправление, когда найду его.

В связи с ответом kvm-user420 я пошел дальше и настроил скрипт для замены сетевых скриптов Ubuntu 14.04 на скрипты Ubuntu 13.10

Вы можете найти его здесь: https://github.com/metral/restore_networking

Наслаждайтесь!

Я исправляю проблему с этим скриптом: пожалуйста, добавьте этот скрипт в "/etc/network/if-down.d"

cd /etc/network/if-down.dvim ifdown

содержание :

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

и, наконец, :

chmod +x ifdown

теперь вы можете изменить ip-адрес и перезапустить сетевую службу с помощью systemctl или сервисной команды.
записка : этот сценарий слишком прост и НЕ ОБРАЩАЙТЕСЬ С виртуальная машина, кран, мост,... интерфейсы . фактически очистите все интерфейсы, исключая lo (loopback).

Поскольку оба являются сценариями оболочки, получите информацию с помощью “sudo bash -x /usr/sbin/service networking restart” и “sudo bash -x /etc/init.d/networking restart”.

Вы действительно хотите перезапустить сеть или просто перезапустить интерфейс, такой как eth0? В любом случае, это, вероятно, приведет к разрыву ssh-соединения.

@terdon немного глупо тогда иметь тег для 14.04, тем более что в описании сказано, что это “текущая” версия, которой она не является. тем не менее, эта проблема полностью воспроизводима в 13.10.

@chili 555 я хочу, чтобы изменения в /etc/network/interfaces вступили в силу. До того, как эти скрипты перестанут работать, SSH-соединения переживут этот перезапуск.

@waltinator дополнительная информация добавлена к вопросу, спасибо за предложение

FWIW от 15.04 перезапуск сети службы sudo, похоже, работает для меня нормально…

@kvm-user420 не могли бы вы, пожалуйста, загрузить свои файлы conf. У меня это не работает, и мой сетевой сценарий был немного другим (в Ubuntu 14.04).