Dahili ip adresimi nasıl bulurum?


208

Ubuntu sunucum 12.04 yüklü, bu yüzden GUI yok. İfconfig komutunu yaptığımda internl ip adresimi bulamıyorum. Inet addr diyor: 127.0.0.1.

İşte çıktısı 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)

etc / network / interface arayüzünün içeriği:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Birisi bunu benim için düzenleyebilseydi, etc / network / interfaces dosyasının içeriği ayrı satırlarda olmalıdır.

Askubuntu.com sunucusunun çıktısı şuydu:

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

Birkaç ay önce owncloud'u ve webmin'i kurdum ve bir ay boyunca problemsiz kullanıyordum. Sanırım güç 2 ay önce bir gün kesildi ve sunucuyu dünye kadar hiç açmadım. İnternet kurulumunu etkileyecek hiçbir şey yapmadım, bu yüzden neden artık işe yaramadığından emin değilim. Ağ topolojim gittiği sürece, bilgisayar için bir pci-e ağ kartım var. Ethernet hattı ağ kartından bir anahtara ve ardından oradan bir modem / yönlendiriciye gider.


1
@AvatarParto Bunlar kamu erişimine açık arabirimler içindir, bu soru iç ağlarla ilgili ...
Bruno Pereira

Meraktan, içinde ne /etc/network/interfacesvar?
Powerlord

Change directory komutunu nasıl kullanacağımı biliyorum, ancak dosyaları orada bir kez nasıl listeleyeceğimi bilmiyorum, bunu nasıl yapardım?
Cam Jones

lsBir dizindeki dosyaları listeler. ls -layrıntılı bir liste verecektir. Belirli bir dizinin içeriğini listelemek için ls -l /etc/network,. Bir dizine geçmek ve içeriği listelemek için cd /etc/network ;ls -l. İçeriğini okumak için etc/network/interfaces(bu bir dosyadır) sudo pico /etc/network/interfaces. ( picoHafif bir metin editörüdür - okuma ve temel düzenleme için iyi, daha az korkutucu vi.)
douggro 7:14

Yanıtlar:


205

Bu komutlar size tüm ağ bilgilerini söyleyecektir

ip add

veya

ifconfig -a

Dediğiniz gibi sadece 127.0.0.1 veriyorsa, iki seçenek vardır:

  1. Ağ kartınız takılı değil veya sistem tarafından tanınmıyor

  2. Ağ DHCP sunucunuz çalışmıyor veya bağlı değil


oturum açtığımda, birkaç güncelleme veya güncelleme olduğunu söyledi, bu yüzden güncellemeleri olduğunu bilmek için resmi ubuntu web sitesiyle konuşmak zorunda olduğunu düşünüyorum, bu yüzden internetimin çalıştığını düşünüyorum.
Cam Jones

@Skateguy askubuntu.com açmaya çalışın ve lütfen hepsini yazdırın ifconfig -a
kamil

GUI'm yok, yazmayı düşünüyorum da.
Cam Jones

1
İki seçeneğinizin ortaya koyduğu soruları nasıl cevaplayabilirim?
Cam Jones

1
Önceip seçeneği , sonradan ( kullanımdan kaldırıldı ) öneriyorum . ifconfig
Campa

212
hostname -I

Bu size herhangi bir ek bilgi olmadan sadece ip adresini verecektir.


16
Bu mükemmel. Çok fazla aşırı karmaşık (ama fena değil) cevaplar .. Bu sadece ölü basit.
user1003916

3
Perfect answer .. :)
john400

2
Man sayfasına göre: `-I, --all-ip-adresleri Ana bilgisayarın tüm ağ adreslerini görüntüleyin. Bu seçenek numaralandırır, tüm ağ arayüzlerinde yapılandırılmış tüm adresleri belirtir. Geridöngü arayüzü ve IPv6 yerel bağlantı adresleri atlanır. ”Bu, bağlı olduğunuz ağda ip adresini, ancak ethernet veya lxd sunucusu olarak kullanıyorsanız makinenizin IP adresini de verir. Benim durumumda iki adres var çünkü lxd'im var: 192.168.0.78 ve 10.0.3.1
Sergiy Kolodyazhnyy

6
Evet. Benim durumumda daha kötü 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çünkü bazı Docker konteynerleri işletiyorum;)
Alex

4
Diğer çözümler ham liman işçisi ubuntu görüntü üzerinde örneğin işe yaramaz Oyla çünkü
gör noonex

185

Şu anda tavsiye ettiğim şey bu:

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

Bu komutun avantajı, hangi arayüzü kullandığınızı bilmek zorunda olmamanız (eth0? Eth1? Veya belki wlan0?), Localhost adreslerini veya Docker adreslerini veya VPN tünellerini vb. Filtrelemeniz gerekmez. ve o anda şu anda İnternet bağlantısı için kullanılan IP adresini her zaman alacaksınız (örneğin, hem ethernet hem de wifi ya da VPN vb. ile bağlandığınızda önemlidir).

Bu, yalnızca bazı arabirimlerde yapılandırılmış doğru bir IP’niz olduğunu (çıktısını ayrıştırma gibi ifconfig) değil, aynı zamanda doğru şekilde kullanacak şekilde yapılandırılmış yönlendirme tablosuna sahip olduğunuzu test eder .

Bu cevabı Collin Anderson tarafından buldum .

Yükleyebileceğiniz GitHub'daki script koleksiyonumda internalip betiğinde kullanıyorum :

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

ve olarak kullanın:

internalip

veya:

internalip TARGET

HEDEF IP adresine bağlanmak için kullanılacak IP adresinizi alacaksınız . Varsayılan hedef 8.8.8.8olan Google'ın genel DNS çözümleyici ve İnternet için iyi bir varsayılan.

Ancak farklı bir IP ile çalıştırıyorsanız:

internalip 127.2.3.4

O zaman alacaksın:

127.0.0.1

çünkü geri döngü arabiriminde 127.2.3.4 ile bağlantı kurmak için kullanılacak IP adresinizdir . Hedefiniz bir LAN, VPN veya başka bir özel ağdayken faydalıdır; bu durumda, İnternet'e ulaşmak için varsayılan IP'den başka bir IP bağlantısı kullanılabilir.

Dış IP

Harici IP adresinizi kontrol etmek için (İnternet'teki sunucuların kendilerine bağlandığınızda gördüğü - burada açıklanan dahili IP adresinden farklı olabilir) bu cevaba bakınız .


1
bu harika bir cevap, teşekkürler! Beni çok fazla baş ağrısı kurtardı! : D
kullanıcı65165,

Bu yararlı bir püf noktasıdır, ancak OP dahili bir IP soruyordu, bu yüzden 8.8.8.8'e yönlendirilebileceğini varsaymak güvenli olmayabilir.
mc0e

@ mc0e İyi nokta. Bu yüzden senaryom başka bir IP için isteğe bağlı bir argüman alıyor - 8.8.8.8sadece varsayılan. Cevabımda 127.2.3.4örnek olarak kullandım . İntranetinizde veya bir VPN'de IP kullanabilirsiniz. Mesele şu ki, genellikle bir dahili IP adresiniz değil, farklı hedefler için kullanılan birkaç farklı adresiniz var. Bu şekilde, belirli bir hedefe bağlantı için gerçekten kullanılanı bulabilirsiniz.
rsp

1
Sadece bildiğiniz gibi, bu Mac'te harici IP veriyor.
OZZIE

19

-Con seçeneği ile birlikte ifconfig komutunu çalıştırmanın, arayüzün IP'sine sahip olup olmadığına bakılmaksızın tüm arayüzleri göstereceğini belirtmeye değer olduğunu düşünüyorum.

ifconfig'in yalnız çalıştırılması, sadece atanmış IP'lerle arayüzleri gösterecektir.

İşte Perl kullanarak sadece IP görüntülemek için kullanabileceğiniz güzel bir püf noktası.

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

Ağ kartınız sistem tarafından tanınır, bu yüzden eth0 ve eth1

Arayüzünüze IP atamanın hızlı bir yoludur, buna göre geçerli IP / Alt ağ kullanın.

 ifconfig eth0 192.168.1.200/24 up 

o zaman varsayılan bir rota eklememiz gerekiyor

route add default gw 192.168.1.1

En iyi,


1
Bu yöntemi denerdim, ancak geçerli bir IP, alt ağ ve geçerli bir varsayılan yol bulma veya bilme gibi, onu anlamam için onu biraz daha kırmanız gerekecek.
Cam Jones

bu, ağ arabiriminiz için statik bir IP atamasıdır; bunun anlamı, 192.168.1.0/24 alt ağına sahip bir yönlendiricinin arkasındaysanız, ip bir ping atayabilirsiniz. 192.168.1.200 ve cevap alamazsanız, bir kafa gidin ve ifconfig interface_name kullanın IP_ADDRESS / MASK up IP atandıktan sonra varsayılan gw'nizin eklenmesi gerekir.
user1007727 12:14

8

Bu komut, tek bir cihazın tüm IP adreslerini gösterecektir:

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

Bir veya iki satır çıktı yazdırır. Birincisi inet / IPv4 adresi, diğeri sisteminiz bunu destekleyecek şekilde yapılandırılmışsa inet6 / IPv6'dır.


6

ifconfigKomutun IP adresini görüntülememesi durumunda, Ubuntu makinesinin IP adresini GUI aracılığıyla bulmanın çok basit ve kolay bir yolu vardır. Aşağıdaki adımları takip et:

Click ağ simgesini bildirim alanında ve tıklama bağlantı bilgilerini . Ağ simgesi seçenekleri

Bu, IP adresi de dahil olmak üzere, bazı bilgiler içeren bir pencere açar. IP adresi bilgisi


1

Burada çoktan seçilebilecek çok sayıda iyi cevap var, ama genellikle, ama sistemle ilgili çeşitli gerçekleri toplamak için mutlaka kukla ile kullanılmadığı gerçeğini işaret edeceğimi düşündüm . Facter en önemli avantajı ile size bütün manipülasyon kaydeder güzel temiz çıktı sağlamasıdır grep, sed, awk, cut, perlsen ki, o zaman biliyorsanız, vb ilgilendiğiniz arayüzü söylemek için gitmiyor, ama aşağıdakiler size temizlemek için başka bir zorlama olmadan IP verir:

facter ipaddress_eth0 

1

ip komutu

İşte ip addryolda bir varyasyon .

ipsahip -otek bir satırda tüm bilgileri koyarak seçeneklerinden - Bu gibi araçlarla ayrıştırma için yararlıdır awkya perl. -4Seçenekle birlikte yalnızca IPv4 adreslerini göreceğiz. Dolayısıyla çıktı şöyle bir şey olurdu (not - wlan7'yi kontrol etmek istediğiniz arayüzle değiştirin):

$ 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

Gördüğünüz gibi, IP adresi çıktıda 4. sütun / kelimedir. Gerisi, seçtiğiniz bir araçla basit ayrıştırma alıştırmasıdır . Burada, python kullanıyorum:

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

Aynı şey, sadece burada dize <<<ve komut değiştirme ile$()

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

Şahsen, ben bu güzel bir işlev olarak kaydettiğimde ~/.bashrcçok az yazarak yapılır.

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

Perl ve Ruby'nin sürümü biraz daha kısa:

$ 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

Ağ analizi araçlarını kullanmayı biliyorsanız, muhtemelen ip adresinizi almak için yapmanız gereken tek şey tarayıcı önbelleğini temizlemek, belirli bir arabirimde Wireshark yakalamaya başlamak ve GETiletilen http paketlerini aramaktır. Hedef sütun ip adresinizi gösterecek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.