मुझे अपना आंतरिक आईपी पता कैसे मिलेगा?


208

मेरे पास Ubuntu सर्वर 12.04 स्थापित है, इसलिए मेरे पास कोई GUI नहीं है। जब मैं ifconfig कमांड करता हूं, तो मुझे अपना इंटर्नल आईपी पता नहीं मिल सकता है। यह कहता है inet addr: 127.0.0.1।

यहाँ का उत्पादन है ifconfig -a:

eth0   link encap:Ethernet  HWaddr 00:06:4f:4a:66:f0
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1   link encap:Ethernet  HWaddr 00:16:ec:05:c8:9c 
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo     Link encap:Local Loopback
    inet addr 127.0.0.1  Mask:255.0.0.0
    inet6 addr:  ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536  Metric:1
    RX packets:1800 errors:0 dropped:0 overruns:0 frame:0
    Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:143896 (143.b KB)  TX bytes:143896 (143.8 KB)

यहाँ सामग्री / नेटवर्क / इंटरफेस की सामग्री हैं:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

अगर कोई मेरे लिए इसे संपादित कर सकता है, आदि / नेटवर्क / इंटरफेस की सामग्री अलग लाइनों पर होनी चाहिए।

होस्ट askubuntu.com का आउटपुट था:

;; connection timed out; no servers could be reached.

मैंने कुछ महीने पहले खुद का जाल और वेबमिन स्थापित किया था और एक महीने तक बिना किसी समस्या के उनका उपयोग कर रहा था। मुझे लगता है कि 2 महीने पहले एक दिन बिजली चली गई थी और मैंने कभी भी सर्वर को कल तक वापस नहीं किया। मैंने ऐसा कुछ भी नहीं किया है जो इंटरनेट सेटअप को प्रभावित करता हो इसलिए मुझे यकीन नहीं है कि यह अब काम क्यों नहीं करता है। जहां तक ​​मेरा नेटवर्क टोपोलॉजी जाता है, मेरे पास पीसी के लिए एक पीसीआई-ई नेटवर्क कार्ड है। ईथरनेट लाइन नेटवर्क कार्ड से स्विच में जाती है, और फिर वहां से एक मॉडेम / राउटर तक।


1
@AvatarParto उन लोगों के लिए है जो सार्वजनिक पहुंच का सामना कर रहे हैं, यह सवाल आंतरिक नेटवर्क के बारे में है ...
ब्रूनो परेरा

जिज्ञासा से बाहर, इसमें क्या है /etc/network/interfaces?
पॉवरलॉर्ड

मुझे पता है कि परिवर्तन निर्देशिका कमांड का उपयोग कैसे करें, लेकिन मुझे नहीं पता कि वहां एक बार फाइलों को कैसे सूचीबद्ध किया जाए, मैं यह कैसे करूंगा?
कैम जोन्स

lsएक निर्देशिका में फ़ाइलों को सूचीबद्ध करेगा। ls -lएक विस्तृत सूची देंगे। एक विशेष निर्देशिका की सामग्री को सूचीबद्ध करने के, ls -l /etc/network। एक निर्देशिका और सूची सामग्री में बदलने के लिए cd /etc/network ;ls -letc/network/interfaces(यह एक फ़ाइल है) की सामग्री को पढ़ने के लिए sudo pico /etc/network/interfaces। ( picoएक हल्का पाठ संपादक है - पढ़ने और बुनियादी संपादन के लिए अच्छा है, और इससे कम डराना नहीं है vi।)
douggro

जवाबों:


205

ये कमांड आपको सभी नेटवर्क जानकारी बताएंगे

ip add

या

ifconfig -a

यदि आप कहते हैं कि यह आपको केवल 127.0.0.1 देता है तो दो विकल्प हैं:

  1. आपका नेटवर्क कार्ड सिस्टम द्वारा संलग्न या मान्यता प्राप्त नहीं है

  2. आपका नेटवर्क DHCP सर्वर नहीं चल रहा है या जुड़ा नहीं है


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

@Skateguy ने askubuntu.com खोलने की कोशिश की और कृपया सभी ifconfig -a
kamil

मेरे पास कोई GUI नहीं है, मैं इसे टाइप करने वाला हूं।
कैम जोन्स

1
मैं उन सवालों का जवाब कैसे दे सकता हूं जो आपके दो विकल्प हैं?
कैम जोन्स

1
मैं पहलेip विकल्प का सुझाव दूंगा , फिर बाद में ( पदावनत ) । ifconfig
कैंपा

212
hostname -I

यह आपको बिना किसी अतिरिक्त जानकारी के सिर्फ आईपी एड्रेस देगा।


16
यह बिल्कुल सही है। इतने सारे जटिल (लेकिन बुरा नहीं) जवाब .. यह एक बस मृत सरल है।
user1003916

3
सही जवाब .. :)
john400

2
मैन पेज के अनुसार: `-I, --all-ip-address होस्ट के सभी नेटवर्क पते प्रदर्शित करता है। यह विकल्प सभी नेटवर्क इंटरफेस पर सभी कॉन्फ़िगर किए गए पते को एन्यूमर करता है। लूपबैक इंटरफ़ेस और IPv6 लिंक-स्थानीय पते छोड़े गए हैं। `तो यह आपको आपके द्वारा जुड़े नेटवर्क पर आईपी पता देगा, लेकिन आपकी मशीन का आईपी भी यदि आप इसे ईथरनेट या lxd सर्वर के रूप में उपयोग कर रहे हैं। मेरे मामले में यह दो पते देता है क्योंकि मेरे पास lxd है: 192.168.0.78 और 10.0.3.1
सर्गी

6
हां। मेरे मामले में यह अधिक बुरी तरह से है 10.0.2.15 172.18.0.1 172.17.0.1 172.20.0.1 172.21.0.1 172.22.0.1 172.19.0.1क्योंकि मैं कुछ डॉकटर कंटेनर चला रहा हूं;)
एलेक्स

4
अपवोट क्योंकि अन्य समाधान कच्चे
docker

185

यह वही है जो मैं वर्तमान में सुझाता हूं:

ip route get 8.8.8.8 | awk '{print $NF; exit}'

उस आदेश का लाभ यह है कि आपको यह पता नहीं है कि आप किस इंटरफ़ेस का उपयोग कर रहे हैं (eth0? Eth1? या शायद wlan0?), आपको लोकलहोस्ट एड्रेस, या डॉकर एड्रेस, या वीपीएन सुरंग आदि को फ़िल्टर करने की आवश्यकता नहीं है। और आपको हमेशा वह आईपी पता मिलेगा जो वर्तमान में उस समय इंटरनेट कनेक्शन के लिए उपयोग किया जाता है (जैसे कि जब आप ईथरनेट और वाईफाई दोनों के साथ या वीपीएन आदि के माध्यम से जुड़े हों)।

यह न केवल यह परीक्षण करेगा कि आपके पास कुछ इंटरफ़ेस (जैसे आउटपुट को पार्स करने के साथ ifconfig) पर सही आईपी कॉन्फ़िगर किया गया है, बल्कि यह भी है कि आपके पास सही तरीके से उपयोग करने के लिए कॉन्फ़िगर किया गया राउटिंग टेबल है।

मैं में उस विचार पाया इस उत्तर से कोलिन एंडरसन

मैं इसका उपयोग GitHub पर अपने स्क्रिप्ट संग्रह में आंतरिक स्क्रिप्ट में करता हूं , जिसे आप इसके साथ इंस्टॉल कर सकते हैं:

wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip

और इस रूप में उपयोग करें:

internalip

या:

internalip TARGET

और आपको अपना IP पता मिलेगा जिसका उपयोग TARGET IP पते से जुड़ने के लिए किया जाएगा । डिफ़ॉल्ट लक्ष्य वह है 8.8.8.8जो Google का सार्वजनिक DNS रिज़ॉल्वर है और इंटरनेट के लिए एक अच्छा डिफ़ॉल्ट है।

लेकिन अगर आप इसे अलग आईपी के साथ चलाते हैं:

internalip 127.2.3.4

तब आपको मिलेगा:

127.0.0.1

क्योंकि वह आपका IP पता है जिसका उपयोग लूपबैक इंटरफ़ेस पर 127.2.3.4 के साथ जोड़ने के लिए किया जाएगा । यह तब उपयोगी होता है जब आपका लक्ष्य लैन, वीपीएन या अन्य विशेष नेटवर्क पर होता है, जिस स्थिति में इंटरनेट तक पहुंचने के लिए डिफ़ॉल्ट आईपी की तुलना में कनेक्शन के लिए कुछ अन्य आईपी का उपयोग किया जा सकता है।

बाहरी आईपी

अपने बाहरी आईपी ​​पते की जांच करने के लिए (इंटरनेट पर सर्वर जो आप उन्हें कनेक्ट करते समय देखते हैं - जो कि यहां वर्णित आंतरिक आईपी पते से भिन्न हो सकता है) यह उत्तर देखें ।


1
यह एक बढ़िया जवाब है, धन्यवाद! मुझे इतना सिरदर्द बचाया! : D
user65165

यह एक उपयोगी चाल है, लेकिन ओपी एक आंतरिक आईपी के बारे में पूछ रहा था, इसलिए यह मानने के लिए सुरक्षित नहीं है कि यह 8.8.8.8 है।
mc0e

@ mc0e अच्छी बात है। इसलिए मेरी स्क्रिप्ट कुछ अन्य आईपी के लिए एक वैकल्पिक तर्क लेती है - 8.8.8.8बस डिफ़ॉल्ट है। मेरे जवाब में मैंने 127.2.3.4एक उदाहरण के रूप में इस्तेमाल किया । आप अपने इंट्रानेट या वीपीएन पर भी कुछ आईपी का उपयोग कर सकते हैं। मुद्दा यह है कि आपके पास आमतौर पर एक आंतरिक आईपी पता नहीं है, लेकिन विभिन्न लक्ष्यों के लिए उपयोग किए जाने वाले कुछ अलग पते हैं। इस तरह से आप वह खोज सकते हैं जो वास्तव में किसी दिए गए लक्ष्य के कनेक्शन के लिए उपयोग किया जाता है।
आरएस

1
बस इतना पता है, यह मैक पर बाहरी आईपी देता है।
OZZIE

19

मुझे लगता है कि यह उल्लेख के लायक है कि एक विकल्प के साथ-साथ चलने वाला इकोफिग सभी इंटरफेस को प्रदर्शित करेगा या नहीं कि इंटरफ़ेस में एक आईपी है।

ifconfig अकेले चल रहा है, केवल निर्दिष्ट IPs के साथ इंटरफेस प्रदर्शित करेगा।

यहाँ एक अच्छी चाल है जिसे आप पर्ल का उपयोग करके केवल आईपी प्रदर्शित करने के लिए उपयोग कर सकते हैं।

# ifconfig | perl -nle'/dr:(\S+)/ && print $1'
192.168.1.100
127.0.0.1

आपके नेटवर्क कार्ड को सिस्टम द्वारा मान्यता प्राप्त है, कि क्यों यह eth0 और eth1 दिखा रहा है

यहां आपके इंटरफ़ेस पर IP असाइन करने का एक त्वरित तरीका है, तदनुसार मान्य IP / Subnet का उपयोग करें।

 ifconfig eth0 192.168.1.200/24 up 

फिर हमें एक डिफ़ॉल्ट मार्ग जोड़ना होगा

route add default gw 192.168.1.1

श्रेष्ठ,


1
मैं इस विधि की कोशिश करूंगा, लेकिन आपको इसे समझने के लिए थोड़ा और नीचे तोड़ना होगा, जैसे कि एक वैध आईपी, सबनेट और एक वैध डिफ़ॉल्ट मार्ग को कैसे खोजना या जानना है।
कैम जोन्स

यह आपके नेटवर्क इंटरफेस के लिए एक स्थिर आईपी असाइनमेंट है, जिसका अर्थ है कि यदि आप 192.168.1.0/24 के सबनेट के साथ एक राउटर के पीछे हैं तो आप एक आईपी एक्स पिंग कर सकते हैं। 192.168.1.200 और यदि आपको कोई प्रतिक्रिया नहीं मिलती है, तो एक सिर पर जाएं और ifconfig इंटरफ़ेस_name IP_ADDRESS / MASK का उपयोग करें IP असाइन करने के बाद आपके डिफ़ॉल्ट gw को जोड़ना होगा।
user1007727

8

यह कमांड एकल डिवाइस के लिए सभी आईपी पते दिखाएगा:

dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1

यह आउटपुट की एक या दो पंक्तियों को प्रिंट करेगा। पहला एक inet / IPv4 पता है और दूसरा एक inet6 / IPv6 है यदि आपका सिस्टम इसको सपोर्ट करने के लिए कॉन्फ़िगर किया गया है।


6

मामले में, ifconfigकमांड आईपी पते को प्रदर्शित नहीं करता है, जीयूआई के माध्यम से उबंटू मशीन के आईपी पते का पता लगाने का एक बहुत ही सरल और आसान तरीका है। नीचे दिए गए चरणों का पालन करें:

क्लिक करें नेटवर्क आइकन सूचना क्षेत्र में और क्लिक कनेक्शन सूचनानेटवर्क आइकन विकल्प

यह एक विंडो लाता है जिसमें कुछ जानकारी होती है, जिसमें आईपी एड्रेस भी शामिल है। आईपी ​​पते की जानकारी


1

पहले से चुनने के लिए यहां बहुत सारे अच्छे उत्तर हैं, लेकिन मुझे लगा कि मैं तथ्य को इंगित करूंगा जो आमतौर पर है, लेकिन सिस्टम के बारे में विभिन्न तथ्यों को इकट्ठा करने के लिए कठपुतली के साथ उपयोग नहीं किया जाता है। Facter का मुख्य लाभ यह है कि यह अच्छा स्वच्छ उत्पादन जो आप के साथ सभी हेरफेर की बचत होती है देता है grep, sed, awk, cut, perl, आदि यह नहीं आप आप किसी भी इंटरफ़ेस में रुचि रखते हैं बताने के लिए जा रहा है, लेकिन अगर आप जानते हैं कि, तो निम्नलिखित आप अन्य cruft बिना साफ करने के लिए आईपी देता है:

facter ipaddress_eth0 

1

आईपी ​​कमांड

यहाँ पर एक बदलाव है ip addr

ipहै -oविकल्प जो एकल लाइन पर सभी जानकारी डालने की अनुमति देता है - इस तरह के उपकरणों के साथ पार्स करने के लिए उपयोगी है awkया perl-4विकल्प के साथ संयोजन में , हम केवल IPv4 पते देखेंगे। इस प्रकार, आउटपुट कुछ इस तरह होगा (ध्यान दें - wlan7 को उस इंटरफ़ेस से बदलें जिसे आप जांचना चाहते हैं):

$ ip -4 -o addr show wlan7
3: wlan7    inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\       valid_lft 85654sec preferred_lft 85654sec

जैसा कि आप देख सकते हैं, आउटपुट में IP पता 4th कॉलम / शब्द है। बाकी, अपनी पसंद के उपकरण के माध्यम से सरल पार्सिंग व्यायाम है । यहाँ, मैं अजगर का उपयोग कर रहा हूँ:

ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 

एक ही बात, केवल यहां स्ट्रिंग <<<और कमांड प्रतिस्थापन के साथ$()

python -c "import sys;print sys.stdin.readlines()[0].split()[3]"  <<< $(ip -4 -o addr show wlan7)

व्यक्तिगत रूप से, मैंने इसे एक अच्छे कार्य के रूप में सहेजा है ~/.bashrcताकि मेरी टाइपिंग कम हो।

wlan_ip() {
    ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 
} 

पर्ल और रूबी का संस्करण थोड़ा छोटा है:

$ ip -4 -o addr show  wlan7 | perl -lane 'print $F[3]'                         
192.168.0.78/24

$ ip  -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]'                 
192.168.0.78/24

वायरशार्क

यदि आप नेटवर्क विश्लेषण उपकरणों का उपयोग करने से परिचित हैं, तो आप शायद जानते हैं कि अपना आईपी पता प्राप्त करने के लिए, आपको बस इतना करना होगा कि ब्राउज़र कैश को साफ़ करें, विशिष्ट इंटरफ़ेस पर Wireshark कैप्चर शुरू करें, और HTTP GETपैकेट को प्रेषित करने के लिए देखें। गंतव्य कॉलम आपके आईपी पते को दिखाएगा

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