Apakah mungkin untuk melihat alamat IP eksternal saya tanpa membuat permintaan web keluar?

21

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.

Axel Persinger
sumber
7
Apakah Anda hanya mencoba menghindari HTTP, atau Anda mencoba menghindari mengirimkan lalu lintas keluar sama sekali? Satu-satunya solusi universal melibatkan pengiriman semacam lalu lintas keluar, tetapi tidak harus berupa HTTP.
Spiff
Ini lebih dari sekadar hipotesis, saya tidak ingin membuat lalu lintas keluar sama sekali.
Axel Persinger
2
Apakah Anda mengatakan bahwa jaringan / router Anda berada di belakang pengaturan NAT tingkat Perusahaan (mis. Mendapatkan alamat IP pribadi dari ISP Anda)? Jika demikian, tidak ada cara saya berpikir bahwa Anda dapat menemukan alamat IP publik tanpa sesuatu menjangkau jaringan publik dan pada dasarnya "melihat ke belakang" seperti whatsmyip.com atau layanan serupa.
acejavelin
peretasan yang biasa saya lakukan adalah memeriksa dengan router saya - saya sebenarnya memiliki skrip yang benar-benar kotor untuk mengikisnya karena karena beberapa alasan sebagian besar layanan berbasis web tidak akan mendeteksi IP saya dengan benar. ISP saya benar-benar menyenangkan.
Journeyman Geek
2
Anda dapat mencoba menelepon ISP Anda dengan detail pelanggan Anda. Tidak memerlukan koneksi internet dan tidak ada komputer.
Thomas

Jawaban:

24

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).

harrymc
sumber
@NicHartley hiperbola tentu saja dapat menjadi bagian dari sarkasme, tetapi sarkasme lebih merupakan nada atau niat untuk mengejek, yang keduanya disampaikan secara berbeda dalam bentuk teks daripada secara langsung. Yang mengatakan, sementara protokol apa pun harus menggunakan IP untuk menentukan alamat IP adalah persyaratan yang jelas dan ya tautologis (karena Anda tidak dapat menentukan apa yang tidak Anda gunakan), tetapi protokol yang dibangun di atas IP masih merupakan protokol yang berbeda dan ada secara teoritis banyak orang dapat menggunakan yang mencapai tujuan itu. Poin dari Lightness adalah untuk melawan klaim tentang persyaratan permintaan web.
menyamakan
2
"Cara lain akan membutuhkan membuat permintaan Web eksternal" Web (yaitu HTTP) tidak diperlukan, tetapi mungkin lebih mudah untuk memahami
menyamakan
1
Seperti disebutkan dalam jawaban lain, uPnP, NAT-PMP dan PCP adalah cara berbeda untuk mendapatkan informasi dari router selain mengakses halaman konfigurasinya. Cara Anda mengutarakannya, sepertinya "selain mengakses halaman konfigurasi, cara lain akan membutuhkan membuat permintaan web". Benar adalah "selain mendapatkan informasi dari router, cara lain akan memerlukan dan upaya koneksi keluar" (tidak perlu permintaan web).
dirkt
@dirkt: Untuk UPnP saya tidak yakin; NAT-PMP Saya pikir hanya berfungsi dengan IPv4; PCP pada jaringan IPv6 akan mengembalikan awalan IPv6 dan dapat melakukan lebih banyak lagi tetapi ini biasanya tidak diterapkan pada router komersial.
harrymc
1
@harrymc: Titik akhir layanan UPnP untuk Fritzbox saya adalah WANIPConn1/GetExternalIPAddress, dan itu baru saja berhasil mengembalikan alamat yang benar.
dirkt
12

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 sshdkata sesi SSH Anda berasal.

Spiff
sumber
8
UPnP dll. Dapat memberikan hasil yang salah jika sistem berada di belakang NAT ganda (atau lebih).
user71659
@ user71659 Saya bertanya-tanya apakah ada alamat anycast yang secara otomatis akan dialihkan ke NAT terluar sehingga dapat digunakan untuk permintaan semacam itu.
kasperd
1
@kasperd Setiap NAT menganggapnya sebagai NAT terluar. Tentu saja ada IP yang secara otomatis dialihkan ke luar semua NAT. Itu disebut IP publik.
user253751
1
@ user20574 Tidak, NATs tidak berpikiran seperti itu, kebanyakan hanya tidak peduli. Jika alamat broadcast apa pun harus ditentukan, standar harus juga menentukan kapan NAT menetapkan IP itu sendiri dan kapan tidak. Jawabannya adalah jika IP eksternal ada di RFC 1918 atau RFC 6598, NAT tidak akan menetapkan alamat broadcast mana pun untuk dirinya sendiri.
kasperd
8

Anda dapat menggunakan permintaan DNS, yang saya yakin tidak akan termasuk dalam kategori "permintaan web":

nslookup myip.opendns.com resolver1.opendns.com
Mehrdad
sumber
1
Anda juga bisa menggunakan 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/…
kasperd
Anda nsslookupperintah gagal untuk saya. Saya mendapatkan Server: resolver1.opendns.com Address: 2620:119:35::35#53 ** server can't find myip.opendns.com: NXDOMAIN
kasperd
1
@kasperd: Ini hanya berfungsi untuk IPv4, maaf. Saya menghindari digkarena ini bukan pada Windows. Poin bagus tentang myaddrGoogle, saya tidak menyadarinya! Saya kira nslookupsetara Windows akannslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
Mehrdad
Saya menjalankan perintah itu pada mesin yang memiliki IPv4 dan IPv6, jadi jika benar-benar mendukung IPv4 seharusnya berfungsi. Masalahnya tampaknya Anda tidak dapat menginstruksikan nslookupversi 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 nslookupakan digunakan untuk transportasi dan meminta A atau AAAA yang sesuai. Jika Anda terjebak dengan nslookupAnda dapat menggunakan penyedia lain seperti Google. Namun Anda hanya mendapatkan satu versi protokol dalam respons dan Anda tidak dapat memilih yang mana.
kasperd
Saya diuji 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.
kasperd
7

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 #2dapat 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.comselalu rute melalui Uplink B. Jadi, alamat IP eksternal Anda seperti yang dilihat oleh host-host itu akan berbeda, asalkan itu Uplink Adan Uplink BISP 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.

VL-80
sumber
4

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 -6dan -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.

kasperd
sumber
2

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%.

pengguna1532080
sumber