क्या मैं एक इंटरफ़ेस लाने के दौरान जोड़े जा रहे डिफ़ॉल्ट मार्ग को रोक सकता हूं?


12

मेरे पास इस पर दो एनआईसी के साथ एक प्रणाली है। यह मशीन, और कुछ साथ आने वाले उपकरणों को अलग-अलग LAN में ले जाया जाएगा और कभी-कभी यह डायल-अप का उपयोग किया जाएगा।

    eth0:
    - 10.x.x.x address space
    - no internet gateway
    - only a few devices

eth1 (when used):
- 172.16.x.x or 192.168.x.x or other address spaces
- access to the gateway from LAN to internet

ppp0 (when used):
- internet access through dialup using KPPP

मैं ifconfig का उपयोग इंटरफेस ऊपर या नीचे लाने के लिए कर रहा हूं (ppp0 के अलावा, जो KPPP द्वारा नियंत्रित किया जाता है)।

अगर मैं पहले eth1 को लाता हूं, तो उसे इसके डीएचसीपी से एक पता मिलता है और गेटवे मिलता है और इसे रूटिंग में जोड़ा जाता है ताकि लैन और इंटरनेट तक पहुंचने में कोई परेशानी न हो।

अगर मैं eth0 को पहले या दूसरे स्थान पर लाता हूँ, तो यह अपना पता प्राप्त करता है और अपने पता स्थान (10.xx रेंज में) में डिफ़ॉल्ट गेटवे सेट करता है। अगर मैं eth0 को पहले और eth1 के दूसरे स्थान पर लाता हूं, तो डिफ़ॉल्ट गेटवे को अभी भी 10.xxx रेंज के भीतर रखा गया है।

तो कोई बात नहीं मैं क्या करता हूं, eth0 eth1 को ओवरराइड करेगा और रूटिंग में गेटवे को "क्लेम" करेगा।

वहाँ किसी तरह से या तो eth0 को गेटवे पर दावा करने से रोकने के लिए है, या यह सुनिश्चित करने के लिए कि eth1 (यदि दूसरा लाया गया) अपने गेटवे का उपयोग करता है? या क्या मैं किसी भी तरह से प्राथमिकता दे सकता हूं कि दूसरों के ऊपर किस इंटरफ़ेस के गेटवे का उपयोग किया जाना चाहिए?

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


यह अजीब है कि उपयोग करने से ifconfigकिसी भी प्रकार का डीएचसीपी इंटरैक्शन होगा। आमतौर पर ifupयह, शुरू करने से होगा dhclient। क्या आपके एथ * इंटरफेस संभवतः सिस्टम बूट प्रक्रिया द्वारा लाए जा रहे हैं, कहते हैं /etc/init.d/network, या NetworkManager द्वारा?
मार्क प्लॉटनिक

@MarkPlotnick: इसके बाद मैंने बूट किया है और "ifconfig eth1 up" (या नीचे या eth0 ...) का उपयोग कर रहा हूं। मुझे लगता है कि मैं जो करना चाहता हूं, उसके सरलतम रूप का अनुमान है कि 10.0 पते वाले स्थान के अलावा अन्य मार्गों के बिना एथ 0 को लाना होगा।
टैंगो

जवाबों:


5

DHCP सर्वर कॉन्फ़िगरेशन गलत है। जब यह दुनिया के बाकी हिस्सों में रूटिंग प्रदान नहीं कर सकता है तो इसे एक डिफ़ॉल्ट गेटवे विकल्प नहीं भेजना चाहिए। यदि यह उस विकल्प को भेजता है तो कोई भी ग्राहक यह मान सकता है कि वह किसी भी ऑफ-लिंक गंतव्य के लिए पैकेट को निर्धारित डिफ़ॉल्ट गेटवे पर भेज सकता है।

तो आपका बॉक्स eth0 से डिफ़ॉल्ट गेटवे का उपयोग करने में सही है अगर इसे DHCP द्वारा बताया गया है। इसका उपाय यह है कि आप अपने डीएचसीपी सर्वर से खराब विकल्प को हटा दें।


ठीक है, यह बहुत मायने रखता है। दुर्भाग्य से, DHCP सर्वर एक DLink DNS-321 है, जो कई नियंत्रण विकल्पों की अनुमति नहीं देता है। ऐसा लगता है कि मुझे गेटवे को शामिल करने की आवश्यकता है। मुझे यह देखना होगा कि क्या मैं इसे किसी तरह हैक कर सकता हूं और कॉन्फिग फाइल को एडिट कर सकता हूं। लेकिन, एक अन्य मुद्दा: यह हमेशा 10.xxx DHCP सर्वर से गेटवे क्यों लेता है और हमेशा गेटवे को दूसरे सर्वर से नहीं लेता है?
टैंगो

1
मुझे यकीन नहीं है कि समान मार्गों के बीच लिनक्स कैसे चुनता है। यह शायद मीट्रिक पर आधारित है। क्या आप कई डिफ़ॉल्ट मार्ग होने पर अपनी रूटिंग तालिका दिखा सकते हैं?
सैंडर स्टेफ़न

यह कई डिफ़ॉल्ट मार्गों की अनुमति नहीं देगा। हताशा यह है कि किसी कारण से eth0 हमेशा डीएचसीपी को सुनता है और गेटवे को अपडेट करता है। Eth1 के साथ, यह केवल गेटवे को सुनता है और उपयोग करता है यदि यह पहला और एकमात्र इंटरफ़ेस है जो ऊपर है। यदि eth0 का प्रवेश द्वार हमेशा eth1 को ओवरराइड नहीं करता है, तो मैं सिर्फ एक स्क्रिप्ट लिखूंगा, इसलिए जब eth0 को लाया गया, eth1 को नीचे लाया गया, तब लाया गया।
टैंगो

यह लगभग डीएचसीपी क्लाइंट में कठिन कोडित अजीबता जैसा लगता है। कौन सा एक आप प्रयोग कर रहें है? एक विकल्प के रूप में: यह सिर्फ eth0 और eth1 स्वैप करने के लिए आसान हो सकता है;)
Sander Steffann

यह डी-लिंक डीएनएस -321 पर है। लेकिन मैं / var / log / syslog से गुजरा हूँ और मैं देख सकता हूँ कि eth1 के लिए DHCP हर बार गेटवे में भी भेजता है। मैं अभी यह पता नहीं लगा सकता कि eth1 हमेशा गेटवे को क्यों लेता है और इसे मार्ग में जोड़ता है और eth1 नहीं करता है। मैं डीएचसीपी eth0 का उपयोग 10.0.0.3 से शुरू करने के लिए सीमा को सीमित करने की कोशिश करने जा रहा हूं और फिर 10.0.0.2 का उपयोग करते हुए eth0 को स्थिर बनाता हूं और देखता हूं कि क्या यह उस कठोर डीएचसीपी सर्वर को अनदेखा करता है।
टैंगो

16

मुझे रास्पियन पर इसी तरह की समस्या का सामना करना पड़ा (मुझे लगता है कि नीचे दिए गए समाधान के साथ ही डेबियन पर भी लागू होगा)। रास्पबेरी पाई 3 में 2 एनआईसी एकीकृत हैं: वाई-फाई और ईथरनेट। मैं दोनों का उपयोग करता हूं, वे क्रमशः wlan0 और eth0 हैं। wlan0 मेरे घर वाई-फाई नेटवर्क से जुड़ा है और इंटरनेट का उपयोग इस इंटरफेस के माध्यम से होता है। यह मेरे घर के राउटर से डीएचसीपी के माध्यम से अपनी सेटिंग्स प्राप्त करता है। eth0 मेरे विंडोज़ पीसी से सीधे जुड़ा हुआ है और इसमें स्थिर आईपी ​​असाइन किया गया है। Eth0 के माध्यम से कोई इंटरनेट एक्सेस उपलब्ध नहीं था क्योंकि मैंने इसे अपने विंडोज़ पीसी पर कॉन्फ़िगर नहीं किया था।

रास्पियन में, dhcpcd डेमॉन नेटवर्क इंटरफेस को कॉन्फ़िगर करने के लिए जिम्मेदार है। स्थैतिक IP को eth0 इंटरफ़ेस में सेट करने के लिए निम्नलिखित पंक्तियों को जोड़ा गया था /etc/dhcpcd.conf:

interface eth0

static ip_address=192.168.2.2/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1

इस सेटिंग के साथ, dhcpcd ने 2 डिफ़ॉल्ट रूट बनाए और eth0 के माध्यम से रूट को wlan0 की तुलना में अधिक प्राथमिकता दी गई:

pi@raspberrypi:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.2.1     0.0.0.0         UG    202    0        0 eth0
default         192.168.1.254   0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     *               255.255.255.0   U     303    0        0 wlan0
192.168.2.0     *               255.255.255.0   U     202    0        0 eth0

इसलिए मेरे पास कोई इंटरनेट एक्सेस नहीं था, क्योंकि सिस्टम ने इसे eth0 के माध्यम से रूट करने की कोशिश की थी और इसमें इंटरनेट एक्सेस नहीं था, जैसा कि मैंने ऊपर उल्लेख किया है।

समस्या को हल करने के लिए, मैंने eth0 इंटरफ़ेस nogatewayके /etc/dhcpcd.confलिए विकल्प का उपयोग किया । तो eth0- विशिष्ट विन्यास इस तरह दिखने लगा:

interface eth0

static ip_address=192.168.2.2/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
nogateway

इस कॉन्फ़िगरेशन को सहेजने और रिबूट करने के बाद, eth0 के माध्यम से कोई डिफ़ॉल्ट मार्ग नहीं था:

pi@raspberrypi:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.254   0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     *               255.255.255.0   U     303    0        0 wlan0
192.168.2.0     *               255.255.255.0   U     202    0        0 eth0

इंटरनेट का उपयोग दिखाई दिया, और समस्या हल हो गई।


1
यह वास्तव में मेरी स्थिति थी, और यह वास्तव में समाधान था।
PNDA

धन्यवाद, nogatewayनवीनतम डेबियन
डिस्ट्रोस

आप कल्पना नहीं कर सकते हैं कि रास्पियन पाई में इस समस्या का सामना करने में क्या परेशानी है, और आपने सिर्फ सबसे सुरुचिपूर्ण और सही समाधान दिया है। आपको धन्यवाद।
TechNyquist

7

RHEL6 / फेडोरा 22 पर निम्नलिखित का परीक्षण किया गया है।

/ Etc / sysconfig / network-script / ifcfg-eth1 में लाइन जोड़ें:

DEFROUTE=no

Eth1 को इंटरफ़ेस के नाम से बदलें जहाँ डिफ़ॉल्ट रूटिंग नहीं चाहता है।

यह IPv4 टैब के निचले भाग में "केवल नेटवर्क पर संसाधनों के लिए इस कनेक्शन का उपयोग करें" बॉक्स की जाँच करके नेटवर्क प्रबंधक GUI के माध्यम से भी किया जा सकता है।

DEFROUTE = कोई डिफ़ॉल्ट मार्ग (गंतव्य 0.0.0.0) के अलावा रूटिंग टेबल के इंटरफ़ेस को सक्षम करने पर रोकता है। अर्थात। निम्नलिखित प्रविष्टि नहीं जोड़ी जाएगी।

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.16.x.x      0.0.0.0         UG        0 0          0 eth1

1
कृपया बताएं कि यह समस्या को ठीक क्यों करता है। और जब यह काम करता है। यह डेबियन आधारित डिस्ट्रोस (मेरा मानना ​​है) पर काम करेगा, लेकिन डिस्ट्रोस पर नहीं विभिन्न इंटरफेस नामकरण (या सेवाओं की नेटवर्किंग के लिए सिस्टम का उपयोग करके डिस्ट्रो) के साथ।
grochmal

1
डेबियन आधारित प्रणालियों की तुलना में रेड हैट की तरह।
ilkkachu

4

ठीक है, तो आप जो चाहते हैं, वह मशीन के लिए है कि जब वह eth0 लाए तो डिफ़ॉल्ट गेटवे को कभी न लाए और DHCP के माध्यम से अपना पता प्राप्त करे।

यहाँ समाधान है:

फ़ाइल संपादित करें:

/etc/dhcp/dhclient-up-hooks

और इसके साथ आबाद करें:

#!/bin/sh
## Prevent DHCP server on eth0 from forcing a default route on us

case ${interface} in
  eth0)
     printf "executing ip route delete default via $new_routers\n" 
     ip route delete default via $new_routers
  ;;
     *)
  ;;
esac

इससे पहले:

[root@centos7lab dhcp]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.4.1     0.0.0.0         UG    20     0        0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

ifdown eth0 के बाद, ifup eth0:

[root@centos7lab dhcp]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

यह स्थापित होने के बाद गेटवे के साथ मार्ग को हटा देता है, जिसका अर्थ है कि यह पहले से ही डिफ़ॉल्ट गेटवे के साथ किसी अन्य मार्ग को मिटा देता है। या मुझे गलतफहमी है?
टैंगो

जब यह eth0 लाया गया, तो यह केवल DHCP क्लाइंट द्वारा बनाए गए गेटवे को हटा देगा, यह सिस्टम पर पहले से मौजूद किसी अन्य गेटवे को प्रभावित नहीं करेगा। आपके वर्णन से मुझे लगता है कि आपकी समस्या यह है कि आपको कुछ समय में दो एक साथ डिफ़ॉल्ट गेटवे मिल रहे हैं (एक eth0 पर और एक eth1 पर) और आपको eth0 के लिए एक से छुटकारा पाने की जरूरत है, इससे पहले कि यह रूटिंग टेबल पर भी डाल दिया जाए। यदि आप समस्या के समय अपना रूट-एन आउटपुट पोस्ट करते हैं तो मैं अपनी धारणा बदल सकता हूं।
रिकार्डो

1

आप dhcpclient.conf फ़ाइल को संपादित कर सकते हैं और दूरस्थ डीएचसीपी सर्वर से किसी भी डिफ़ॉल्ट मार्ग के लिए अनुरोध नहीं कर सकते।

मैंने जो भी किया है उसका एक छोटा सा नमूना और यह मेरे मामले के लिए काम कर रहा है

host-name = "random-hostname" भेजें;

अनुरोध सबनेट-मास्क, प्रसारण-पता, समय-ऑफसेट, इंटरफ़ेस-एमटीयू, आरएफसी 3442-क्लासलेस-स्टैटिक-रूट, एनटीपी-सर्वर;

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