मेरे सार्वजनिक आईपी का निर्धारण करने के लिए आदेश?

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

यदि आप राउटर के पीछे नहीं हैं, तो आप इसका उपयोग करके इसका पता लगा सकते हैं 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

सौजन्य:

आप भी इस्तेमाल कर सकते हैं lynx(ब्राउज़र) या curl के स्थान पर wget अपने बाहरी आईपी को खोजने के लिए, उपरोक्त कमांड में मामूली बदलाव के साथ ।

का उपयोग करना curl आईपी खोजने के लिए:

$ curl https://ipecho.net/plain

बेहतर स्वरूपित आउटपुट उपयोग के लिए:

$ curl https://ipecho.net/plain ; echo

एक तेज़ (यकीनन सबसे तेज़) विधि का उपयोग कर dig साथ में OpenDNS रिज़ॉल्वर के रूप में:

यहां अन्य उत्तर सभी रिमोट सर्वर पर एचटीटीपी पर जाते हैं । उनमें से कुछ को आउटपुट के पार्सिंग की आवश्यकता होती है, या सर्वर को सादे पाठ में प्रतिक्रिया देने के लिए उपयोगकर्ता-एजेंट हेडर पर भरोसा करते हैं । वे भी काफी बार बदलते हैं (नीचे जाएं, अपना नाम बदलें, विज्ञापन डालें, आउटपुट स्वरूप बदल सकते हैं आदि । ).

  1. डीएनएस प्रतिक्रिया प्रोटोकॉल मानकीकृत है (प्रारूप संगत रहेगा) ।
  2. ऐतिहासिक रूप से DNS सेवाओं (OpenDNS, गूगल सार्वजनिक DNS, ..) बहुत लंबे समय तक जीवित रहते हैं और अधिक स्थिर, स्केलेबल होते हैं और आम तौर पर जो भी नए कूल्हे की तुलना में देखभाल करते हैं whatismyip.com एचटीटीपी सेवा आज गर्म है ।
  3. (उन गीक्स के लिए जो माइक्रो-ऑप्टिमाइज़ेशन की परवाह करते हैं), यह विधि स्वाभाविक रूप से तेज़ होनी चाहिए (यह केवल कुछ माइक्रो सेकंड तक हो) ।

रिज़ॉल्वर के रूप में ओपनडीएनएस के साथ खुदाई का उपयोग करना:

$ 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/

अपडेट करें

  1. 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 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
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

पुनश्च ip at DuckDuckGo (कोई कमांड लाइन नहीं, लेकिन कोई बड़ा भाई जी न तो)

शायद यह एक अलग सवाल होना चाहिए, लेकिन जब मेरा सार्वजनिक आईपी पता बदलता है तो मैं एक अलर्ट देखना चाहूंगा । अभी के लिए, मैं सूचित-भेजेंके साथ एक क्रोनटैब में निम्नलिखित उत्तरों का उपयोग कर रहा हूं ।

सार्वजनिक आईपी मेरे दोस्त को जाने बिना कोई एसएसएच नहीं कर सकता । … डीएनडीएनएस की लागत बहुत अधिक है और नो-आईपी कठिन काम करता है लेकिन स्थिति इसकी अनुमति नहीं देती है । … वैसे भी सवाल का जवाब पहले ही दिया जा चुका है । . आपके सुझाव के लिए धन्यवाद

नीचे महान समाधान। के लिए Centos उपयोग: ifconfig eth1 | sed -एनआरई '/^[^ ]+/{N;एस/^([^ ]+).* इनेट * ([ ^ ]+) । * / \2 / पी} " जहां एथ 1 नेटवर्क डिवाइस ओ ब्याज है, आप सभी एडेप्टर के सभी आईपी दिखाने के लिए 'ईटी 1' स्ट्रिंग को छोड़ सकते हैं । '\2 के बजाय आप प्रत्येक एडाप्टर के नाम भी दिखाने के लिए` \1 \2 ’ लिख सकते हैं ।

कोई भी उत्तर सही दृष्टिकोण नहीं दिखाता है । चूंकि मेरे पास उत्तर पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है, इसलिए मैं बाहरी सेवाओं पर भरोसा किए बिना इसे कैसे प्राप्त करूं, इस पर एक टिप्पणी पोस्ट करूंगा । बस टर्मिनल ’ $ होस्टनाम-आईपी-एड्रेस`पर चलाएं