यदि मैं एक राउटर के पीछे हूं तो मुझे कमांड लाइन से अपना सार्वजनिक आईपी पता कैसे मिल सकता है?


37

क्या कमांड लाइन पर मेरा सार्वजनिक (WAN) IP पता प्राप्त करने का कोई तरीका है? मैं एक राउटर (LAN नेटवर्क) के पीछे हूं, जिसमें मेरे ISP द्वारा असाइन किया गया डायनामिक IP एड्रेस है।

मैंने बाहरी वेबसेवा (जैसे ifconfig.me) का उपयोग करके समाधान देखा है , लेकिन मैं जानना चाहता हूं कि क्या मैं इसे बाहरी सेवा के बिना कर सकता हूं।


क्या आप अपने नेटवर्क सेटअप के रूप में अधिक विवरण जोड़ सकते हैं? यदि आप एक रूटर / स्विच जो पीछे हैं करता है इंटरनेट की पहुंच है और आप वान आईपी पते कि रूटर / स्विच अपने ISP से हो रही है पता लगाने के लिए कोशिश कर रहे हैं?
SLM

@ एसएलएम मैं एक राउटर और चींटी के पीछे हूँ जो आईएसपी द्वारा राउटर को सौंपे गए आईपी का पता लगाने के लिए है
user61954

तीसरा तरीका देखें जो मैंने अभी अपने उत्तर में जोड़ा है। आप यह देखना चाहते हैं कि आपके राउटर से WAN IP प्राप्त करने का कोई तरीका है या नहीं। राउटर क्या / मॉडल है?
slm

आपको किसी प्रकार की बाहरी सेवा से क्वेरी करनी होगी। सामान्यतया, एक कंप्यूटर को इस बात का कोई पता नहीं होता है कि अन्य कंप्यूटर किस आईपी पते से आते हैं।
डेविड श्वार्ट्ज

जवाबों:


27

आपके सिस्टम मान लिया जाये कि 2 ईथरनेट उपकरणों है, eth0और eth1और eth0अपने लैन से जुड़ा है, कहते हैं कि आईपी 192.168.1.x और अपने eth1डिवाइस अपने आईएसपी (वैन) आप निम्नलिखित का उपयोग करना चाहते करने जा रहे हैं से जुड़ा है ifconfigआदेश के लिए आपके आईपी प्राप्त करने के लिए वान पक्ष।

नोट: 1 2 तरीके मान लेते हैं कि आप उन्हें कंप्यूटर के खिलाफ चला रहे हैं जिसमें 2 ईथरनेट डिवाइस हैं और उनमें से एक आपके ISP (केबल मॉडेम और / या DSL मॉडेम) से जुड़ा है। इस परिदृश्य में ईथरनेट डिवाइस (eth1) को आपके IP पते के साथ इंटरनेट (WAN IP) पर कॉन्फ़िगर किया जाएगा।

पहला तरीका

                          +------------------------+
  +--------+    WAN IP    |   Computer that wants  |  LAN IP
  |Internet|--------------|     to know WAN IP     |------------
  +--------+  54.234.1.33 | +------+      +------+ | 192.168.1.1
                          +-| eth1 |------| eth0 |-+
                            +------+      +------+

% ifconfig eth1 | awk '/inet / { print $2 }' | sed -e s/addr://
54.234.1.33

आप ipकमांड का उपयोग भी कर सकते हैं ।

% ip addr show eth1 | awk '/inet/ {print $2}' | sed 's#/.*##'
54.234.1.33

दूसरा तरीका

यदि आपको इसे किसी ऐसे सिस्टम से ढूंढना है जो केवल LAN पर बैठता है तो आप पासफ़्रेज़-लेस ssh कुंजी सेट कर सकते हैं और इसे अपने LAN मशीन पर एक खाते में जोड़ सकते हैं ताकि यह सिस्टम को WAN एक्सेस के साथ दूरस्थ रूप से एक्सेस कर सके।

                                                            +----------------+
  +--------+    WAN IP      +-------------+      LAN IP     | Computer that  |
  |Internet|----------------|remote-server|-----------------| wants to know  |
  +--------+  54.234.1.33  +----+-----+----+  192.168.1.x  +----+ WAN IP     |
                           |eth1|     |eth0|               |eth0|------------+
                           +----+     +----+               +----+

% ssh ruser1@remote-server "ifconfig eth1 | awk '/inet / { print \$2 }' | sed -e s/addr://"
54.234.1.33

तीसरा तरीका

यदि आप उस बॉक्स में ssh करने में असमर्थ हैं जिसमें WAN पहुंच है और आप एक होम राउटर / स्विच का उपयोग कर रहे हैं जैसे कि Linksys या Netgear बॉक्स। आप HTTP स्थिति पृष्ठ के माध्यम से उस डिवाइस से आईपी प्राप्त करने में सक्षम हो सकते हैं। मैंने अतीत में भी ऐसा किया है, इस whatismyip.com फोरम पोस्ट में वर्णित कुछ समान है ।

                                                               192.168.1.2
                                                            +----------------+
  +--------+    WAN IP      +-------------+      LAN IP     | Computer that  |
  |Internet|----------------|router/switch|-----------------| wants to know  |
  +--------+  54.234.1.33   +-------------+   192.168.1.x  +----+ WAN IP     |
                              192.168.1.1                  |eth0|------------+
                                                           +----+

# something like this....

% wget -q -O - http://<username>:<password>@192.168.1.1/Status_Router.asp | grep "ipaddress" | cut -d" " -f2

नोट: यह दृष्टिकोण अत्यधिक निर्भर करता है कि आपके पास कौन सा राउटर / स्विच है, चाहे वह एक Linksys, Netgear, आदि ब्रांड हो। प्रत्येक का अपना विशिष्ट पेज होगा, जिस पर WAN IP होगा।

चौथा रास्ता

एक बाहरी इंटरनेट साइट के खिलाफ एक क्वेरी भेजना जो आपके WAN IP पते को वापस रिपोर्ट करेगी।

नोट: मुझे पता है कि मूल प्रश्न का उल्लेख है कि वे इस दृष्टिकोण के विकल्प की तलाश कर रहे थे, लेकिन मैं इसे यहां डाल रहा हूं ताकि यह उत्तर सभी आधारों को कवर करे।

                                                        +---------------+
  +-------------+   +--------+   +------+     LAN IP    | Computer that |
  |whatsmyip.com|---|Internet|---|router|---------------| wants to know |
  +-------------+   +--------+   +------+  192.168.1.x +----+ WAN IP    |
you're 54.234.1.33                                     |eth0|-----------+
                                                       +----+

# 1st server
% wget -qO - ipv4bot.whatismyipaddress.com
54.234.1.33

# 2nd server
% curl 'https://api.ipify.org?format=json'

{"ip":"54.234.1.33"}
% curl 'https://api.ipify.org?format=txt'
54.234.1.33

# 3rd server
% curl -s checkip.dyndns.org | sed 's#.*Address: \(.*\)</b.*#\1#'
54.234.1.33

अतिरिक्त जानकारी यहां उपलब्ध है: HOWTO: आप कमांड लाइन से बाहरी आईपी पते की जांच करें


मेरे पास कुछ ऐसा है जैसे मेरा सिस्टम राउटर से कनेक्ट होता है और यह इंट्रनेट से जुड़ा होता है
user61954

5
चूंकि उन्होंने कहा कि वह सीधे जुड़े हुए नहीं हैं, तो किसी भी eth*डिवाइस में WAN IP नहीं होगा। जब तक उसका राउटर ssh को सपोर्ट नहीं करता, तब तक उसकी पहुंच है, और ifconfig, यह काम नहीं कर रहा है। नीच नहीं, लेकिन ऐसा करने की कोशिश करने वाले किसी को भी जानते हैं।
एरोनल्स

उसके प्रश्न को फिर से पढ़ें। वह कहता है कि उसके पास LAN एक्सेस है, बस इंटरनेट एक्सेस नहीं है, आइटम # 1 है। आइटम # 2 का कहना है कि वह अपने आईएसपी से एक गतिशील आईपी प्राप्त कर रहा है, मैं यह मान रहा हूं कि उसे या तो अपने LAN में b / w में एक और सिस्टम मिल गया है और इंटरनेट या उसे एक होम राउटर मिल गया है / b / w और w उसे इंटरनेट।
SLM

डाउनवोटर्स, एक टिप्पणी को छोड़ने का प्रयास करें, यह उत्तर अब तक का सबसे पूर्ण है और फिर भी लोग मतदान से कम हैं। @ user61954 ने अपनी टिप्पणियों में यहां तक ​​कहा कि वह राउटर के पीछे है इसलिए मेरे द्वारा बताए गए तरीकों में से एक काम करेगा।
SLM

मैंने उत्थान किया। लेकिन पहला और दूसरा तरीका काम नहीं करता है, यह केवल स्थानीय पते को वापस करता है। धन्यवाद!
जारेड बुर

12

यदि आपके सिस्टम में कर्ल इंस्टॉल (सबसे अधिक) है, तो आप उपयोग कर सकते हैं

curl ifconfig.me

अरे, धन्यवाद, यह मेरी मदद करता है, बस एक सवाल, "ifconfig.me" क्या है, मैं ifconfig फ़ंक्शन को जानता हूं, लेकिन मैं आमतौर पर इसके साथ नहीं हूं। कृपया आप मुझे इसके बारे में पढ़ने या इसे समझाने के लिए एक लिंक दे सकते हैं। --Update-- सवाल नहीं पढ़ा। अप
अबी डब्ल्यू

ifconfig.me एक ऐसी वेबसाइट है जो आपको अपना आई.पी.
रॉरी

ifconfig.me https का समर्थन नहीं करता है, तो यह खराब हो सकता है। अगर आपका वीपीएन ऊपर है, तो यह जांचने के लिए इसका उपयोग करना अच्छा नहीं है।
डैन डस्केल्सस्कु

9

जब आप UPNP के साथ NAT राउटर के पीछे होते हैं, तो आप wan ip एड्रेस का पता लगाने के लिए miniupnpc का उपयोग कर सकते हैं:

# debian/ubuntu setup: 
# sudo apt-get install miniupnpc

# get WAN IP address from UPNP router:
upnpc -s | grep ^ExternalIPAddress | cut -c21-

आप इसे स्क्रिप्ट में उपयोग कर सकते हैं जैसे क्रॉन के लिए:

#!/bin/bash
#
# In this example, lynx is used as http client. you could also use something else
# like wget etc.
# debian/ubuntu lynx setup: 
#
# apt-get install lynx
#

EXTIP=`upnpc -s | grep ^ExternalIPAddress | cut -c21-`
DDNSURL="http://your-ddns-service.com/update/my/ip/to/$EXTIP"
TFILE=/tmp/.WAN_IP
if [ -f $TFILE ]; then
        OXTIP=`head -1 $TFILE`
else
        touch $TFILE
        OXTIP="NULL"
fi
if [ "$EXTIP" != "$OXTIP" ]; then
        mv $TFILE "$TFILE~"
        echo "$EXTIP" > $TFILE
        lynx -source $DDNSURL > /dev/null
        echo "================================"
        date
        echo "WAN_IP = $EXTIP"
fi

5

सबसे अधिक संभावना है, राउटर को बाहरी आईपी प्राप्त करने का एक तरीका प्रदान करना चाहिए यदि कोई बाहरी सेवा का उपयोग नहीं किया जाना चाहिए या नहीं किया जा सकता है (जैसा कि पहले से संकेतित कुछ अन्य उत्तर)। बाहरी सेवाओं के लिए, अधिकांश अन्य उत्तरों में, एक वेब सेवा का उपयोग किया जाता है। यूनिक्स एसई पर यह जवाब इसके बजाय DNS का उपयोग करने का सुझाव देता है।

उदाहरण के लिए, OpenDNS के साथ रिसोल्वर के रूप में उपयोग digकरना :

dig +short myip.opendns.com @resolver1.opendns.com

+1, लेकिन अंत में ओ फुटे दिन इसका उपयोग उसी तरह किया जाता है curl ident.meजैसे हम ओएस को एक विशिष्ट सेवा ( myip.opendns,com
थिस

4

आपके रूटर से ssh या कर्ल के माध्यम से जानकारी प्राप्त करें।

मैं अपने सार्वजनिक आईपी के लिए डंडों को पूछने के लिए कर्ल का उपयोग करता हूं, लेकिन ऐसा कोई आदेश आपके लिए लागू नहीं होता है?

curl http://checkip.dyndns.org 2> /dev/null| perl -pe 's,.*Address: (\d+\.\d+\.\d+\.\d+).*,$1,'


2

दुर्भाग्य से एनएटी जैसे तंत्रों का पता लगाने का कोई तरीका नहीं है जिसमें एक दूरस्थ सेवा से संपर्क करना शामिल नहीं है। NAT, उपयोगकर्ता के लिए पूरी तरह से पारदर्शी है, टूटी हुई सेवाओं के अलावा, और NAT खोज के लिए कोई मानक प्रोटोकॉल नहीं है।

लेकिन जहां तक ​​बाहरी सेवाओं का संबंध है, मुझे तेज और सरल का सुझाव देना होगा जो मैंने लिखा था, पहचान ।me, जिसे आप IPv4 और IPv6 दोनों के लिए उपयोग कर सकते हैं; इसके सरलतम रूप के लिए आप इसका उपयोग कर सकते हैं curl ident.meऔर पूरा एपीआई http://api.ident.me/ पर प्रलेखित है


1

यदि आपका राउटर NAT PMP (पोर्ट मैपिंग प्रोटोकॉल) का समर्थन करता है , तो आप natpmp का उपयोग करके अपने सार्वजनिक आईपी को पुनः प्राप्त करने में सक्षम हो सकते हैं।

लिनक्स natpmp लाइब्रेरी के लिए एक कमांड लाइन इंटरफ़ेस है जिसे natpmpc कहा जाता है। उबंटु पर, यह नैटपम्प-बर्तनों के पैकेज में है। मेरा राउटर natpmp का समर्थन नहीं करता है, इसलिए मुझे यकीन नहीं है कि natpmpc यूटिलिटी आपके सार्वजनिक आईपी को वापस कर देगी।


0

आपके द्वारा ifconfigचाहा जाने वाला लिनक्स कमांड यह मान रहा है कि आप इंटरनेट से सीधे जुड़े हुए हैं।

यदि प्रॉक्सी और विशेष मार्ग के माध्यम से नहीं पहुंच रहे हैं, तो सबसे आसान तरीका है (जैसा कि अन्य संकेत देते हैं) किसी अन्य होस्ट को लॉगिन / एक्सेस करना और वहां से इसकी जांच करना है।

इसके अलावा, आप अपने दोस्ताना पड़ोस सिस्टम प्रशासक से इस सवाल पर चर्चा करना पसंद कर सकते हैं।


ifconfigपदावनत किया गया है।
बैच १२

"ट्रेसरूटे कमांड, लेकिन यह लैन का स्थानीय आईपी, 192.168.1.1 देता है।" तो मुझे लगता है कि वहाँ एक लैन है। इसलिए कहीं न कहीं किसी तरह का राउटर / गेटवे / नेट होना चाहिए। अगर ifconfig सार्वजनिक आईपी एड्रेस नहीं देगा क्योंकि ऑप का कॉम्प सीधे इंटरनेट से जुड़ा नहीं है।

@BatchyX। आप कौन सा ओएस चला रहे हैं? मेरे द्वारा चलाए जा रहे हर सिस्टम में ifconfig है। फेडोरा, सेंटोस, उबंटू, आदि
slm

2
@ बैच: और आपको वह जानकारी कहां से मिलती है? मैं उस एक पर आपसे असहमत हूं।
एमडीपीसी

1
@sim: क्योंकि एक कमांड मौजूद है इसका मतलब यह नहीं है कि यह पदावनत नहीं है। बस ifconfigनवीनतम रिलीज की तारीख को देखो । अब ìproute2ताजा रिलीज को देखें। एक स्रोत के रूप में, lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHY
बैच

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