किसी विशिष्ट नेटवर्क इंटरफ़ेस का उपयोग करने के लिए एप्लिकेशन को बाध्य करें


48

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

जवाबों:


22

ट्रिक रूटिंग टेबल को समायोजित कर रही है (जो गंतव्य पोर्ट या स्रोत ऐप पर निर्भर नहीं करता है, लेकिन गंतव्य होस्ट पर निर्भर करता है)। यह मानता है कि आप लिनक्स या OS X पर हैं (जैसा कि टैग दिखाते हैं)।

मान लें कि आपका डिफ़ॉल्ट गेटवे 1.2.3.4 है और आपके पास एक वीपीएन है जो 6.7.8.9 पर यातायात को रूट कर सकता है। यदि आप अपने मेल ट्रैफ़िक को 6.7.8.9 से अधिक रूट करना चाहते हैं, तो बस करें

sudo route add mail.myserver.com 6.7.8.9

मार्ग के कुछ संस्करणों को पते और अगले हॉप के बीच "gw" कीवर्ड की आवश्यकता हो सकती है। यदि आप उस अगले हॉप पर एक पूरा नेट मार्ग बनाना चाहते हैं, तो बस गंतव्य के लिए CIDR नोटेशन में एक नेटमैस्क जोड़ें, जैसे

sudo route add 192.168.0.0/24 6.7.8.9

यदि आप मौजूदा रूटिंग टेबल देखना चाहते हैं, तो उपयोग करें

netstat -nrl
or
ip route list

यदि आप विंडोज पर हैं, तो "नेट रूट" आपको वहां सबसे अधिक मिलेगा, लेकिन वाक्यविन्यास बिल्कुल अलग है।


17
यह वास्तव में एक जवाब नहीं है? सवाल यह है कि किसी ऐप को वेबसाइट के लिए मजबूर न किया जाए। उदाहरण के लिए, जो मैं चाहता था कि सफारी वीपीएन (ppp0) से आगे बढ़े, लेकिन फ़ायरफ़ॉक्स को en0 से अधिक जाने की परवाह किए बिना कि वे किस साइट पर पहुँच रहे हैं? यही तो प्रश्न है।
gman

2
@gman: इस उत्तर के बारे में कुछ भी वेबसाइटों के लिए विशिष्ट नहीं है।
मोनिका

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

मैं इसे कम करने नहीं जा रहा हूं (यह किसी अन्य प्रश्न के लिए अच्छी सलाह है), लेकिन मैं निश्चित रूप से या तो इसे नहीं बढ़ाऊंगा (@gman और @ bennett-mcelwee द्वारा बताए गए कारणों के लिए)।
12

प्रति व्यक्ति, यह इस सवाल का जवाब नहीं देता है कि किसी विशिष्ट एनआईसी को किसी विशिष्ट एप्लिकेशन को कैसे लॉक किया जाए।
कैचडेव

6

यदि आप एक ही समय में दो एनआईसी सक्रिय होना चाहते हैं, तो आप नेटवर्क उपकरणों की सूची के नीचे गियर का चयन करके सेवा क्रम को सिस्टम वरीयता / नेटवर्क में सेट कर सकते हैं। अपने इच्छित ऑर्डर को खींचें और छोड़ें।

उदाहरण के लिए, मेरे पास ईथर और वाईफाई हमेशा मेरे एमबीपी पर सक्रिय हैं, जिसमें वाई-फाई के ऊपर ईथर सेट है। चूंकि मैं काम में ईथर का उपयोग करता हूं, इसलिए मैंने उस एनआईसी को प्रॉक्सी सेटिंग्स और मेरे वाई-फाई के बिना सेट किया। जब मैं घर जाता हूं, तो किसी भी सेटिंग को समायोजित करने की आवश्यकता नहीं है। आप इसका उपयोग टर्मिनल से भी कर सकते हैं /usr/bin/networksetup -ordernetworkservices

लेकिन सक्रिय और गैर-डिफ़ॉल्ट दोनों तरह के ऐप का उपयोग करने के लिए, मैंने @ Andor की सलाह पर थोड़ा आसान स्पिन के साथ भाग्य प्राप्त किया है। अगर मैं अपने मामले में ईथर का उपयोग नहीं करने के लिए एक ऐप चाहता हूं, तो मैं अपने वाई-फाई एडाप्टर के आईपी पते के लिए ऐप के लिए प्रॉक्सी सेटिंग्स सेट करता हूं। यह उस इंटरफ़ेस का उपयोग करेगा बाहर निकलने के लिए और इस तरह कंपनी प्रॉक्सी और मॉनिटरिंग सर्वर को बायपास करेगी। इसलिए यदि ईथर के पास 1.2.3.4 का पता है और सेवा क्रम में वाई-फाई (5.6.7.8) से पहले आता है, तो मेरे पास मेरा ऐप 5.6.7.8 है।


5

मैक के लिए, एक सरल समाधान है जो मैं उपयोग करता हूं। यह वास्तव में @ एंडोर के समाधान का कार्यान्वयन है। एक प्रॉक्सी स्थापित करें और इसका उपयोग करने के लिए अपने एप्लिकेशन कॉन्फ़िगर करें:

  1. मैंने स्क्वीडमैन स्थापित किया

  2. कॉन्फ़िगरेशन में निम्न पंक्ति जोड़ें। आपको अपने निजी ऐप्स के लिए उपयोग किए जाने वाले IP को निर्दिष्ट करने की आवश्यकता है x.x.x.x:

    tcp_outgoing_address x.x.x.x
    
  3. स्क्वीडमैन शुरू करें और इसे प्रॉक्सी के रूप में उपयोग करने के लिए अपने ऐप को कॉन्फ़िगर करें।

मैंने इस जानकारी को विभिन्न पृष्ठों में खोजने के लिए एक घंटा बिताया, इसलिए मुझे आशा है कि यह दूसरों को इसे तेज़ी से करने में मदद करेगा।


विंडोज पर एक ही काम करना चाहिए और केवल सुरुचिपूर्ण समाधान प्रतीत होता है!
TJJ

1

आपको शायद निम्न-स्तर के IO नियंत्रण फ़ंक्शन (ioctl) का उपयोग करने की आवश्यकता होगी। विशेष रूप से:

ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address

तथा

ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address

देखें इस आदमी पेज अधिक जानकारी के लिए।


1

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

कुछ सर्वर या नेटवर्क से संबंधित यूनिक्स और लिनक्स उपकरण में आमतौर पर "इंटरफ़ेस" नामक एक ध्वज होता है, जहां आप बता सकते हैं कि आप किस इंटरफ़ेस का उपयोग करना चाहते हैं, जैसे tcpdump में, उदाहरण के लिए:

tcpdump -i eth0

लेकिन जैसा कि मुझे लगता है कि आप रूटिंग स्टैण्डर्ड डेस्कटॉप सॉफ्टवेयर के बारे में पूछ रहे हैं, जो थोड़ा और मुश्किल हो जाता है ...

मैं आपको वैसे भी इसके लिए एक चाल बता सकता हूं ... उस समस्याओं से निपटने के लिए मेरा सामान्य निर्धारण एक प्रॉक्सी का उपयोग कर रहा है और केवल एक प्रवेश द्वार है। इस समय इंटरनेट का उपयोग करने वाले लगभग किसी भी सॉफ़्टवेयर में प्रॉक्सी को कॉन्फ़िगर करने के लिए विकल्प हैं, इसलिए आप इसे इस तरीके से कर सकते हैं:

1.- "असुरक्षित" (मेरा मतलब है, जहां नीतियों को लागू नहीं किया जाता है) पर एक प्रॉक्सी स्थापित करना आपके नेटवर्क का हिस्सा है, और उस प्रॉक्सी को आपके सॉफ़्टवेयर को इंगित करता है।

2.- SSH सर्वर को किसी अन्य "असुरक्षित" स्थान पर सेट करना, कहना, अपने घर, या आपके पास इंटरनेट पर समर्पित सर्वर, और एक विशेष सुविधा के माध्यम से एक कनेक्शन खोलना जो SSH के पास एक मोजे प्रॉक्सी सर्वर बनाता है:

ssh -D 1234 user@host

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

कॉर्पोरेट इंटरनेट नीतियों से बचने के लिए अच्छी तरकीबें: पी

: डी


1

मैं अपने व्यावसायिक अनुप्रयोगों को एक वर्चुअल मशीन के अंदर चलाता हूं। मैंने वाईफाई को अपने पसंदीदा कनेक्शन के रूप में सेट करने के लिए ऊपर दिए गए निर्देशों का उपयोग किया, फिर ईथरनेट पोर्ट को "ब्रिड्ड" एडेप्टर के रूप में उपयोग करने के लिए वर्चुअल मशीन को कॉन्फ़िगर किया।

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

मेरा मानना ​​है कि ऐसी उपयोगिताएँ मौजूद हैं जिनका उपयोग किसी विशेष ईथरनेट पोर्ट पर एप्लिकेशन के बंधन को बाध्य करने के लिए किया जा सकता है, लेकिन मैकओएस पर इस पर शोध नहीं किया है।

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


0

भले ही यह सवाल OSX के लिए है, मैं यहाँ निम्नलिखित छोड़ दूँगा जो विंडोज 7 64-बिट पर काम करता है। यह प्रश्न शीर्ष परिणामों में से एक के रूप में सामने आया, जब किसी विशेष एडॉप्टर के माध्यम से जाने के लिए बल अनुप्रयोगों के लिए googling , इसलिए निम्नलिखित दूसरों के लिए उपयोगी हो सकते हैं।

http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/

उपरोक्त गाइड ForceBindIp नामक एक उपयोगिता का उपयोग करता है, जिस पर काम करने के लिए विज्ञापन दिया जाता है, Windows NT/2000/XP/2003 लेकिन मेरे पास इसे विंडोज 7 - 64 बिट पर काम करने के लिए कोई समस्या नहीं थी।

साथ ही, Windows 7 पर ForceBindIP के साथ समस्याएँ (x64)

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