मैं उबंटू में नेटवर्क कनेक्शन की प्राथमिकता कैसे निर्धारित करूं?


41

यदि उबंटू 11.04 मशीन एक साथ वाईफाई और 3 जी से जुड़ी है, तो मैं पहले एप्लिकेशन (ब्राउज़र आदि) को वाईफाई का उपयोग करने देने की प्राथमिकता कैसे तय करूं? यदि यह उपलब्ध नहीं है, तो इसे 3 जी का उपयोग करना चाहिए।

मूल रूप से, मैं उस क्रम को सेट करना चाहूंगा जिसमें नेटवर्क कनेक्शन का उपयोग किया जाता है।

संपादित करें: मैं एक आसान दृष्टिकोण की तलाश कर रहा हूं जो उन लोगों के लिए उपयोगी होगा जो केवल उबंटू / लिनक्स के विशेषज्ञ हैं और नहीं।

जवाबों:


27

मैं हैरान हूँ कि कोई भी यह करने के लिए सबसे सरल आदेश में उल्लेख किया गया है: ifmetric। इसका उपयोग करके स्थापित किया जा सकता है sudo apt-get install ifmetric। इस कमांड का उपयोग किसी भी इंटरफ़ेस के मीट्रिक को बदलने के लिए किया जा सकता है। कम मीट्रिक वाला इंटरफ़ेस इंटरनेट के लिए पसंद किया जाता है

इसका उपयोग करने के लिए, पहले routeकमांड का उपयोग करके मैट्रिक्स देखें :

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.42.0.2       0.0.0.0         UG    600    0        0 wlan0

यहाँ, eth0मीट्रिक कम है, इसलिए इसे अधिक पसंद किया जाएगा wlan0। यदि आप पसंद करना चाहते हैं wlan0, तो इसकी मीट्रिक कम करें:

sudo ifmetric wlan0 50

अब, रूटिंग टेबल जैसा दिखेगा:

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.2       0.0.0.0         UG    50     0        0 wlan0
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0

अब लिनक्स wlan0इंटरनेट के लिए उपयोग किया जाएगा । परिवर्तन तुरंत परिलक्षित होगा।


1
बहुत बढ़िया जवाब। Thx (मार्ग -n के लिए भी)। मेट्रिक को बदलने के लिए कमांड के लिए इफेट्रिक लगाने के बाद मुझे रिबूट करना पड़ा
Thorsten Niehues

इस परिवर्तन को स्थायी बनाने के लिए (मैं गलती से मेरे आईफ़ोन हॉटस्पॉट का उपयोग नहीं करना चाहता)
थोरस्टन नेह्यूस

2
@ThorstenNiehues: इसे स्थायी करने के लिए मेरे दिमाग में आने वाला एक त्वरित समाधान यह है कि आप अपने क्रेस्टैब में इमेट्रिक कमांड को जोड़ दें, crontab -eऔर फिर अंत में लाइन जोड़ें @reboot sudo ifmetric wlan0 50:।
shivams 20

यह काम करता हैं। लेकिन मैं इसके बाद (जैसे ब्राउज़र के माध्यम से) स्थानीय मशीनों का उपयोग नहीं कर सकता। कोई उपाय? धन्यवाद।
टॉमस

@tomasb: दिलचस्प संदेह। हालाँकि, यह अपेक्षा की जाती है कि इंटरफ़ेस की पसंद को बदलने से आपको पसंदीदा इंटरफ़ेस के स्थानीय नेटवर्क में लाया जाएगा। स्थानीय मशीनों का उपयोग करने का एक सीधा तरीका एक आभासी मशीन का उपयोग करके उन्हें एक्सेस करना होगा। हालांकि, बेहतर समाधान मौजूद होना चाहिए। मुझे सोचने दो और जवाब दो।
शिवांश

14

मैट्रिक्स सेट करना यह है कि आप प्राथमिकताएं कैसे बदलते हैं। उच्च मीट्रिक का उपयोग करने के लिए अधिक "महंगा" है, इसलिए ओएस सबसे कम मीट्रिक के साथ इंटरफेस का उपयोग करेगा यदि उसे यातायात को रूट करने की आवश्यकता है। यदि निम्न मीट्रिक इंटरफ़ेस बंद हो जाता है, तो यह उच्च मीट्रिक इंटरफ़ेस का उपयोग करेगा क्योंकि यह एकमात्र इंटरफ़ेस है जिसका उपयोग उस विशेष नेटवर्क / गंतव्य की ओर ट्रैफ़िक को रूट करने के लिए किया जा सकता है।

मेट्रिक्स फ़ाइल / etc / नेटवर्क / इंटरफेस में निर्दिष्ट हैं , प्रलेखन के लिंक बिंदु।

फ़ाइल को संपादित करने, नेटवर्क की पहचान करने और बस metricपैरामीटर बदलने और बचाने के लिए किसी भी टेक्स्ट एडिटर का उपयोग करें । रिबूट नेटवर्क सेवाओं को फिर से शुरू करने के geeky विवरण में शामिल किए बिना सभी मूल्यों को रीसेट करने का सबसे सरल तरीका है।


2
हैरी - प्रतिक्रिया के लिए धन्यवाद - जिस नेटवर्क मैं eth1 में दिलचस्पी है, उसे "ifconfig" में दिखाया गया है, लेकिन "/ etc / नेटवर्क / इंटरफेस" में नहीं। "Ifconfig" में क्या दिखाया गया है और "/ etc / network / interfaces" में क्या दिखाया गया है?
प्रवीण श्रीपति

1
Eth0 को "/ etc / नेटवर्क / इंटरफेस" में जोड़ना अधिक जोखिम भरा है। आप इंटरफ़ेस के लिए मीट्रिक बदलने के लिए रूट के रूप में ifconfig की कोशिश कर सकते हैं (यह देखें कि यह बूट के बाद वहां रहता है)।
harpmc

जब मैंने 'sudo ifconfig eth1 metric 4' चलाया तो मुझे निम्न त्रुटि मिली 'SIOCSIFMETRIC: Operation not support'। goo.gl/UhXBJ का कहना है कि 'इसके अलावा, सभी सिस्टम मीट्रिक तर्क का उपयोग नहीं करते हैं। ..... जब लिनक्स सिस्टम को कॉन्फ़िगर करते हैं, तो आप प्रत्येक इंटरफ़ेस के लिए एक स्पष्ट मार्ग कमांड जोड़ते हैं। "ऐसा लगता है कि उबंटू में एक नौसिखिया उपयोगकर्ता के लिए यूआई की तरह कोई सीधा आगे का दृष्टिकोण नहीं है।
प्रवीण श्रीपति

2
ऐसा लगता है कि सभी एडेप्टर पर त्वरित गति परीक्षण के बाद लिनक्स सबसे तेज एडेप्टर पर खुद को तय करता है। मीट्रिक अब कई वितरणों पर समर्थित नहीं है। आप अभी भी चीजों को "/ etc / network / interfaces" के माध्यम से आज़मा सकते हैं, लेकिन मुझे नहीं पता कि आप कितने सफल होंगे। यह प्रश्न भी देखें ।
harrymc 19

3
सबसे सरल समाधान, जो हर कोई करता है, बस उस इंटरफ़ेस को बंद करना है जिसे आप उपयोग नहीं करना चाहते हैं, या इसे "केवल अपने नेटवर्क पर संसाधनों के लिए इस कनेक्शन का उपयोग करें" तक सीमित करने के लिए है (यदि आपके पास अपना प्रिंटर है या जो कुछ भी है एक ही राउटर)।
१२

7
  1. रूटिंग मेट्रिक्स में हेरफेर करके सामान्य ट्रैफ़िक के लिए प्राथमिकता तय की जाती है। प्रत्येक मार्ग में हॉप-काउंट्स और बैंडवाइड्स जैसे संबद्ध पैरामीटर हैं। routeकमांड के लिए मैन-पेज में "मीट्रिक" विकल्प देखें ।

    $ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref     Use Iface
    0.0.0.0         192.168.1.254   255.255.255.255 U     0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     256    0        0 eth0
    
  2. नेटवर्क संसाधनों के लिए एप्लिकेशन एक्सेस को प्राथमिकता देना अक्सर "ट्रैफ़िक को आकार देना" द्वारा संबोधित किया जाता है - मैं यह देखने के लिए वेब खोज-इंजन का उपयोग करूंगा कि क्या उबंटू या राउटर ऐसा कर सकते हैं।


पाद लेख।

एमएस विंडोज पर, लेकिन लिनक्स पर नहीं, netstat -nrकमांड उसी जानकारी को आउटपुट करता है route print। जिसमें रूटिंग मेट्रिक्स शामिल हैं।


रूट के लिए मैन पेज में "मैट्रिक द टार्गेट की दूरी '(आमतौर पर हॉप्स में गिना जाता है)। इसका उपयोग हाल की गुठली द्वारा नहीं किया जाता है, लेकिन डेमॉन को रूट करके इसकी आवश्यकता हो सकती है।" मुझे यकीन नहीं है कि अगर एक नियमित उबंटू डेस्कटॉप पर मीट्रिक पैरामीटर का कोई प्रभाव होगा।
प्रवीण श्रीपति

1
क्या आप मुझे ऐसा करने के लिए विशिष्ट रूट कमांड दे सकते हैं?
प्रवीण श्रीपति

11
@PraveenSripati - मुझे विश्वास नहीं है कि आपने इस तरह के जवाब के लिए अपनी मेहनत की कमाई का 100 दिया - तकनीकी रूप से सही, लेकिन आपकी या मेरी मदद नहीं करता। :-( मैं एक विशिष्ट आदेश के लिए भी देख रहा हूँ।
भगवान लोह।

1
सच में क्या जवाब है ?? netstat -nr मीट्रिक भी नहीं दिखाता है। @Shivams से उत्तर देखें
थोरस्टन नेह्यूस

3

मैंने वास्तव में इसे आज़माया नहीं है, लेकिन इस उद्देश्य के लिए एनसीडी (नेटवर्क कॉन्फ़िगरेशन डेमन - 1) का उपयोग किया जा सकता है। साइट नेटवर्क कॉन्फ़िगरेशन को आसान बनाने का दावा करती है। वाक्य-विन्यास सरल प्रतीत होता है।

# कुछ नेटवर्क कनेक्शन के लिए चुनें। Eth1 को eth0 के सामने रखकर प्राथमिकता दें।
सूची ("NET-eth1", "NET-eth0") pnames;

(1) - http://code.google.com/p/badvpn/wiki/NCD


आप सही हैं, मेरा एनसीडी सॉफ्टवेयर यह अच्छी तरह से करता है; उदाहरण के रूप में वहाँ काम करता है। मुझे यह ध्यान देना चाहिए कि pnamesसूची वास्तव multidepend()में अगली पंक्ति के कथन का एक तर्क है - यह वह है जो प्राथमिकताओं को लागू करता है। इसके पीछे तंत्र है कि जब है eth1आता है जब eth0पहले से ही है, यह मार डाला है multiprovide("NET-eth1");, क्योंकि NET-eth1के सामने है NET-eth0, multidepend()नीचे जाने के लिए और वापस ऊपर तुरंत आ जाएगा, लेकिन से चर को उजागर eth1करने के बजाय प्रक्रिया eth0
अंबोज़ बिज्जक

मैंने इसे देखा लेकिन इसका पता नहीं लगा सका। यह यह कठिन नहीं होना चाहिए।
एसडीसोलर

3

यह सब रूट मेट्रिक्स की वजह से है। आप सबसे कम मीट्रिक वाले डिफ़ॉल्ट मार्ग को हटाना चाहते हैं और फिर पुराने मार्ग को उच्च मीट्रिक के साथ पुनर्स्थापित करना चाहते हैं। कृपया नीचे दिए गए आदेशों का पालन करें।

कहते हैं कि आपकी रूटिंग टेबल इस तरह दिखती है:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.16.87.254    0.0.0.0         UG    100    0        0 ens38
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

अब डिफ़ॉल्ट गेटवे को हटा दें

# route delete default gateway

अब पुराने डिफ़ॉल्ट गेटवे को पुन: स्थापित करें (ध्यान दें कि इस मामले में मीट्रिक वर्तमान डिफ़ॉल्ट मार्ग 101 की तुलना में 102 अधिक है)

# route add default gw 10.16.87.254 metric 102 dev ens38                                                              
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
0.0.0.0         10.16.87.254    0.0.0.0         UG    102    0        0 ens38
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

यह काम। किसी भी अन्य नौसिखियों के लिए ध्यान दें (जो कुछ हो रहा था, उसका पालन करने के लिए मुझे कई बार यह पढ़ना पड़ा): चरण 1 ऊपर Gateway= के लिए प्रविष्टि को हटाता है 10.16.87.254, जो UGसबसे कम है Metric, और चरण 2 इसे उच्चतर के साथ वापस रखता Metricहै। उपलब्ध होने के बाद भी बैकअप के रूप में 192.168.151.2उपलब्ध नहीं है।
विल डिक

0

[अपडेट] उबंटू १ As.०४ एलटीएस (सर्वर) netplanके रूप में, नेटवर्क प्रबंधन के लिए डिफ़ॉल्ट आवरण है। कॉन्फ़िगर Netplan एक के माध्यम से किया जाता है YAML फ़ाइल, डिफ़ॉल्ट रूप से /etc/netplan/01-netcfg.yaml(अधिक जानकारी के लिए यहाँ )।

रूटिंग मीट्रिक को " metric" विकल्प द्वारा परिभाषित किया जाता है , जो एक सकारात्मक पूर्णांक ( 100सामान्य रूप से डिफ़ॉल्ट मान) की अपेक्षा करता है । यहाँ संदर्भ पृष्ठ से उदाहरण दिया गया है:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses:
      - 10.0.0.10/24
      - 11.0.0.11/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      routes:
      - to: 0.0.0.0/0
        via: 10.0.0.1
        metric: 100
      - to: 0.0.0.0/0
        via: 11.0.0.1
        metric: 100

सबसे कम metric(पथ लंबाई) वाला मार्ग "पसंदीदा" गेटवे बन जाता है। ( sudo netplan tryपरिवर्तनों को सक्षम करने के लिए उपयोग करें )

ध्यान दें कि एक रोमिंग वातावरण (कई कनेक्शन, चालू और बंद), आप optional(बूलियन) पैरामीटर true(डिफ़ॉल्ट गलत है) सेट करना चाहते हैं :

network:
  version: 2
  ethernets:
    enred:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 100
    engreen:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 200
      # this is plugged into a test network that is often
      # down - don't wait for it to come up during boot.
      optional: true

डीएचसीपी कनेक्शन के मामले में मार्ग मीट्रिक के लिए थोड़ा अलग सिंटैक्स देखें।

आप NetworkManagerरेंडरर के रूप में भी उपयोग कर सकते हैं , जो मुझे लगता है (अभी तक खुद का परीक्षण नहीं किया है) आपको GUI टूल के माध्यम से कॉन्फ़िगरेशन के उस हिस्से को देखने / संपादित करने देगा।

renderer (अदिश)

इस परिभाषा के लिए दिए गए नेटवर्किंग बैकएंड का उपयोग करें। वर्तमान में समर्थित हैं networkdऔर NetworkManager। यह संपत्ति networks:एक उपकरण प्रकार (उदाहरण के लिए ethernets:) या किसी विशेष डिवाइस परिभाषा के लिए वैश्विक रूप से निर्दिष्ट की जा सकती है । डिफ़ॉल्ट है networkd

(संदर्भ पृष्ठ पर बहुत अंतिम 'बड़ा' उदाहरण दोनों रेंडरर्स के ऐसे हाइब्रिड उपयोग को दर्शाता है)।

यह प्रश्न (आस्कुबंटू) भी देखें ।

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