लिनक्स: क्या किसी प्रोग्राम को पसंद के आईपी-एड्रेस पर बाँधने का कोई आसान तरीका है?


11

FreeBSD 4.9 में केवल एक ही कमांड के साथ इसे पूरा करना बहुत आसान था

jail [-u username]  path hostname ip-number command

यदि पथ /आप सामान्य रूप से केवल एक ही कार्यक्रम चला रहे थे, लेकिन स्रोत के रूप में केवल दिए गए IP- पते का उपयोग करने के लिए इसका सभी नेटवर्क संचार प्रतिबंधित था। कभी-कभी बहुत काम आता है।

अब लिनक्स में एलएक्ससी है, जो फ्रीबीएसडी jail(या सोलारिस जोन) के समान दिखता है - क्या आप किसी प्रोग्राम को निष्पादित करने के समान तरीके के बारे में सोच सकते हैं?


आप किस कार्यक्रम के साथ ऐसा करने की कोशिश कर रहे हैं? कई कार्यक्रम काफी विन्यास योग्य हैं कि उन्हें बताया जा सकता है कि किस आईपी को बांधना है।
वॉरेन यंग

@WarrenYoung, धन्यवाद KO, लेकिन "कई"! = "सभी"
poige

एक विशिष्ट आईपी का उपयोग करने के लिए एक निष्पादन योग्य "जेलिंग" के लिए एक अच्छा उपयोग मामला लैन पार्टी पर एक मशीन पर कई गेम सर्वर चला रहा है। ईजी वाल्व गेम केवल 27015-27020 पोर्ट पर प्रसारित हो रहे हैं, इसलिए प्रति आईपी में आपके पास केवल 6 सर्वर हो सकते हैं। तो आप वर्चुअल आईपी को एनआईसी पर जोड़ते हैं लेकिन फिर आपको गेम सर्वर की कमांड लाइन पर "+ आईपी <पता>" निर्दिष्ट करना होगा जो ग्राहकों को अपनी उपस्थिति प्रसारित करना बंद कर देता है = लैन ब्राउज़र में कोई सर्वर दिखाई नहीं देता है। तो "+ आईपी" काम नहीं करेगा। इसलिए हमें प्रत्येक सर्वर को ऐसे वातावरण में जेल करने की आवश्यकता है जहां वह केवल 1 आईपी पता पा सके। परिणाम: # सर्वर + ग्राहकों की कोई सीमा सभी सर्वरों को नहीं देखती है।
टिम्मोस

जवाबों:


12

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

सबसे पहले, मैं नेटवर्क नेमस्पेस बनाता हूं:

ip netns add limitednet

Namespaces में डिफ़ॉल्ट रूप से एक लूपबैक इंटरफ़ेस होता है, इसलिए अगली बार मुझे इसे ऊपर लाने की आवश्यकता है:

sudo ip netns exec limitednet ip link set lo up

अब, मैं एक प्रोग्राम का उपयोग करके चला सकता हूं ip netns exec limitednetऔर यह केवल लूपबैक इंटरफ़ेस देख पाएगा:

sudo ip netns exec limitednet ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

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

ip link set DEVICE_NAME netns NAMESPACE

मुझे यह जानने के लिए थोड़ा और प्रयोग करना होगा कि किसी आईपी पते को किसी नामस्थान में कैसे जोड़ा जाए, जहां एक इंटरफेस में एक से अधिक आईपी पते हो सकते हैं

नामस्थान पर LWN लेख भी उपयोगी है।


लेकिन यह उल्लेख के लायक है कि इसे और अधिक तैयारियों की आवश्यकता होगी क्योंकि नेटवर्क नेमस्पेस की अपनी रूटिंग टेबल और इतने पर है। अगर कोई सरल तरीके से नकल करने के लिए आता है jail, तो मैं इसका उपयोग करने वाला हूं। ;)
गरीब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.