В 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 Server?
Оказывается, это "особенность". единственный поддерживаемый способ перезапуска интерфейса в Ubuntu Server - это sudo ifdown eth0 && sudo ifup eth0
.
https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1301015
ifdown, ifup не't работа для меня (вероятно, СШ ожидания подключения до вторая команда). Что сработало:
sudo service network-manager restart
Это было на 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/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.
Но они действительно могли/должны были вывести это в качестве диалогового сообщения при попытке перезапуска службы networking. ах ну да. разобрался и даже нашел старое решение.
EDIT: Я обнаружил, что это вызывает непреднамеренное срабатывание скрипта, управляемого /etc/init/failsafe.conf, что нежелательно, поскольку это вызывает 120-секундную задержку таймаута при каждой загрузке... а также, возможно, маскирует фактические неправильные конфигурации/сетевые проблемы, на которые указывает эта задержка, но она и так постоянно проявляется. (например, отключенный кабель, который позволял доступ к сетевому файловому ресурсу, отображенному в /etc/fstab, например).
В любом случае, я выясню, что является причиной постоянного срабатывания таймаута, и опубликую исправление, когда найду его.
Что касается ответа kvm-user420', я' пошел дальше и создал скрипт для замены сетевых скриптов Ubuntu 14.04' на скрипты Ubuntu 13.10.
Вы можете найти его здесь: https://github.com/metral/restore_networking
Наслаждайтесь!
Я могу исправить проблему с этим скриптом : пожалуйста, добавьте этот скрипт на "/и т. д./сети/если-вниз.Д" и
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 или служебную команду . Примечание : этот скрипт слишком прост и не прикасайтесь ВМ,кран,мост,... интерфейсы . на самом деле сбросить все интерфейсы исключить Ло (петлевой) .