Ubuntu सर्वर में स्थिर मार्ग कैसे सेट करें?


51

मैंने Ubuntu 8.10 के बाद से Ubuntu का उपयोग किया है; आज मैं Ubuntu 12.04 सर्वर के साथ काम कर रहा हूं।

मुझे बूटिंग पर स्थिर मार्गों को रखने में कठिनाई हो रही है। मैं आमतौर पर रूट कमांड लगाता हूं

/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>

में /etc/rc.localया मैं एक फ़ाइल (नाम बन जाएगा routes) निर्देशिका के अंदर /etc/network/if-up/है, लेकिन मैं ध्यान दें कि Ubuntu 12.04 पर यह काम नहीं कर रहा है।

यदि मैं शेल में कमांड टाइप करता हूं, तो वे काम करते हैं, लेकिन जब वे निर्दिष्ट फ़ाइल में होते हैं तो वही कमांड काम नहीं करते हैं।

मैंने पहले ही यह सोचकर फ़ाइल नाम को अन्य नामों में बदलने की कोशिश की कि मेरा फ़ाइल नाम ( routes) Ubuntu 12.04 में गलत हो सकता है, लेकिन यह भी काम नहीं किया।

मैं यह भी देखता हूं कि कमांड /sbin/ifconfigकाम करता है, कम /sbin/route

नेटवर्क सेट-अप में क्या बदलाव आया है?

मैं Ubuntu 12.04 पर स्थिर मार्गों को कैसे परिभाषित कर सकता हूं?


बस जाँच करने के लिए: rc.local निष्पादन योग्य है और यह शेबंग लाइन से शुरू होता है? शायद यह आपके आदेश के साथ एक समस्या है। आप एक फ़ाइल ( your_command > stderr.txt 2>&1) में रीडायरेक्ट रिडायरेक्ट करने की कोशिश कर सकते हैं और इसके आउटपुट का निरीक्षण कर सकते हैं ...
सलेम

आपको / etc / नेटवर्क / इंटरफेस में रूट सेट करने चाहिए, न कि /etc/rc.local में। और आपके द्वारा उपयोग की जाने वाली नई कमांड ip addऔर है ip route। नेट पर शासन करने के लिए एक आदेश। :)
एंडर्स

निश्चित रूप से पढ़ेंman 5 interfaces
डेविड टोनहोफर 15

जवाबों:


64

आप इसमें स्थैतिक मार्ग डाल सकते हैं /etc/network/interfaces:

auto eth0
iface eth0 inet static
      address 192.168.1.2
      netmask 255.255.255.0
      up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
      up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1

13
/ Sbin / ip के लिए सिंटैक्स:up ip route add 192.168.0.0/24 via 192.168.1.1
w00t

1
क्या आप कृपया उत्तर में अपनी अंतिम दो पंक्तियों की व्याख्या करेंगे या ज्ञान स्रोत का लिंक प्रदान करेंगे? धन्यवाद!
इसकी

आप 192.68.0.0 को वाइल्डकार्ड के रूप में देख सकते हैं, यह कहते हुए कि सभी पैकेट 192.168 के लिए किस्मत में हैं। * डिफ़ॉल्ट गेटवे 192.168.1.1 के माध्यम से रूट किया जाना चाहिए। कर्नेल फिर उस डिफ़ॉल्ट गेटवे को हल करने का प्रयास करेगा, लेकिन यदि उसके पास पहले से एआरपी प्रविष्टि है, तो वह पैकेट को उस इंटरफ़ेस से बाहर भेज देगा, जिसने यह सीखा है कि गेटवे उस अगले हॉप के लिए गंतव्य मैक के साथ रहता है। उम्मीद है कि इससे थोड़ी मदद मिलेगीं।
नील मैकगिल

/Etc/network/interfaces.d/ भी है जो रूट डालने के लिए बेहतर जगह हो सकती है।
एलिजा लिन

यह काम करता है, लेकिन यह नेटवर्क इंटरफेस के लिए मैन पेज में वर्णित नहीं है। क्या यह मानक है?
B --овиЈ

18

मैंने बहुत बार पाया कि एक स्थिर मार्ग को परिभाषित करने के लिए सही जगह / etc / नेटवर्क / इंटरफेस में है, यह ठीक है अगर आप विश्व स्तर पर जा रहे हैं उदाहरण के लिए /etc/init.d/networking पुनरारंभ के साथ नेटवर्क को पुनरारंभ करें। लेकिन अगर आप एक इंटरफ़ेस बंद करने के लिए ifdown और ifup का उपयोग करने जा रहे हैं, ifup त्रुटि के साथ समाप्त हो जाएगा:

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

क्योंकि यह एक मार्ग को परिभाषित करने की कोशिश करता है लेकिन यह पहले से ही परिभाषित है। इंटरफ़ेस वैसे भी ऊपर होगा, लेकिन यदि अगली बार आप अपडेट / रन / नेटवर्क / आईस्टेट नहीं करेंगे, तो आप हमें ifdown करेंगे जब तक आप --force ध्वज का उपयोग नहीं करते हैं।

यदि रूट पहले से परिभाषित हैं, तब भी कॉन्फ़िगर करने के लिए ifup बनाने के लिए, आप / etc / नेटवर्क / इंटरफ़ेस में मार्गों को परिभाषित करते समय इस प्रारूप का उपयोग कर सकते हैं

up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true

इस तरह आपके पास आउटपुट में चेतावनी होगी लेकिन इंटरफ़ेस कॉन्फ़िगरेशन पूरा हो जाएगा

ifup eth1

RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553

1
केवल विन्यास में "डाउन आईपी रूट डेल 192.168.0.0/16 192.168.10.1" के माध्यम से क्यों नहीं जोड़ा गया?
w00t

क्योंकि लोग ifconfigचलाने के बजाय मैन्युअल रूप से उपयोग करने जैसी चीजें करते हैं ifdown, फिर सही उपकरण का उपयोग करके पुनर्प्राप्त करने में सक्षम होना चाहते हैं। इस प्रकार यह सहायक होता है यदि वे उपकरण अप्रत्याशित अवस्था के लिए लचीला होते हैं क्योंकि वे राज्य को ठीक करने का प्रयास करते हैं। || trueसुझाव एक अच्छा एक है। डाउन लाइन जोड़ना भी मददगार होता है।
फिल पी।

5
एक यादृच्छिक उपयोगकर्ता से: आईपी ​​कमांड में "ऐड" के बजाय "बदलें" का उपयोग करें। Ex: up ip route replace 172.16.0.0/24 via 192.168.10.1"प्रतिस्थापित" मार्ग को जोड़ देगा यदि यह अभी तक मौजूद नहीं है, लेकिन यदि एक ही चयनकर्ता वाला मार्ग मौजूद है, तो इसे वर्तमान एक से बदल दिया जाएगा, भले ही उनका गंतव्य एक ही हो।
एक्सपी २०५०

9

आप इसे आज़मा सकते हैं (इसे जोड़ सकते हैं /etc/network/interfaces), यह मार्ग निर्धारित करने का लगभग पूरा तरीका है:

auto eth0
iface eth0 inet static
    post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
    post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/

6

उबंटू में एक पैकेज ifupdown-extra avaible है।
यह स्वचालित स्क्रिप्ट (इनस्टॉल इन /etc/network/*/) प्रदान करता है , जिनमें से एक का उपयोग स्थैतिक मार्गों को जोड़ने के लिए किया जाता है।

इसके लिए कॉन्फ़िगरेशन फ़ाइल है /etc/network/routes

इस कॉन्फ़िगरेशन फ़ाइल के शीर्ष में एक अच्छा वर्णन है:

यह कॉन्फ़िगरेशन फ़ाइल स्थिर-मार्गों द्वारा पढ़ी जाती है यदि -डाउनडाउन स्क्रिप्ट और /etc/init.d/networking-routes स्क्रिप्ट किसी दिए गए इंटरफ़ेस या वैश्विक मार्गों के साथ जुड़े मार्गों की सूची सेट करने के लिए।

मेरे द्वारा उपयोग किया जाने वाला एक उदाहरण मार्ग है:

192.168.240.0 255.255.255.0 192.168.130.3 em3

1

हमारे लिए क्या काम था

sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0

मैं एक मैक पर चला करता था:

sudo route -n add -net 192.168.0.2/32 192.168.1.1

लेकिन आईपी और अंतिम "नेटमस्क" भाग के बीच एक जुबांट पर "जीयू" गायब था (जुबांट पर भी आवश्यक नहीं)


10
यह अस्थायी (गैर-स्थिर) मार्गों के लिए पूरी तरह से काम करता है, सवाल लगातार मार्गों को प्राप्त करने के बारे में है
anneb

0

मैं उपयोग करना पसंद करता हूं nmcli

nmcli device modify <device-name> ipv4.routes "<ip>/<mask> <gw>" ipv4.route-metric 25

उदाहरण के लिए:

nmcli device modify wlp2s0 ipv4.routes "1.1.1.0/24 192.168.0.1" ipv4.route-metric 25

उसके बाद NetworkManager सेवा को पुनरारंभ करके परिवर्तन लागू करें:

sudo systemctl restart NetworkManager.service

0

उपयोग करके nmcliमैं एक स्थायी समाधान चलाने में सक्षम था (@isapir समाधान मेरे डिवाइस पर काम नहीं करता था)।

sudo nmcli connection modify <conection-name> +ipv4.routes "<ip>/<mask> <gw> <mt>"

उदाहरण के लिए:

sudo nmcli connection modify ssid-name +ipv4.routes "1.1.1.0/24 192.168.0.1 100"

उसके बाद कनेक्शन को फिर से और फिर से सेट करके परिवर्तन संभव है (पूर्ण NetworkManager पुनरारंभ की कोई आवश्यकता नहीं):

sudo nmcli con down ssid-name ; sudo nmcli con up ssid-name

वर्तमान कनेक्शन चलाने के लिए:

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