अगर मैं जांच करता हूं गूगल, मैं अपना सार्वजनिक आईपी देख सकता हूं । क्या उबंटू कमांड-लाइन पर कुछ है जो मुझे एक ही जवाब देगा?
यदि आप राउटर के पीछे नहीं हैं, तो आप इसका उपयोग करके इसका पता लगा सकते हैं ifconfig
.
यदि आप राउटर के पीछे हैं, तो आपके कंप्यूटर को सार्वजनिक आईपी पते के बारे में पता नहीं चलेगा क्योंकि राउटर नेटवर्क एड्रेस ट्रांसलेशन करता है । आप कुछ वेबसाइट से पूछ सकते हैं कि आपका सार्वजनिक आईपी पता क्या उपयोग कर रहा है curl
या wget
और इससे आपको जो जानकारी चाहिए उसे निकालें:
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
या छोटा
curl https://ipinfo.io/ip
बाहरी आईपी खोजने के लिए, आप या तो बाहरी वेब-आधारित सेवाओं का उपयोग कर सकते हैं, या सिस्टम आधारित विधियों का उपयोग कर सकते हैं । बाहरी सेवा का उपयोग करना आसान है, यह भी ifconfig
आधारित समाधान आपके सिस्टम में तभी काम करेंगे जब आप पीछे नहीं होंगे NAT
. नीचे दो विधियों पर विस्तार से चर्चा की गई है ।
बाहरी सेवाओं का उपयोग करके बाहरी आईपी ढूँढना
सबसे आसान तरीका कमांडलाइन ब्राउज़र या डाउनलोड टूल के माध्यम से बाहरी सेवा का उपयोग करना है । चूंकि wget
उबंटू में डिफ़ॉल्ट रूप से उपलब्ध है, हम इसका उपयोग कर सकते हैं ।
अपना आईपी खोजने के लिए, उपयोग करें-
$ wget -qO- https://ipecho.net/plain ; echo
सौजन्य:
- https://hawknotes.blogspot.in/2010/06/finding-your-external-ip-address.html
- https://ipecho.net/plain
आप भी इस्तेमाल कर सकते हैं lynx
(ब्राउज़र) या curl
के स्थान पर wget
अपने बाहरी आईपी को खोजने के लिए, उपरोक्त कमांड में मामूली बदलाव के साथ ।
का उपयोग करना curl
आईपी खोजने के लिए:
$ curl https://ipecho.net/plain
बेहतर स्वरूपित आउटपुट उपयोग के लिए:
$ curl https://ipecho.net/plain ; echo
एक तेज़ (यकीनन सबसे तेज़) विधि का उपयोग कर dig
साथ में OpenDNS
रिज़ॉल्वर के रूप में:
यहां अन्य उत्तर सभी रिमोट सर्वर पर एचटीटीपी पर जाते हैं । उनमें से कुछ को आउटपुट के पार्सिंग की आवश्यकता होती है, या सर्वर को सादे पाठ में प्रतिक्रिया देने के लिए उपयोगकर्ता-एजेंट हेडर पर भरोसा करते हैं । वे भी काफी बार बदलते हैं (नीचे जाएं, अपना नाम बदलें, विज्ञापन डालें, आउटपुट स्वरूप बदल सकते हैं आदि । ).
- डीएनएस प्रतिक्रिया प्रोटोकॉल मानकीकृत है (प्रारूप संगत रहेगा) ।
- ऐतिहासिक रूप से DNS सेवाओं (OpenDNS, गूगल सार्वजनिक DNS, ..) बहुत लंबे समय तक जीवित रहते हैं और अधिक स्थिर, स्केलेबल होते हैं और आम तौर पर जो भी नए कूल्हे की तुलना में देखभाल करते हैं whatismyip.com एचटीटीपी सेवा आज गर्म है ।
- (उन गीक्स के लिए जो माइक्रो-ऑप्टिमाइज़ेशन की परवाह करते हैं), यह विधि स्वाभाविक रूप से तेज़ होनी चाहिए (यह केवल कुछ माइक्रो सेकंड तक हो) ।
रिज़ॉल्वर के रूप में ओपनडीएनएस के साथ खुदाई का उपयोग करना:
$ dig +short myip.opendns.com @resolver1.opendns.com111.222.333.444
से कॉपी किया गया: https://unix.stackexchange.com/a/81699/14497
बाहरी सेवाओं पर भरोसा किए बिना बाहरी आईपी ढूँढना
- यदि आप अपना नेटवर्क इंटरफ़ेस नाम जानते हैं
अपने टर्मिनल में निम्नलिखित टाइप करें:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
उपरोक्त में, प्रतिस्थापित करें <interface_name>
आपके वास्तविक इंटरफ़ेस के नाम के साथ, जैसे: eth0
, eth1
, pp0
, आदि । ..
उदाहरण उपयोग:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'111.222.333.444
- यदि आप अपना नेटवर्क इंटरफ़ेस नाम नहीं जानते हैं
अपने टर्मिनल में निम्नलिखित टाइप करें (यह आपके सिस्टम में प्रत्येक नेटवर्क इंटरफ़ेस का नाम और आईपी पता प्राप्त करता है):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
उदाहरण उपयोग:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'lo: 127.0.0.1ppp0: 111.222.333.444
एन. बी.: आउटपुट सांकेतिक हैं और वास्तविक नहीं हैं ।
सौजन्य: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
अपडेट करें
-
LANG=c
इसमें जोड़ा गया हैifconfig
आधारित उपयोग, ताकि यह हमेशा लोकेल सेटिंग के बावजूद अंग्रेजी आउटपुट दे ।
मेरा पसंदीदा हमेशा से रहा है :
curl ifconfig.me
सरल, टाइप करने में आसान ।
आपको पहले कर्ल स्थापित करना होगा ;)
अगर ifconfig.me नीचे की कोशिश है icanhazip.com और या ipecho.net
curl icanhazip.com
या
curl ipecho.net
icanhazip.com मेरा पसंदीदा है ।
curl icanhazip.com
आप स्पष्ट रूप से आईपीवी 4 का अनुरोध कर सकते हैं:
curl ipv4.icanhazip.com
अगर आपके पास नहीं है curl
आप उपयोग कर सकते हैं wget
इसके बजाय:
wget -qO- icanhazip.com
मैंने सब कुछ कष्टप्रद और धीमा पाया है, इसलिए मैंने अपना लिखा । यह सरल और तेज है ।
इसका एपीआई चालू है http://api.ident.me/
उदाहरण:
curl ident.mecurl v4.ident.mecurl v6.ident.me
तकनीकी डिजाइन: डीएनएस में, ident.me ए और एएएए दोनों रिकॉर्ड हैं, v4.ident.me केवल एक रिकॉर्ड है, और v6.ident.me केवल एक एएएए रिकॉर्ड है। उन आईपी पर पोर्ट 443 और 80 एनजीआईएनएक्स द्वारा प्रदान किए गए प्रमाणपत्रों का उपयोग करके एसएसएल के साथ परोसा जाता है letsencrypt.org सर्टिफिकेट के माध्यम से, और निम्नलिखित कॉन्फ़िगरेशन के साथ (अंश):
server { […] server_name .ident.me; location / { default_type text/plain; return 200 $remote_addr; add_header Access-Control-Allow-Origin "*"; add_header Cache-Control "no-cache, no-store, must-revalidate"; }}
आप अपने सार्वजनिक आईपी का पता लगाने के लिए एचटीटीपी अनुरोध के बजाय डीएनएस अनुरोध का उपयोग कर सकते हैं:
$ dig +short myip.opendns.com @resolver1.opendns.com
यह उपयोग करता है resolver1.opendns.com
डीएनएस सर्वर जादुई हल करने के लिए myip.opendns.com
को होस्टनाम आपका आईपी पता।
अमेज़ॅन एडब्ल्यूएस
curl https://checkip.amazonaws.com
नमूना आउटपुट:
123.123.123.123
ब्राउज़र पर भी काम करता है: http://checkip.amazonaws.com
मुझे यह पसंद है क्योंकि:
- यह उत्तर निकाय में सिर्फ प्लेनटेक्स्ट आईपी लौटाता है, और कुछ नहीं
- यह एक प्रसिद्ध प्रदाता से है जो जल्द ही कभी भी ऑफ़लाइन जाने की संभावना नहीं है
मैं जो उपयोग कर रहा हूं वह है :
wget -O - -q icanhazip.com
हाँ, आप आईपी हो सकता है: -)
इसमें बिल्कुल टाइप करें, दबाएं Enter जहां संकेत दिया:
telnet ipecho.net 80
EnterGET /plain HTTP/1.1
EnterHOST: ipecho.net
EnterBROWSER: web-kit
Enter
Enter
यह मैन्युअल रूप से एक एचटीटीपी अनुरोध सबमिट करता है, जो आपके आईपी को एक के नीचे वापस कर देगा HTTP/1.1 200 OK reply
उदाहरण आउटपुट:
$ telnet ipecho.net 80Trying 146.255.36.1...Connected to ipecho.net.Escape character is '^]'.GET /plain HTTP/1.1HOST: ipecho.netBROWSER: web-kitHTTP/1.1 200 OKDate: Tue, 02 Jul 2013 07:11:42 GMTServer: ApacheExpires: Mon, 26 Jul 1997 05:00:00 GMTCache-Control: no-cachePragma: no-cacheVary: Accept-EncodingTransfer-Encoding: chunkedContent-Type: text/htmlf111.222.333.4440
इसके लिए, अचेत आविष्कार किया गया था । एक ग्राहक के रूप में आप सार्वजनिक रूप से उपलब्ध स्टन सर्वर को एक अनुरोध भेज सकते हैं और इसे वह आईपी पता वापस दे सकते हैं जिसे वह देखता है । निम्न स्तर की तरह whatismyip.com चूंकि यह कोई एचटीटीपी और कोई स्मार्ट तरीके से तैयार किए गए डीएनएस सर्वर का उपयोग नहीं करता है, लेकिन धधकते हुए तेज स्टन प्रोटोकॉल ।
का उपयोग करना stunclient
यदि आपके पास है stunclient
स्थापित (apt-get install stuntman-client
डेबियन / उबंटू पर) आप बस कर सकते हैं:
$stunclient stun.services.mozilla.comBinding test: successLocal address: A.B.C.D:42541Mapped address: W.X.Y.Z:42541
जहां A.B.C.D
स्थानीय नेट पर आपकी मशीन का आईपी पता है और W.X.Y.Z
क्या आईपी एड्रेस सर्वर जैसे वेबसाइट बाहर से देखते हैं (और जिसे आप ढूंढ रहे हैं) । का उपयोग करना sed
आप ऊपर दिए गए आउटपुट को केवल एक आईपी पते तक कम कर सकते हैं:
stunclient stun.services.mozilla.com | sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"
हालांकि, आपका प्रश्न यह था कि कमांड लाइन का उपयोग करके इसे कैसे ढूंढें, जो एक स्टन क्लाइंट का उपयोग करके बाहर कर सकता है । तो मुझे आश्चर्य है । ..
का उपयोग करना bash
एक अचेत अनुरोध दस्तकारी किया जा सकता है, का उपयोग कर एक बाहरी अचेत सर्वर के लिए भेजा netcat
और पोस्ट-प्रोसेस का उपयोग करके dd
, hexdump
और sed
ऐसा ही:
$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' | nc -u -w 2 stun.services.mozilla.com 3478 | dd bs=1 count=4 skip=28 2>/dev/null | hexdump -e '1/1 "%u."' | sed 's/\.$/\n/'
इको एक बाइनरी स्टन अनुरोध को परिभाषित करता है (0 एक्स 0001 बाध्यकारी अनुरोध इंगित करता है) जिसमें लंबाई 8 (0 एक्स 0008) कुकी 0 एक्स 00 सीई और वायरशार्क से कुछ चिपकाए गए सामान हैं । बाहरी आईपी का प्रतिनिधित्व करने वाले केवल चार बाइट्स उत्तर, साफ और मुद्रित से लिए गए हैं ।
काम करना, लेकिन उत्पादन उपयोग के लिए अनुशंसित नहीं: -)
पीएस कई स्टन सर्वर उपलब्ध हैं क्योंकि यह एसआईपी और वेबआरटीसी के लिए एक मुख्य तकनीक है । मोज़िला से एक का उपयोग करना सुरक्षित गोपनीयता-वार होना चाहिए लेकिन आप दूसरे का भी उपयोग कर सकते हैं: अचेत सर्वर सूची
“डायनेमिक आईपी होना”, “एसएसएच इंटरनेट पर किसी अन्य सिस्टम का उपयोग करना”, “कमांड जो वर्तमान सार्वजनिक आईपी प्रदर्शित करेगा” । आप यहाँ चिकन / अंडे की समस्या देखते हैं? आप अपने पते को जाने बिना रिमोट सर्वर पर कमांड कैसे चला पाएंगे? आपको सेवाओं में अधिक रुचि हो सकती है जैसे no-ip.com / DynDNS.org।
शायद यह एक अलग सवाल होना चाहिए, लेकिन जब मेरा सार्वजनिक आईपी पता बदलता है तो मैं एक अलर्ट देखना चाहूंगा । अभी के लिए, मैं सूचित-भेजें
के साथ एक क्रोनटैब में निम्नलिखित उत्तरों का उपयोग कर रहा हूं ।
सार्वजनिक आईपी मेरे दोस्त को जाने बिना कोई एसएसएच नहीं कर सकता । … डीएनडीएनएस की लागत बहुत अधिक है और नो-आईपी कठिन काम करता है लेकिन स्थिति इसकी अनुमति नहीं देती है । … वैसे भी सवाल का जवाब पहले ही दिया जा चुका है । . आपके सुझाव के लिए धन्यवाद
नीचे महान समाधान। के लिए Centos उपयोग: ifconfig eth1 | sed -एनआरई '/^[^ ]+/{N;एस/^([^ ]+).* इनेट * ([ ^ ]+) । * / \2 / पी} " जहां एथ 1 नेटवर्क डिवाइस ओ ब्याज है, आप सभी एडेप्टर के सभी आईपी दिखाने के लिए 'ईटी 1' स्ट्रिंग को छोड़ सकते हैं । '\2
के बजाय आप प्रत्येक एडाप्टर के नाम भी दिखाने के लिए` \1 \2 ’ लिख सकते हैं ।
कोई भी उत्तर सही दृष्टिकोण नहीं दिखाता है । चूंकि मेरे पास उत्तर पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है, इसलिए मैं बाहरी सेवाओं पर भरोसा किए बिना इसे कैसे प्राप्त करूं, इस पर एक टिप्पणी पोस्ट करूंगा । बस टर्मिनल ’ $ होस्टनाम-आईपी-एड्रेस`पर चलाएं