आप प्रति उपयोगकर्ता एक आईपी कैसे प्रदान कर सकते हैं?


11

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

केवल एक स्टीम क्लाइंट एक बार में घर में स्ट्रीमिंग सक्षम कर सकता है। समान पोर्ट और IP पते का उपयोग करने के कारण यह सबसे अधिक संभावना है। मैं प्रत्येक उपयोगकर्ता को अपना स्वयं का आईपी पता कैसे दे सकता हूं?

स्ट्रीमिंग केवल होम नेटवर्क के भीतर से की जाएगी। मशीन में पहले से ही एकल इंटरफ़ेस पर 3 आईपी हैं।

जवाबों:


21

आप linux network namepaces का उपयोग करके विभिन्न नेटवर्क कॉन्फ़िगरेशन को एक प्रक्रिया में असाइन कर सकते हैं । सिद्धांत रूप में प्रत्येक उपयोगकर्ता को अपने अलग नेटवर्क नेमस्पेस में सेट करने के लिए PAM * को कॉन्फ़िगर करना संभव है , लेकिन इसके बजाय अपने नामस्थान में विचाराधीन एप्लिकेशन लॉन्च करना अधिक सरल है।

नेटवर्क के लिए नामस्थान को जोड़ने के लिए एक सामान्य सेटअप लिनक्स ब्रिज इंटरफेस बनाने का वर्णन कर सकता है। थोड़ा सरल सेटअप ipvlan (कर्नेल संस्करण 3.19 और इसके बाद के संस्करण में शामिल) या macvlan डिवाइस (वायरलेस के लिए आप macvlan का उपयोग नहीं कर सकते हैं ) का उपयोग करके संग्रहीत किया जा सकता है । लिनक्स कर्नेल प्रलेखन में नेटवर्क नेमस्पेस में ipvlan स्थापित करने के लिए एक विस्तृत उदाहरण है

प्रलेखन में उदाहरण के बाद:

  1. एक नेटवर्क नामस्थान बनाएँ ns0

    ip netns add ns0
    
  2. Eth0 पर ipvlan दास बनाएँ (मास्टर डिवाइस)

    ip link add link eth0 ipvl0 type ipvlan mode l2
    
  3. दासों को नेटवर्क नामस्थान ns0 में असाइन करें

    ip link set dev ipvl0 netns ns0
    
  4. नेटवर्क नाम स्थान ns0 में दास डिवाइस को कॉन्फ़िगर करें

    ip netns exec ns0 ip link set dev ipvl0 up
    ip netns exec ns0 ip link set dev lo up
    ip netns exec ns0 ip -4 addr add 127.0.0.1 dev lo
    ip netns exec ns0 ip -4 addr add $IPADDR dev ipvl0
    ip netns exec ns0 ip -4 route add default via $ROUTER dev ipvl0
    

    मेजबान और रूटर पते प्रदान $IPADDRऔर $ROUTER

  5. का उपयोग करके नेटवर्क नेमस्पेस में अपना एप्लिकेशन चलाएं ip exec

    ip netns exec ns0 <command>
    

    कमांड को विभिन्न उपयोगकर्ता के रूप में चलाने के लिए, सामान्य रूप से उपयोग करें su <user> -c -- <command>


* संपादित करें: सिद्धांत से अभ्यास करने के लिए: मैंने प्रति उपयोगकर्ता नेटवर्क नाम स्थान बदलने के तरीके को प्रदर्शित करने के लिए एक सरल PAM मॉड्यूल लिखा है। आपको ip netnsऊपर की तरह एक नेटवर्क नेमस्पेस कॉन्फ़िगर करने की आवश्यकता है और विशिष्ट उपयोगकर्ताओं को एक विशिष्ट नाम स्थान पर मैप करना है। बाद में सभी उपयोगकर्ता प्रक्रियाएँ डिफ़ॉल्ट के बजाय उनके कॉन्फ़िगर किए गए नामस्थान में होंगी। कोड को github पर होस्ट किया गया है । अपने जोखिम पर प्रयोग करें।


अपने दूसरे आदेश मेरे लिए काम नहीं करता है पर ubuntu 14.04मैं सिर्फ मिलती है: Garbage instead of arguments "mode ...". Try "ip link help"
सिम

1
मैंने कर्नेल संस्करण के साथ उत्तर को अपडेट किया है, Ubuntu 14.04 हाल के पर्याप्त कर्नेल संस्करण को शामिल नहीं करता है। जब आप वायरलेस का उपयोग कर रहे होते हैं, तो मैं आपको अलग-अलग आईपी पते कॉन्फ़िगर करने की अनुमति नहीं देता। यदि आप ईथरनेट का उपयोग कर रहे हैं, तो आप कमांड 3 में मैकलेवन के साथ आईपीएलएन को बदल सकते हैं और बाकी के उदाहरण का पालन कर सकते हैं।
sebasth

आप कमांड 2 में मतलब है? चरों $IPADDRऔर $ROUTERमेरे द्वारा प्रदान किया जाना है या जो पहले से ही सेट हैं?
सिम

1
वास्तव में आज्ञा । आपको अपना नेटवर्क कॉन्फ़िगरेशन प्रदान करना होगा।
सेबस्ट

2
@ अच्छा पकड़, यह नहीं था। उदाहरण के अन्य भागों की तरह निष्पादन कीवर्ड के बाद उत्तर को सही करने की आवश्यकता है।
सीबस्थ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.