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

90

В 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 "" 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

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

    
задан SimonJGreen 31.03.2014 в 20:27
источник

5 ответов

112

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

Ссылка

    
ответ дан SimonJGreen 02.04.2014 в 13:03
источник
70

ifdown, ifup не работает для меня (вероятно, время ожидания соединения SSH перед второй командой). Что было сделано:

sudo service network-manager restart

Это было в 14.04 ubuntu-desktop system.

    
ответ дан dpb 21.04.2014 в 04:25
6

Что изменилось, они не хотят, чтобы вы «подпрыгивали» в сети больше. остановка и запуск, по-прежнему работают. перезапуск больше не работает. Я просто «решил» эту «проблему», то есть вернуть прежнее поведение. Чтобы вернуться к предыдущему поведению: возьмите файл 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  
[email protected]:~# service networking restart  
stop: Job failed while stopping  
start: Job is already running: networking  
[email protected]:~# echo "hmm, wth?"
hmm, wth?
[email protected]:~# 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)  
[email protected]:~# cd /etc/init
[email protected]:/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  
[email protected]:/etc/init#  

Сделайте то же самое для сценария /etc/init.d/networking, что и ссылается / вызывает файл /etc/init/networking.conf.

[email protected]:/etc/init# cp networking.conf.1310 networking.conf  
[email protected]:/etc/init# cd ../init.d  
[email protected]:/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)
[email protected]:/etc/init.d# cp networking.1310 networking
[email protected]:/etc/init.d# service networking restart
networking stop/waiting
networking start/running
[email protected]:/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)
[email protected]:/etc/init.d# echo "hah, it works! *8^)"
Hah, it works! *8^)
[email protected]:/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.log, которая выглядит так:

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

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

EDIT: я обнаружил, что это приводит к непреднамеренному запуску скрипта, управляемого /etc/init/failsafe.conf, что нежелательно, поскольку он вызывает 120-секундную задержку таймаута при каждой загрузке ... а также, возможно, маскировку фактических неправильные конфигурации / проблемы с сетью, которые будут отображаться в этой задержке, но это уже показывает все время. (например, отсоединенный кабель, который разрешает доступ к общему сетевому файлу, например, в / etc / fstab)

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

ответ дан kvm-user420 18.04.2014 в 18:56
3

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

Вы можете найти его здесь: Ссылка

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

ответ дан metral 18.04.2014 в 22:23
0

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

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

:

#!/bin/bash 

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

и, наконец:

chmod +x ifdown

теперь вы можете изменить ip-адрес и перезапустить сетевую службу с помощью команды systemctl или service.
ПРИМЕЧАНИЕ : этот скрипт слишком прост и НЕ РУК vm, нажмите , мост, ... интерфейсы. фактически очистить все интерфейсы исключить lo (loopback).

    
ответ дан mah454 24.09.2017 в 09:43