Στο 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
Αυτό που άλλαξε είναι ότι δεν θέλουν να κάνετε "bouncing" το δίκτυο πια.Το σταμάτημα και η εκκίνηση εξακολουθούν να λειτουργούν.Η επανεκκίνηση δεν λειτουργεί πλέον. Μόλις "έλυσα" αυτό το "πρόβλημα", δηλαδή πήρα πίσω την παλιά συμπεριφορά. Για να επιστρέψω στην προηγούμενη συμπεριφορά: Πάρτε ένα αρχείο 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: Διαπίστωσα ότι αυτό προκαλεί μια ακούσια ενεργοποίηση του script που ελέγχεται από το /etc/init/failsafe.conf το οποίο είναι ανεπιθύμητο καθώς προκαλεί μια καθυστέρηση 120 δευτερολέπτων timeout σε κάθε εκκίνηση... καθώς και ίσως να καλύπτει πραγματικές λανθασμένες ρυθμίσεις/προβλήματα δικτύου τα οποία αυτή η καθυστέρηση'η εμφάνιση θα υποδείκνυε, αλλά ήδη εμφανίζεται συνέχεια. (π.χ. Ένα αποσυνδεδεμένο καλώδιο, το οποίο επέτρεπε την πρόσβαση σε ένα κοινόχρηστο αρχείο δικτύου που αντιστοιχίζεται στο /etc/fstab, για παράδειγμα)
Σε κάθε περίπτωση, θα βρω τι προκαλεί αυτό το συνεχές χτύπημα του timeout και θα δημοσιεύσω μια λύση όταν τη βρω.
Σε σχέση με την απάντηση του kvm-user420's, έχω προχωρήσει και έχω ρυθμίσει ένα σενάριο για να αντικαταστήσω τα σενάρια δικτύωσης του Ubuntu 14.04's με αυτά του Ubuntu 13.10
Μπορείτε να το βρείτε εδώ: https://github.com/metral/restore_networking
Καλή διασκέδαση!