Как успешно перезапустить сеть без перезагрузки через 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 networking
stop: Job failed while stopping
+ :
+ exec start networking
start: Job is already running: networking

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

1
задан 1 April 2014 в 21:17

4 ответа

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

sudo service network-manager restart

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

70
ответ дан 24 May 2018 в 10:12
  • 1
    Принятый ответ не помог мне; этот сделал. (Свежая установка 14.04.1) – u2n 24 August 2014 в 17:18
  • 2
    Могу подтвердить, что это работает для меня на Trusty (Ubuntu 14.04). – gerlos 29 September 2014 в 23:15
  • 3
    "Ifdown / ifup" ответ не работал для меня ни на Ubuntu 14.04, но так и было. – dieuwe 30 September 2014 в 02:26
  • 4
    Принятый ответ применим для Ubuntu 12.04 и ниже. Этот ответ приемлем для 14.04. – Swiss 13 December 2014 в 03:24
  • 5
    На моем 14.04.2 эта служба не существует - перезапуск сетевого администратора sudo. – Xdg 1 March 2015 в 18:51

Что изменилось, они не хотят, чтобы вы «подпрыгивали» в сети больше. остановка и запуск, по-прежнему работают. перезапуск больше не работает. Я просто «решил» эту «проблему», то есть вернуть прежнее поведение. Чтобы вернуться к предыдущему поведению: возьмите файл 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/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#  

Сделайте то же самое для сценария /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"
<       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). 

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

Запись, когда вы пытаетесь, входит в /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)

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

6
ответ дан 24 May 2018 в 10:12
  • 1
    мудрость изменения поведения ядра ОС является дискуссионной. – 0xF2 5 January 2015 в 18:34
  • 2
    Почему они удалили возможность перезапуска? Я хотел бы знать это, прежде чем восстанавливать его. – flickerfly 11 November 2015 в 19:53
  • 3
    @ 0xF2 - вы имеете в виду questionable. – Dale Anderson 4 November 2016 в 20:46
  • 4
    @DaleAnderson, что тоже ;-) – 0xF2 6 November 2016 в 04:20

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

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

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

3
ответ дан 24 May 2018 в 10:12
  • 1
    Это сработало для меня. Надеюсь, однажды Upstart просто уйдет ;-) – Andrew 7 February 2015 в 02:57

Я исправляю проблему с этим скриптом: добавьте этот скрипт в файл «/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, tap, bridge и .... фактически очистить все интерфейсы исключить lo (loopback).

0
ответ дан 24 May 2018 в 10:12

Другие вопросы по тегам:

Похожие вопросы: