Bagaimana cara menemukan alamat ip internal saya?

208

Saya sudah menginstal server Ubuntu 12.04, jadi saya tidak punya GUI. Ketika saya melakukan perintah ifconfig, saya tidak dapat menemukan alamat ip internl saya. Dikatakan inet addr: 127.0.0.1.

Ini adalah output dari 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)

berikut adalah isi dari etc / network / interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Jika seseorang dapat mengedit ini untuk saya, konten etc / network / interfaces harus pada baris yang terpisah.

Output dari host askubuntu.com adalah:

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

Saya mengatur owncloud dan webmin beberapa bulan yang lalu dan menggunakannya selama sebulan tanpa masalah. Saya pikir daya padam satu hari 2 bulan yang lalu dan saya tidak pernah menghidupkan kembali server sampai kemarin. Saya belum melakukan apa pun yang akan mempengaruhi pengaturan internet Jadi saya tidak yakin mengapa itu tidak berfungsi lagi. Sejauh topologi jaringan saya berjalan, saya memiliki kartu jaringan pci-e untuk pc. Garis ethernet berpindah dari kartu jaringan ke sakelar, dan kemudian ke modem / router dari sana.

Cam Jones
sumber
1
@ AvatarParto Itu adalah untuk antarmuka yang menghadapi akses publik, pertanyaan ini adalah tentang jaringan internal ...
Bruno Pereira
Karena penasaran, apa yang /etc/network/interfacesada di dalamnya?
Powerlord
Saya tahu cara menggunakan perintah direktori perubahan, tetapi saya tidak tahu bagaimana cara mendaftar file sekali di sana, bagaimana saya melakukan ini?
Cam Jones
lsakan mencantumkan file dalam direktori. ls -lakan memberikan daftar detail. Untuk daftar isi direktori tertentu ls -l /etc/network,. Untuk mengubah isi direktori dan daftar cd /etc/network ;ls -l. Untuk membaca konten etc/network/interfaces(ini adalah file) sudo pico /etc/network/interfaces. ( picoadalah editor teks yang ringan - bagus untuk membaca & mengedit dasar, dan kurang menakutkan daripada vi.)
douggro

Jawaban:

205

Perintah-perintah ini akan memberi tahu Anda semua info jaringan

ip add

atau

ifconfig -a

Jika seperti yang Anda katakan itu hanya memberi Anda 127.0.0.1 maka ada dua opsi:

  1. Kartu jaringan Anda tidak terpasang atau tidak dikenali oleh sistem

  2. Server DHCP jaringan Anda tidak berjalan atau tidak terhubung

kamil
sumber
ketika saya login itu memberitahu saya ada beberapa upgrade atau pembaruan, jadi saya menganggap itu harus berbicara dengan situs web ubuntu resmi untuk mengetahui ia memiliki pembaruan, Jadi saya pikir internet saya berfungsi.
Cam Jones
@Skateguy coba buka askubuntu.com dan cetak semua ifconfig -a
kamil
Saya tidak punya GUI, saya akan mengetiknya.
Cam Jones
1
Bagaimana saya bisa menjawab pertanyaan yang diajukan dua pilihan Anda?
Cam Jones
1
Saya akan menyarankan ipopsi terlebih dahulu , kemudian ( usang ) ifconfigsesudahnya.
Campa
213
hostname -I

Ini akan memberi Anda hanya alamat ip tanpa informasi tambahan.

Sarath Somana
sumber
16
Itu sempurna. Begitu banyak jawaban yang terlalu rumit (tapi tidak buruk) .. jawaban ini sederhana saja.
user1003916
3
Jawaban sempurna .. :)
john400
2
Menurut halaman manual: `-I, --all-ip-address Tampilkan semua alamat jaringan host. Opsi ini menghitung semua alamat yang dikonfigurasi pada semua antarmuka jaringan. Antarmuka loopback dan alamat IP-link-lokal dihilangkan.` Jadi ini akan memberi Anda alamat ip pada jaringan yang terhubung dengan Anda, tetapi juga IP mesin Anda jika Anda menggunakannya sebagai ethernet atau lxd server. Dalam kasus saya ini memberikan dua alamat karena saya memiliki lxd: 192.168.0.78 dan 10.0.3.1
Sergiy Kolodyazhnyy
6
Ya. Dalam kasus saya, ini lebih buruk 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.1karena saya menjalankan beberapa kontainer Docker;)
Alex
4
Terpilih karena solusi lain tidak berfungsi misalnya pada gambar buruh pelabuhan mentah Ubuntu
noonex
185

Inilah yang saat ini saya rekomendasikan:

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

Keuntungan dari perintah itu adalah Anda tidak perlu tahu antarmuka mana yang Anda gunakan (eth0? Eth1? Atau mungkin wlan0?), Anda tidak perlu menyaring alamat localhost, atau alamat Docker, atau terowongan VPN dll. dan Anda akan selalu mendapatkan alamat IP yang saat ini digunakan untuk koneksi Internet pada saat itu (penting ketika misalnya Anda terhubung dengan ethernet dan wifi atau melalui VPN dll.).

Ini akan menguji tidak hanya bahwa Anda memiliki IP yang benar dikonfigurasi pada beberapa antarmuka (seperti dengan parsing output ifconfig) tetapi juga bahwa Anda memiliki tabel routing yang dikonfigurasi untuk menggunakannya dengan benar.

Saya menemukan ide itu dalam jawaban ini oleh Collin Anderson .

Saya menggunakannya dalam skrip internalip dalam koleksi skrip saya di GitHub , yang dapat Anda instal dengan:

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

dan gunakan sebagai:

internalip

atau:

internalip TARGET

dan Anda akan mendapatkan alamat IP Anda yang akan digunakan untuk terhubung dengan alamat IP TARGET . Target default adalah 8.8.8.8yang merupakan resolver DNS publik Google dan default yang bagus untuk Internet.

Tetapi jika Anda menjalankannya dengan IP yang berbeda:

internalip 127.2.3.4

Maka Anda akan mendapatkan:

127.0.0.1

karena itu adalah alamat IP Anda yang akan digunakan untuk terhubung dengan 127.2.3.4 pada antarmuka loopback. Ini berguna ketika target Anda berada di LAN, VPN atau jaringan khusus lainnya, dalam hal ini beberapa IP lain dapat digunakan untuk koneksi daripada IP default untuk mencapai Internet.

IP eksternal

Untuk memeriksa alamat IP eksternal Anda (alamat yang dilihat oleh server di Internet saat Anda menyambungkannya - yang mungkin berbeda dari alamat IP internal yang dijelaskan di sini) lihat jawaban ini .

rsp
sumber
1
ini jawaban yang luar biasa, terima kasih! menyelamatkan saya dari sakit kepala! : D
user65165
Ini adalah trik yang berguna, tetapi OP bertanya tentang IP internal, jadi saya mungkin tidak aman untuk menganggap bahwa itu dapat dialihkan ke 8.8.8.8.
mc0e
@ mc0e Poin bagus. Itu sebabnya skrip saya mengambil argumen opsional untuk beberapa IP lain - 8.8.8.8hanya default. Dalam jawaban saya, saya gunakan 127.2.3.4sebagai contoh. Anda dapat menggunakan beberapa IP di intranet atau VPN juga. Intinya adalah bahwa Anda biasanya tidak memiliki satu alamat IP internal tetapi beberapa alamat berbeda digunakan untuk target yang berbeda. Dengan cara ini Anda dapat menemukan yang sebenarnya digunakan untuk koneksi ke target yang diberikan.
rsp
1
Asal tahu saja, ini memberikan IP eksternal pada Mac.
OZZIE
19

Saya pikir itu layak menyebutkan bahwa menjalankan ifconfig bersama dengan opsi -a akan menampilkan semua antarmuka apakah antarmuka memiliki IP.

menjalankan ifconfig sendiri, hanya akan menampilkan antarmuka dengan IP yang ditetapkan.

Ini adalah trik bagus yang bisa Anda gunakan untuk menampilkan hanya IP menggunakan Perl.

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

Kartu jaringan Anda dikenali oleh sistem, itulah sebabnya mengapa muncul eth0 dan eth1

di sini adalah cara cepat untuk menetapkan IP ke antarmuka Anda, gunakan IP / Subnet yang sesuai.

 ifconfig eth0 192.168.1.200/24 up 

maka kita perlu menambahkan rute default

route add default gw 192.168.1.1

Terbaik,

pengguna1007727
sumber
1
Saya akan mencoba metode ini tetapi Anda harus memecahnya sedikit lebih bagi saya untuk memahaminya, seperti dalam cara menemukan atau mengetahui IP yang valid, subnet dan rute default yang valid.
Cam Jones
ini adalah penugasan IP statis untuk antarmuka jaringan Anda, artinya jika Anda berada di belakang router dengan subnet 192.168.1.0/24 maka Anda dapat melakukan ping ip ex. 192.168.1.200 dan jika Anda tidak mendapat respons, maka pergilah dan gunakan ifconfig interface_name IP_ADDRESS / MASK up. Gw default Anda perlu ditambahkan setelah menetapkan IP.
user1007727
8

Perintah ini akan menampilkan semua alamat IP untuk satu perangkat:

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

Ini akan mencetak satu atau dua baris output. Yang pertama adalah alamat inet / IPv4 dan yang lainnya adalah inet6 / IPv6 jika sistem Anda dikonfigurasi untuk mendukung ini.

Aaron Digulla
sumber
6

Dalam hal, ifconfigperintah tidak menampilkan alamat IP, ada cara yang sangat sederhana dan mudah untuk mengetahui alamat IP mesin Ubuntu melalui GUI. Ikuti langkah-langkah di bawah ini:

Klik ikon jaringan di area notifikasi dan klik Informasi Koneksi . Opsi ikon jaringan

Ini memunculkan jendela yang memiliki beberapa informasi, termasuk alamat IP. Informasi alamat IP

Ibungo
sumber
1

Ada banyak jawaban bagus di sini untuk dipilih, tetapi saya pikir saya akan menunjukkan facter yang biasanya, tetapi tidak harus digunakan dengan boneka untuk mengumpulkan berbagai fakta tentang sistem. Keuntungan utama dari facter adalah memberikan output yang bersih bagus yang menyimpan semua manipulasi dengan grep, sed, awk, cut, perl, dll Hal ini tidak akan memberitahu Anda yang antarmuka Anda tertarik, tetapi jika Anda tahu itu, maka berikut memberi Anda IP tanpa cacat lain untuk dibersihkan:

facter ipaddress_eth0 
mc0e
sumber
1

perintah ip

Berikut variasi dalam ip addrperjalanan.

ipmemiliki -oopsi yang memungkinkan meletakkan semua informasi dalam satu baris - ini berguna untuk parsing dengan alat seperti awkatau perl. Dalam kombinasi dengan -4opsi, kita hanya akan melihat alamat IPv4. Dengan demikian, output akan menjadi seperti ini (note - ganti wlan7 dengan antarmuka yang ingin Anda periksa):

$ 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

Seperti yang Anda lihat, alamat IP adalah kolom / kata ke-4 di output. Selebihnya, adalah latihan parsing sederhana melalui alat pilihan Anda. Di sini, saya menggunakan python:

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

Hal yang sama, hanya dengan <<<penggantian string dan perintah di sini$()

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

Secara pribadi, saya menyimpan ini sebagai fungsi yang bagus di ~/.bashrcpengetikan saya jadi kurang dilakukan.

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

Versi Perl dan Ruby sedikit lebih pendek:

$ 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

Jika Anda terbiasa menggunakan alat analisis jaringan, Anda mungkin tahu bahwa untuk mendapatkan alamat ip Anda, yang perlu Anda lakukan adalah menghapus cache browser, mulai menangkap Wireshark pada antarmuka tertentu, dan mencari GETpaket http yang sedang dikirim. Kolom tujuan akan menunjukkan alamat ip Anda

Sergiy Kolodyazhnyy
sumber