आप linux network namepaces का उपयोग करके विभिन्न नेटवर्क कॉन्फ़िगरेशन को एक प्रक्रिया में असाइन कर सकते हैं । सिद्धांत रूप में प्रत्येक उपयोगकर्ता को अपने अलग नेटवर्क नेमस्पेस में सेट करने के लिए PAM * को कॉन्फ़िगर करना संभव है , लेकिन इसके बजाय अपने नामस्थान में विचाराधीन एप्लिकेशन लॉन्च करना अधिक सरल है।
नेटवर्क के लिए नामस्थान को जोड़ने के लिए एक सामान्य सेटअप लिनक्स ब्रिज इंटरफेस बनाने का वर्णन कर सकता है। थोड़ा सरल सेटअप ipvlan (कर्नेल संस्करण 3.19 और इसके बाद के संस्करण में शामिल) या macvlan डिवाइस (वायरलेस के लिए आप macvlan का उपयोग नहीं कर सकते हैं ) का उपयोग करके संग्रहीत किया जा सकता है । लिनक्स कर्नेल प्रलेखन में नेटवर्क नेमस्पेस में ipvlan स्थापित करने के लिए एक विस्तृत उदाहरण है ।
प्रलेखन में उदाहरण के बाद:
एक नेटवर्क नामस्थान बनाएँ ns0
ip netns add ns0
Eth0 पर ipvlan दास बनाएँ (मास्टर डिवाइस)
ip link add link eth0 ipvl0 type ipvlan mode l2
दासों को नेटवर्क नामस्थान ns0 में असाइन करें
ip link set dev ipvl0 netns ns0
नेटवर्क नाम स्थान 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
।
का उपयोग करके नेटवर्क नेमस्पेस में अपना एप्लिकेशन चलाएं 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"
।