Jika koneksi Anda NAT'ed, apakah mungkin untuk melihat alamat IP eksternal Anda tanpa membuat permintaan web keluar?
Semua OS (Windows, Linux, dll.) Baik-baik saja.
Jika koneksi Anda NAT'ed, apakah mungkin untuk melihat alamat IP eksternal Anda tanpa membuat permintaan web keluar?
Semua OS (Windows, Linux, dll.) Baik-baik saja.
Jawaban:
Jika komputer Anda berada di belakang NAT, Anda dapat melihat alamat IP eksternal router Anda, tetapi Anda memerlukan akses administratif ke router tersebut.
Perute mengetahui alamat IP eksternal Anda, jadi dengan mengakses halaman konfigurasinya Anda dapat menemukan alamat IP tersebut. Cara ini tidak memerlukan alat khusus apa pun kecuali browser Web.
Protokol lain yang memerlukan alat untuk mendapatkan informasi:
Seperti yang diuji oleh user @dirkt, semua metode hanya berfungsi dengan IPv4 (kecuali mungkin untuk PCP).
WANIPConn1/GetExternalIPAddress
, dan itu baru saja berhasil mengembalikan alamat yang benar.
Ada beberapa cara yang bekerja dengan beberapa NAT tetapi tidak ada yang dijamin bekerja di mana-mana.
Saya percaya UPnP, NAT-PMP, dan PCP (Universal Plug And Play, Protokol Port Port NAT, dan Protokol Kontrol Port) semua memiliki cara untuk bertanya gateway NAT yang sesuai apa alamat publiknya, tetapi tidak semua NAT mendukung protokol ini. Dukungan lebih umum di router gerbang rumah daripada di solusi NAT tingkat perusahaan atau operator.
Ketika Anda menemukan diri Anda berada di belakang sebuah NAT, satu-satunya cara pasti untuk melihat alamat IP publik yang digunakan untuk menerjemahkan lalu lintas Anda adalah dengan mengirimkan lalu lintas keluar ke sejumlah host publik yang akan melaporkan kembali, dengan cara yang tidak akan diterjemahkan oleh NAT, apa alamat tampaknya berasal dari lalu lintas Anda. Menggunakan layanan berbasis web adalah satu cara, tetapi Anda juga bisa melakukannya dengan, katakanlah, SSH menjadi contoh server cloud dan melihat dari mana sshd
kata sesi SSH Anda berasal.
Anda dapat menggunakan permintaan DNS, yang saya yakin tidak akan termasuk dalam kategori "permintaan web":
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. Saya menemukan perintah di sini: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
nsslookup
perintah gagal untuk saya. Saya mendapatkan Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
karena ini bukan pada Windows. Poin bagus tentang myaddr
Google, saya tidak menyadarinya! Saya kira nslookup
setara Windows akannslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
versi IP mana yang akan digunakan untuk transportasi, tetapi cara OpenDNS melakukan ini berarti Anda harus melakukannya. Tanpa itu Anda harus memprediksi versi IP mana yang nslookup
akan digunakan untuk transportasi dan meminta A atau AAAA yang sesuai. Jika Anda terjebak dengan nslookup
Anda dapat menggunakan penyedia lain seperti Google. Namun Anda hanya mendapatkan satu versi protokol dalam respons dan Anda tidak dapat memilih yang mana.
nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
dan itu memang berhasil. Tetapi jika saya memiliki IPv4 dan IPv6, saya tidak akan memilih yang mana dari mereka yang dapat saya lihat. Kemungkinan besar itu akan menunjukkan kepada saya alamat IPv6, dan kemungkinan besar saya menggunakannya karena saya ingin tahu alamat IPv4 dari NAT. Untuk menyiasatinya seseorang harus menggunakan layanan yang memiliki nama IPv4 saja dan nama IPv6 saja, yang juga akan membahas masalah NAT64.
Saya ingin menambahkan satu poin ke jawaban yang sudah ada.
Ini juga tergantung pada kompleksitas jaringan. Ada kemungkinan bahwa komputer Anda terletak di dalam jaringan yang memiliki beberapa alamat IP eksternal dan router di suatu tempat di atas garis mengirimkan lalu lintas ke Internet berdasarkan beberapa kriteria: misalnya, alamat IP tujuan, atau waktu hari (mungkin menjadi satu saluran uplink lebih murah di malam hari atau karena alasan lain).
Jadi, untuk menjadi lengkap, gagasan "alamat IP eksternal" mungkin memerlukan menentukan titik tujuan di mana alamat Anda menjadi eksternal.
Dalam contoh di bawah ini Router #2
dapat melakukan NAT dan mengirim lalu lintas ke uplink dan host penerima dapat melihat alamat IP eksternal yang berbeda untuk Host
.
Atau bisa jadi itu tujuan tertentu (misalnya host1.example.com
) selalu rute melalui Uplink A
, dan tuan rumah host2.example.com
selalu rute melalui Uplink B
. Jadi, alamat IP eksternal Anda seperti yang dilihat oleh host-host itu akan berbeda, asalkan itu Uplink A
dan Uplink B
ISP yang berbeda.
Uplink A Uplink B
------------- -------------
| |
| |
| 192.168.1.1 192.168.50.50 |
| ----------- |
|---------------|Router #2|---------------|
-----------
| 192.168.100.1
|
| 192.168.100.2
-----------
|Router #1|
-----------
| 192.168.200.1
|
| 192.168.200.2
-----------
| Host |
-----------
Jadi, mengirimkan lalu lintas keluar akan memungkinkan untuk mendapatkan hasil yang lebih andal.
Anda dapat menggunakan DNS daripada HTTP. Misalnya, Anda dapat menggunakan:
dig +short TXT o-o.myaddr.l.google.com
Ini akan menampilkan alamat unicast dari server DNS yang Anda gunakan, dan jika mendukung EDNS, itu juga akan menampilkan alamat IP Anda, meskipun mungkin terpotong.
Untuk mendapatkan alamat IP lengkap Anda, Anda dapat mem-bypass server DNS lokal Anda dan mengirim permintaan di atas langsung ke ns {1,2,3,4} .google.com
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
Jika Anda ingin melihat alamat IP Anda dalam versi protokol tertentu, Anda dapat menggunakan -6
dan -4
:
dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com
Anda juga dapat menggunakan OpenDNS jika diinginkan. OpenDNS tidak menggunakan catatan TXT untuk ini, melainkan catatan A dan AAAA, jadi Anda harus menentukan versi protokol yang Anda cari:
dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com
Perhatikan bahwa jika traffic Anda melalui terjemahan protokol Anda mungkin mendapatkan hasil yang berbeda atau tidak sama sekali. Menguji dari mesin di belakang NAT64 saya bisa melihat alamat IPv6 saya dengan perintah di atas tetapi tidak alamat IPv4 dari NAT64.
Jawaban ini didasarkan pada sumber-sumber ini 1 2 3 dan sedikit riset saya sendiri.
Web umumnya mengacu pada HTTP, jika itu adalah makna pertanyaan Anda, maka misalnya, Anda dapat menggunakan STUN ( Artikel Wikipedia ) yang merupakan singkatan dari "Session Traversal Utilities for NAT".
Sekarang karena telah disorot dalam komentar, Anda mungkin memiliki beberapa IP eksternal. Juga karena koneksi nirkabel menjadi lebih umum (hal 4G), bukan tidak mungkin alamat IP yang dilaporkan oleh router Anda tidak akan menjadi publik. Saya bahkan telah bertemu skenario tentang koneksi serat optik di beberapa negara, di mana ISP akan memberikan router lokal IP pribadi, yang akan mendapatkan 1: 1 diterjemahkan ke IP publik nanti ketika meninggalkan jaringan mereka.
Jadi, jika pertanyaan Anda adalah "bisakah saya menemukan IP publik saya tanpa mengirim paket dari jaringan saya", Anda MUNGKIN dalam konteks Anda, tetapi tidak ada solusi bukti 100%.