मुझे नहीं लगता कि आपके प्रश्न का कोई निश्चित सही उत्तर है। इसके बजाय तरीकों का एक बड़ा बंडल है कि आप जो चाहते हैं उसके करीब कैसे पहुंचें। इसलिए मैं कुछ संकेत प्रदान करूंगा कि इसे कैसे पूरा किया जाए।
यदि किसी मशीन में 2 से अधिक इंटरफेस हैं ( lo
एक के रूप में गिना जाता है) तो आपको सही इंटरफ़ेस को आसानी से ऑटोडेक्ट करने में समस्या होगी। यहाँ कुछ व्यंजनों पर यह कैसे करना है।
उदाहरण के लिए, समस्या यह है कि यदि होस्ट NAT फ़ायरवॉल के पीछे DMZ में हैं जो सार्वजनिक IP को कुछ निजी IP में बदल देता है और अनुरोधों को आगे बढ़ाता है। आपकी मशीन में 10 इंटरफेस हो सकते हैं, लेकिन केवल एक ही जनता से मेल खाता है।
यहां तक कि ऑटोडेटेक्शन उस स्थिति में काम नहीं करता है जब आप डबल-एनएटी पर होते हैं, जहां आपका फ़ायरवॉल स्रोत-आईपी को पूरी तरह से अलग चीज़ में बदल देता है। तो आप यह भी सुनिश्चित नहीं कर सकते हैं, कि डिफ़ॉल्ट मार्ग सार्वजनिक इंटरफ़ेस के साथ आपके इंटरफ़ेस की ओर जाता है।
डिफ़ॉल्ट मार्ग के माध्यम से इसका पता लगाएं
यह चीजों को स्वतःप्रेरित करने का मेरा अनुशंसित तरीका है
ऐसा कुछ ip r get 1.1.1.1
आमतौर पर आपको इंटरफ़ेस बताता है जिसमें डिफ़ॉल्ट मार्ग है।
यदि आप अपनी पसंदीदा स्क्रिप्टिंग / प्रोग्रामिंग भाषा में इसे फिर से बनाना चाहते हैं, strace ip r get 1.1.1.1
तो पीले ईंट रोड का उपयोग करें और उसका पालन करें।
इसके साथ सेट करें /etc/hosts
यदि आप नियंत्रण में रहना चाहते हैं तो यह मेरी सिफारिश है
आप /etc/hosts
जैसे में एक प्रविष्टि बना सकते हैं
80.190.1.3 publicinterfaceip
फिर आप publicinterfaceip
अपने सार्वजनिक इंटरफ़ेस को संदर्भित करने के लिए इस उपनाम का उपयोग कर सकते हैं ।
अफसोस की बात haproxy
है कि इस चाल को IPv6 के साथ नहीं किया गया
पर्यावरण का उपयोग करें
/etc/hosts
यदि आप नहीं हैं तो यह एक अच्छा समाधान हैroot
के रूप में ही /etc/hosts
। लेकिन इसके लिए पर्यावरण का उपयोग करें। आप इसके लिए प्रयास कर सकते हैं /etc/profile
या कर सकते हैं ~/.profile
।
इसलिए यदि आपके कार्यक्रम को एक चर की जरूरत है MYPUBLICIP
तो आप कोड को शामिल कर सकते हैं (यह सी है, इसे सी + + बनाने के लिए स्वतंत्र महसूस करें):
#define MYPUBLICIPENVVAR "MYPUBLICIP"
const char *mypublicip = getenv(MYPUBLICIPENVVAR);
if (!mypublicip) { fprintf(stderr, "please set environment variable %s\n", MYPUBLICIPENVVAR); exit(3); }
तो आप /path/to/your/script
इस तरह से अपनी स्क्रिप्ट / प्रोग्राम को कॉल कर सकते हैं
MYPUBLICIP=80.190.1.3 /path/to/your/script
यह भी काम करता है crontab
।
सभी इंटरफेस की गणना करें और जिन्हें आप नहीं चाहते हैं उन्हें खत्म करें
यदि आप उपयोग नहीं कर सकते तो हताश रास्ता ip
यदि आप जानते हैं कि आप क्या नहीं चाहते हैं, तो आप सभी इंटरफेस की गणना कर सकते हैं और सभी झूठे लोगों को अनदेखा कर सकते हैं।
यहां पहले से ही इस दृष्टिकोण के लिए एक उत्तर https://stackoverflow.com/a/265978/490291 लगता है ।
इसे DLNA की तरह करें
शराबी का तरीका जो खुद को शराब में डुबोने की कोशिश करता है
आप अपने नेटवर्क पर सभी UPnP गेटवे की गणना करने का प्रयास कर सकते हैं और इस तरह से किसी "बाहरी" चीज के लिए एक उचित मार्ग का पता लगा सकते हैं। यह ऐसे मार्ग पर भी हो सकता है जहाँ आपका डिफ़ॉल्ट मार्ग इंगित नहीं करता है।
इस पर अधिक जानकारी के लिए शायद https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol देखें
इससे आपको एक अच्छा आभास मिलता है कि आपका वास्तविक सार्वजनिक इंटरफ़ेस क्या है, भले ही आपका डिफ़ॉल्ट मार्ग कहीं और इंगित करता हो।
और भी हैं
जहां पहाड़ नबी से मिलता है
IPv6 राउटर आपको सही IPv6 उपसर्ग देने के लिए खुद का विज्ञापन करते हैं। उपसर्ग को देखने से आपको संकेत मिलता है कि क्या यह कुछ आंतरिक आईपी या एक वैश्विक है।
आप कुछ उपयुक्त गेटवे का पता लगाने के लिए IGMP या IBGP फ्रेम के लिए सुन सकते हैं।
कम से कम 2 ^ 32 आईपी पते हैं। इसलिए इन सभी को पिंग करने के लिए एक LAN पर देर नहीं लगती है। यह आपको एक सांख्यिकीय संकेत देता है, जहां इंटरनेट का अधिकांश हिस्सा आपके दृष्टिकोण से स्थित है। हालाँकि आपको प्रसिद्ध https://de.wikipedia.org/wiki/SQL_Slammer की तुलना में थोड़ा अधिक समझदार होना चाहिए
ICMP और यहां तक कि ARP नेटवर्क साइडबैंड जानकारी के लिए अच्छे स्रोत हैं। यह आपकी मदद कर सकता है।
आप अपने सभी नेटवर्क इंफ्रास्ट्रक्चर उपकरणों से संपर्क करने के लिए ईथरनेट ब्रॉडकास्ट एड्रेस का उपयोग कर सकते हैं जो अक्सर डीएचसीपी (यहां तक कि डीएचसीपीवी 6) और इसी तरह से मदद करेगा।
यह अतिरिक्त सूची संभवतः अंतहीन और हमेशा अपूर्ण है, क्योंकि नेटवर्क उपकरणों का प्रत्येक निर्माता अपने स्वयं के उपकरणों को ऑटो-डिटेक्ट करने के तरीके पर नए सुरक्षा छेद का आविष्कार कर रहा है। जो अक्सर कुछ सार्वजनिक इंटरफ़ेस का पता लगाने में बहुत मदद करता है जहां कोई एक नहीं होता है।
'निफ ने कहा। बाहर।