मैं एक गेटवे के रूप में लिनक्स का उपयोग कैसे कर सकता हूं?


16

नोट: यदि क्लाइंट डिवाइस ( computer Bइस उदाहरण में) गेटवे कंप्यूटर के माध्यम से इंटरनेट प्राप्त करना चाहते हैं, तो शायद उन्हें अभी भी नेमसर्वर रिज़ॉल्यूशन को कॉन्फ़िगर करने की आवश्यकता है। यह यहां नहीं समझाया गया है (एक प्रवेश द्वार जरूरी इंटरनेट की सेवा नहीं करता है)।

मैं नेटवर्क रूटिंग के मूल सिद्धांतों को समझने की कोशिश कर रहा हूं।
इसलिए मैं अपने लैन के साथ प्रयोग कर रहा हूं (मुझे अभी के लिए इंटरनेट की आवश्यकता नहीं है, सिर्फ लैन संचार)।

मुझे पता है कि नेटवर्क कॉन्फ़िगरेशन के मामले एक जटिल बात है, लेकिन मैं सिर्फ एक कंप्यूटर (ए) कहने की कोशिश कर रहा हूं जो दूसरे के लिए एक प्रवेश द्वार के रूप में काम करता है (बी कहते हैं) (दोनों उबंटू लिनक्स चला रहे हैं)।
मुझे केवल राउटर तक पहुंचने में सक्षम होने के लिए बी की आवश्यकता है, जो केवल ए के लिए उपलब्ध है।

ये मामला है:

Router for computer A  -->  192.168.0.1
Computer A - eth0      -->  192.168.0.2
Computer A - eth1      -->  192.168.1.1

Computer B - eth0      -->  192.168.1.2

कंप्यूटर A राउटर के लिए ठीक जोड़ता है ।
कंप्यूटर ए और बी उनके बीच ठीक (पिंग, एसएसएच ... आदि) कनेक्ट करते हैं
कंप्यूटर B कंप्यूटर A के लिए राउटर तक नहीं पहुंच सकता है ।

मैं सोच रहा था कि बस बी कंप्यूटर ए को डिफॉल्ट गेटवे के रूप में जोड़ना और ए पर आईपी अग्रेषण को सक्रिय करना बी को ए के लिए राउटर तक पहुंचने में सक्षम बनाता है:

luis@ComputerB:~$ sudo route add default gw 192.168.1.1
luis@ComputerB:~$ sudo routel

target            gateway      source        proto    scope  dev   tbl
127.0.0.0         broadcast    127.0.0.1     kernel   link   lo    local
127.0.0.0 8       local        127.0.0.1     kernel   host   lo    local
127.0.0.1         local        127.0.0.1     kernel   host   lo    local
127.255.255.255   broadcast    127.0.0.1     kernel   link   lo    local
192.168.1.0       broadcast    192.168.1.2   kernel   link   eth0  local
192.168.1.2       local        192.168.1.2   kernel   host   eth0  local
192.168.1.255     broadcast    192.168.1.2   kernel   link   eth0  local
default           192.168.1.1                                eth0
169.254.0.0 16                                        link   eth0
192.168.1.0 24                 192.168.1.2   kernel   link   eth0

और कंप्यूटर ए पर (मध्यवर्ती प्रवेश द्वार):

root@ComputerA:~$ echo 1 > /proc/sys/net/ipv4/ip_forward

कंप्यूटर बी अभी भी कंप्यूटर ए को पिंग कर सकता है, लेकिन ए के लिए राउटर जवाब नहीं देता है:

luis@ComputerB:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
^C

(कोई पिंग प्रतिक्रिया नहीं)

क्या सरल तरीके से दूसरे कंप्यूटर के लिए गेटवे के रूप में कार्य करने के लिए कंप्यूटर को चलाने वाला लिनक्स बनाना सही प्रक्रिया है?

जवाबों:


21

आप लगभग वहाँ हैं जहाँ आपको यह सुनिश्चित करने की ज़रूरत है कि ट्रैफ़िक वापस बी में आता है। अभी आपने बी से बाहरी दुनिया में ट्रैफ़िक भेजा है, लेकिन A को यह नहीं पता है कि बी को ट्रैफ़िक वापस कैसे लाया जाए। आपको कुछ राज्य रखने के लिए A की आवश्यकता है इसके माध्यम से जा रहे कनेक्शन। ऐसा करने के लिए आप NAT को सक्षम करना चाहेंगे । आपके पास पहले से ही एक कदम है जो अग्रेषण की अनुमति है। फिर आपको कुछ फ़ायरवॉल नियमों का उपयोग करने की आवश्यकता है iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

यह कहता है: नेटवर्क एड्रेस ट्रांसलेशन टेबल पर, जब हमने आउटपुट eth0 (बाहरी) पर एक पैकेट के रूटिंग का पता लगाया है, तो रिटर्न एड्रेस की जानकारी को अपने स्वयं के साथ बदलें ताकि रिटर्न पैकेट हमारे पास आए। यह भी याद रखें कि हमने ऐसा किया था (एक लुकअप टेबल की तरह जो इस कनेक्शन को याद रखता है)।

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

पैकेट जो eth1 (आंतरिक इंटरफ़ेस) से बाहर जाने के लिए eth0 (बाहरी इंटरफ़ेस) से आने की अनुमति दें।

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

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


एक संक्षिप्त विवरण, वास्तव में। क्या कंप्यूटर A पर सभी कोड ब्लॉक निष्पादित होने चाहिए?
सॉपलाजो डे एरियेरेज़

@SopalajodeArrierez हाँ ये सभी "गेटवे" कंप्यूटर पर निष्पादित होते हैं। सिस्टम बी को राउटिंग के बारे में कुछ भी जानने की ज़रूरत नहीं है अगर वह किसी अन्य मशीन तक पहुंचना चाहता है, तो वह पैकेट बी को भेज देता है (यह डिफ़ॉल्ट जीडब्ल्यू है)।
user1794469

Utilite Pro पर डेस्कटॉप और Ubuntu v12 पर उबंटू v14 (CompuLabs से एक एम्बेडेड इविक्शन) पर काम कर रहा है। प्रत्येक पंक्ति वास्तव में क्या करती है, इस पर विस्तार करने के लिए आपका बहुत-बहुत धन्यवाद। मैंने कई लंबे-लंबे-लंबे स्पष्टीकरणों पर शोध किया और पाया है जो काम नहीं कर रहे थे। मुझे उम्मीद है कि यह प्रश्न-उत्तर धागा भविष्य में दूसरों के लिए उपयोगी हो सकता है।
सुपालाजो डे एरियेरेज़

@ user1794469 यह वही है जब गेटवे इंटरफ़ेस आभासी है, अर्थात एक टैप इंटरफ़ेस? क्या आप यहाँ देख सकते हैं ?
राम

1

गेटवे के रूप में काम करने वाले दो लिनक्स कंप्यूटरों के बीच रुटिंग का काम सही तरीके से करने के लिए, कई चीजें हैं जो जगह में होनी चाहिए:

  • दोनों गेटवे को एक दूसरे से भौतिक लिंक की आवश्यकता होती है (या वर्चुअल यदि आप वर्चुअल मशीन लिंक कर रहे हैं)।
  • राउटर पर दोनों इंटरफेस में रूट जोड़े जाने चाहिए।

    route add -net 192.168.0.0/24 gw 192.168.0.1
    route add -net 192.168.1.0/24 gw 192.168.1.1
    
  • दोनों गेटवे पर दूरस्थ नेटवर्क के लिए एक स्थानीय गेटवे निर्दिष्ट किया जाना चाहिए। यह स्थानीय नेटवर्क पर कंप्यूटर को यह जानने की अनुमति देता है कि रिमोट नेटवर्क के लिए पैकेट कहां भेजा जाए। गेटवे कंप्यूटर का आईपी पता होना चाहिए जो रिमोट नेटवर्क पर पैकेट भेजेगा।

  • नेटवर्क के बीच ट्रैफिक भेजने के इच्छुक कंप्यूटर को इस बात से भी अवगत कराना चाहिए कि स्थानीय गेटवे रिमोट नेटवर्क से ट्रैफिक को क्या संभाल रहा है। यह आमतौर पर डायनामिक होस्ट कंट्रोल प्रोटोकॉल (डीएचसीपी) के माध्यम से किया जाता है, हालांकि यदि आप इंटरनेट के लिए एक अलग प्रवेश द्वार का उपयोग करने का इरादा रखते हैं, तो आपको इंटरनेट और अन्य नेटवर्क (जैसे इंटरनेट गेटवे) के माध्यम से दोनों कंप्यूटरों तक पहुंचने की आवश्यकता होगी। डीएचसीपी और एक मार्ग के माध्यम से दूसरे नेटवर्क का प्रवेश द्वार)।
  • आईपी ​​अग्रेषण दोनों गेटवे के लिए सक्रिय होना चाहिए।
  • नैट को गेटवे के बीच में काम करने की अनुमति देने के लिए आईपी मैसेजिंग सक्षम होना चाहिए।

    modprobe iptable_nat
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -A FORWARD -i eth1 -j ACCEPT
    

    आपको स्रोत और गंतव्य निर्दिष्ट करने की आवश्यकता हो सकती है क्योंकि आप एक ही इंटरफ़ेस का उपयोग कर रहे हैं।

    iptables -t nat -A POSTROUTING -i eth0 -s 192.168.0.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
    

    और दूसरा प्रवेश द्वार:

    iptables -t nat -A POSTROUTING -i eth1 -s 192.168.1.0/24 ! -d 192.168.0.0/24 -j MASQUERADE   
    

    प्रत्येक गेटवे के लिए, स्थानीय नेटवर्क ट्रैफ़िक को इस तरह उपयुक्त इंटरफ़ेस पर स्वीकार किया जाना चाहिए:

    iptables -A FORWARD -i eth0 -s 192.168.0.0/24 -j ACCEPT
    

    या

    iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -j ACCEPT
    

रहे हैं कई लिंक और समान सवालों समस्याओं को आप कर रहे हैं हल करने के लिए संदर्भित किया जा करने में सक्षम।

इस विशेष मामले में जो गलत प्रतीत होता है वह यह है कि दोनों कंप्यूटरों पर रूट और गेटवे सेटअप पूर्ण नहीं है और नेटवर्क एड्रेस ट्रांसलेशन (NAT) को iptables का उपयोग करने में सक्षम नहीं किया गया है, जिससे गेटवे अन्य सबनेट पर कंप्यूटर से अनुरोध ले जाने की अनुमति देता है। उनकी जगह पर।

इंटरनेट कनेक्शन सेट करते समय यह करना भी महत्वपूर्ण है क्योंकि आप कनेक्शन के एक छोर के लिए ज़िम्मेदार हैं (जैसे कि PPPoE कनेक्शन के लिए गेटवे के रूप में लिनक्स कंप्यूटर का उपयोग करना)।

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