SSH पर रिबूट के बिना किसी नेटवर्क को सफलतापूर्वक कैसे पुनः आरंभ करें?


98

उबंटू में 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

उबंटू 14.04 सर्वर में नेटवर्किंग को फिर से शुरू करने का सही तरीका क्या है?


क्या आप वास्तव में नेटवर्किंग को फिर से शुरू करना चाहते हैं या सिर्फ eth0 जैसे इंटरफ़ेस को पुनः आरंभ करना चाहते हैं? किसी भी मामले में, यह संभवतः ssh कनेक्शन को तोड़ देगा।
चिली ५५५

1
चूंकि दोनों शेल स्क्रिप्ट कर रहे हैं, साथ में जानकारी हासिल sudo bash -x /usr/sbin/service networking restartऔरsudo bash -x /etc/init.d/networking restart
waltinator

@terdon सा मूर्खतापूर्ण रूप से 14.04 के लिए चारों ओर एक टैग है, विशेष रूप से वर्णन के रूप में यह "वर्तमान" रिलीज है जो यह नहीं है। उस ने कहा, यह समस्या 13.10 में पूरी तरह से प्रतिलिपि प्रस्तुत करने योग्य है।
सिमोनजग्रीन

@ chili555 जो मैं करना चाहता हूं वह प्रभावी होने के लिए / आदि / नेटवर्क / इंटरफेस में बदलाव के लिए है। इन लिपियों के काम करने से पहले एसएसएच कनेक्शन काम करना बंद कर देते हैं।
सिमोनजग्रीन

@waltinator अतिरिक्त जानकारी ने सवाल को जोड़ा, सुझाव के लिए धन्यवाद
सिमोनजग्रीन

जवाबों:


121

यह "सुविधा" है। केवल एक इंटरफेस को पुन: प्रारंभ उबंटू सर्वर है में से समर्थित रास्ताsudo ifdown eth0 && sudo ifup eth0

https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1301015


8
सुनिश्चित करें कि आप 'sudo ifdown eth0 && sudo ifup eth0' चलाते हैं (दूसरी sudo पर ध्यान दें) यदि आप इस कमांड को रूट के रूप में नहीं चला रहे हैं
mtpettyp

3
यह ठीक है अगर ssh के माध्यम से जुड़ा हुआ है? यानी, क्या डिस्कनेक्ट से पहले दोनों कमांड चलेंगे?
मेवोप्लप

2
मेरे मामले में, sudo service networking restartऐसा लग रहा था कि चीजों को गड़बड़ कर दिया गया है। इसलिए मुझे sudo ifdown eth0 && sudo ifup eth0दो बार भागना पड़ा । हाँ, दो बार।
ध्रुवीकरण करें

@ExceptionSlayer: नहीं, उन्होंने मेरे लिए काम नहीं किया। मुझे सर्वर को भौतिक रूप से बंद करना था और इसे फिर से चालू करना था (Ubuntu 14.04)।
Xdg

4
एक सुरक्षित विकल्प के ;बजाय उपयोग नहीं कर रहा है &&?
आइजैक

72

ifdown, ifup ने मेरे लिए काम नहीं किया (संभवत: SSH कनेक्शन दूसरी कमांड से पहले)। क्या काम था:

sudo service network-manager restart

यह 14.04 ubuntu-Desktop सिस्टम पर था।


4
स्वीकृत जवाब मेरे काम नहीं आया; यह एक किया (14.04.1 का ताज़ा संस्थापन)
u2n

2
पुष्टि कर सकते हैं कि यह मेरे लिए ट्रस्टी (Ubuntu 14.04) पर काम करता है।
gerlos

3
"Ifdown / ifup" उत्तर उबंटू 14.04 पर मेरे लिए काम नहीं किया, लेकिन यह किया।
मरुवे

4
स्वीकृत उत्तर उबंटू 12.04 और निम्न के लिए लागू है। यह उत्तर 14.04 के लिए स्वीकार्य है।
स्विस

4
मेरे 14.04.2 पर यह सेवा मौजूद नहीं है - sudo सेवा नेटवर्क-प्रबंधक पुनरारंभ।
Xdg

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  
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.  

लेकिन वे वास्तव में आउटपुट कर सकते हैं / होना चाहिए जब आप सेवा नेटवर्किंग पुनरारंभ की कोशिश करते समय संवाद संदेश के रूप में। ठीक है। यह पता लगाया और यहां तक ​​कि एक पुराने तरीके से काम करते हैं।

संपादित करें: मैंने पाया है कि यह /etc/init/failsafe.conf द्वारा नियंत्रित स्क्रिप्ट के एक अनजाने ट्रिगर के कारण होता है जो अवांछनीय है क्योंकि यह हर बूट अप में 120 सेकंड का समय समाप्त होने का कारण बनता है ... साथ ही वास्तविक गलतफहमी / नेटवर्क को मास्क करना। जिन मुद्दों पर यह देरी दिखाई देती है, वे इंगित करते हैं, लेकिन यह पहले से ही हर समय दिखाई दे रहा है। (उदाहरण के लिए एक अनप्लग की गई केबल, जो उदाहरण के लिए / etc / fstab में मैप की गई नेटवर्क फ़ाइल शेयर तक पहुँच की अनुमति दे रही थी)

किसी भी मामले में, मैं यह पता लगाऊंगा कि ऐसा क्या कारण है जो हमेशा टाइमआउट मार रहा है, और जब मुझे यह मिल जाए तो एक पोस्ट पोस्ट करें।


5
एक कोर ओएस व्यवहार को संशोधित करने की बुद्धि बहस का मुद्दा है।
0xF2

उन्होंने पुनः आरंभ करने की क्षमता को क्यों हटाया? मैं यह जानना चाहूंगा कि इसे पुनः स्थापित करने से पहले।
झिलमिलाहट

@ 0xF2 - आपका मतलब है questionable
डेल एंडरसन

@ डेलएंडरसन भी ;-)
0xF2

3

Kvm-user420 की प्रतिक्रिया के संदर्भ में, मैं आगे बढ़ा हूं और Ubuntu 14.10 की नेटवर्किंग स्क्रिप्ट को Ubuntu 13.10 के साथ बदलने के लिए एक स्क्रिप्ट सेटअप किया है।

आप इसे यहां पा सकते हैं: https://github.com/metral/restore_networking

का आनंद लें!


इसने मेरे लिए काम किया। उम्मीद है, एक दिन उपस्टार्ट बस चलेगा ;-)
एंड्रयू

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 या सर्विस कमांड के साथ नेटवर्किंग सेवा को पुनः आरंभ कर सकते हैं।
नोट : यह स्क्रिप्ट बहुत ही सरल है और DO HANDLE vm, टैप, ब्रिज, ... इंटरफेस नहीं है। वास्तव में लो (लूपबैक) को छोड़कर सभी इंटरफेस फ्लश करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.