Cara Mendapatkan IP Publik Anda di Skrip Bash Linux
Diterbitkan: 2022-11-12Anda akan memerlukan alamat IP eksternal jika ingin terhubung dari jarak jauh ke komputer. Menemukannya secara manual itu mudah, tetapi inilah cara menemukannya dari dalam skrip Linux.
Alamat IP Internal dan Eksternal
Alamat Protokol Internet digunakan untuk mengidentifikasi perangkat di jaringan. Mereka adalah label unik di jaringan, ditetapkan untuk satu perangkat. Jika perangkat lain ingin mengirim data ke perangkat itu, ia dapat melakukannya menggunakan alamat IP-nya.
Modem broadband Anda memiliki router jaringan yang terpasang di dalamnya yang mengarahkan lalu lintas jaringan di sekitar jaringan dari perangkat ke perangkat. Itu juga otoritas lokal yang mengalokasikan alamat IP ke perangkat ketika mereka bergabung dengan jaringan. Itu juga memelihara tabel nama jaringan dan alamat IP. Ini memungkinkan Anda untuk memberikan nama yang bermakna ke komputer di jaringan Anda, karena—untuk manusia—nama lebih mudah digunakan daripada daftar angka.
Perangkat di internet juga memiliki alamat IP. Beberapa dari mereka memiliki nama juga, seperti situs web. Penyedia Layanan Nama Domain mencari nama domain situs web dan menukarnya dengan alamat IP, secara otomatis.
Modem broadband Anda diberikan alamat IP eksternal atau menghadap internet sendiri oleh Penyedia Layanan Internet (ISP) Anda. Terlepas dari jumlah perangkat yang mungkin Anda miliki di rumah yang terhubung ke internet, lalu lintas gabungan mereka semua keluar melalui satu alamat IP itu.
Jika Anda berada di luar kota dan ingin terhubung ke layanan yang Anda jalankan di salah satu komputer di rumah, Anda harus menggunakan alamat IP eksternal untuk melakukannya. Router Anda perlu diatur untuk merutekan permintaan koneksi Anda ke perangkat yang sesuai di dalam rumah Anda, tentu saja.
Kecuali Anda membayar sedikit ekstra ke ISP Anda setiap bulan untuk alamat IP statis , alamat IP eksternal Anda dapat berubah dari waktu ke waktu. Mem-boot ulang modem broadband Anda mungkin menyebabkan Anda mendapatkan alamat IP eksternal yang berbeda. Jadi jika Anda perlu mengetahui alamat IP eksternal Anda, Anda tidak bisa hanya memeriksanya sekali dan menyimpannya. Anda harus menentukan secara berkala apa itu.
Menemukan Alamat IP Eksternal Anda
Untuk menemukan alamat IP eksternal Anda berarti berbicara dengan sesuatu yang berada di luar jaringan Anda. Dengan kata lain, mengakses sesuatu di internet yang dapat memberikan informasi yang kita inginkan. Kita perlu mengintip ke dalam kehampaan dan melihat apa yang melihat ke belakang pada kita. Dan kemudian meminta alamat eksternal kami.
Ada dua cara yang bisa kita lakukan. Salah satu cara melibatkan situs web. Ada banyak situs web yang akan menunjukkan kepada Anda apa alamat IP eksternal Anda, dan banyak informasi lainnya juga. Anda dapat mengakses ini di browser Anda, atau menggunakan alat baris perintah seperti curl
yang dapat membuat permintaan HTTPS.
Cara lainnya adalah dengan menggunakan perintah khusus seperti dig
. Perintah dig
menginterogasi server DNS untuk mengambil informasi.
Menggunakan Peramban
Tentu saja, menggunakan browser bukanlah cara yang ramah skrip untuk mendapatkan alamat IP eksternal Anda. Tetapi melihat situs web yang memberikan layanan itu dapat memberi kita informasi yang berguna. Kami dulu merekomendasikan ip4.me tetapi situsnya belum diperbarui ke HTTPS. Itu masih menggunakan HTTP yang lebih lama dan tidak aman. Situs ini masih berfungsi, tetapi ada alternatif yang lebih baik sekarang.
Situs ifconfig.me menyediakan kumpulan informasi yang baik.
Ini melaporkan IP eksternal kami sebagai 178.238.11.140. Menggulir ke bawah melalui halaman web Anda akan menemukan daftar perintah yang dapat Anda gunakan untuk mengambil informasi dari situs.
Contoh yang mereka berikan semuanya menggunakan curl
untuk menginterogasi situs. Jadi mari kita lihat menggunakan curl
.
Menggunakan ikal
Pada mesin uji kami, Fedora 37 sudah menginstal curl
. Kami perlu menginstalnya di komputer Ubuntu dan Manjaro kami.
Untuk menginstalnya di Ubuntu ketik:
sudo apt install curl
Perintah di Manjaro adalah:
sudo pacman -S curl
Kita dapat mencobanya dengan perintah pertama yang terdaftar di halaman web ifconfig.me
.
ikal ifconfig.me
Alamat IP eksternal kami diambil dan ditampilkan di jendela terminal. Outputnya adalah tulang telanjang. Bahkan tidak ada karakter baris baru yang dicetak setelah string. Prompt perintah berhadapan langsung dengan alamat IP.
Perintah ini berfungsi karena mengembalikan alamat IP adalah tindakan default situs web. Jika tindakan default pernah berubah, kami mungkin mendapatkan hasil berbeda yang dikembalikan kepada kami. Untuk memenuhi ini, kami dapat menentukan bahwa kami meminta alamat IP kami dengan menambahkan pengenal "ip" ke URL.
curl ifconfig.me/ip
Ini mengembalikan alamat IP seperti sebelumnya.
Ini menggambarkan masalah dengan menggunakan situs web sebagai sumber alamat IP Anda. Situs web dapat ditutup atau mereka dapat mengubah cara mereka beroperasi, atau format informasi yang dikembalikan. Perubahan ini akan membuat skrip yang bergantung pada situs ini gagal atau berperilaku tidak terduga.
Menggunakan sumber daya yang bereputasi baik dan dapat diandalkan seperti server DNS adalah cara yang lebih kuat untuk mendapatkan IP eksternal Anda. Untuk query server DNS kita perlu menggunakan perintah dig.
TERKAIT: Apa Itu DNS, dan Haruskah Saya Menggunakan Server DNS Lain?
Menggunakan perintah penggalian
Kali ini, dig
diinstal di Fedora dan Ubuntu, dan kami hanya menginstalnya di Manjaro.
Perintahnya adalah perintah pacman
biasa, jadi tidak ada kejutan di sana, tetapi nama paketnya tidak seperti yang Anda harapkan.
sudo pacman -S bind-tools
Untuk menggunakan dig
untuk menemukan alamat IP eksternal kita, kita perlu mengarahkannya ke server DNS. Kami menggunakan server OpenDNS, yang disediakan oleh Cisco.
Kita perlu menentukan nama server DNS yang ingin kita gunakan, didahului dengan tanda “@.” Kita juga perlu memberi nama tipe record yang ingin kita ambil. Dalam hal ini adalah "myip". Opsi +short
memastikan kami mendapatkan respons yang singkat, dan bukan yang bertele-tele.
gali @resolver1.opendns.com myip.opendns.com +short
Kali ini, alamat IP kami memiliki karakter baris baru yang dicetak setelahnya. Seperti yang akan kita lihat, ini dicetak setelah string alamat IP, ini bukan bagian integral dari string itu sendiri.
TERKAIT: Cara Menggunakan Perintah dig di Linux
Menggunakan Ini dalam Script
Ada banyak alasan mengapa Anda mungkin ingin mengetahui alamat IP eksternal Anda dari dalam skrip. Mungkin Anda memiliki skrip yang memantau apakah alamat IP eksternal Anda telah berubah, dan skrip tersebut akan memberi tahu Anda saat itu terjadi. Atau mungkin server memberi tahu kliennya ketika alamatnya berubah. Apa pun alasan Anda, kami dapat mengimplementasikan perintah yang telah kami gunakan pada baris perintah di dalam skrip dengan cukup mudah.
Untuk mengambil alamat IP eksternal dan menetapkannya ke variabel, kita hanya perlu membungkus perintah di dalam substitusi perintah, $(...)
, dan menetapkannya ke variabel, seperti ini:
variabel=$(...)
Perintah di dalam tanda kurung dieksekusi dan nilai kembalian diganti dengan ekspresi. Dalam contoh ini, perintah disederhanakan menjadi “variable=return value.”
TERKAIT: Cara Bekerja dengan Variabel di Bash
Ini dia dalam sebuah skrip. Kami telah menambahkan opsi -s
(diam) ke perintah curl
untuk mencegahnya melaporkan kemajuan pengambilan data.
#!/bin/bash extaddr=$(curl -s ifconfig.me) echo "Alamat IP eksternal adalah $extaddr (dari cURL)"
Salin skrip ini ke editor, dan simpan sebagai "getex1.sh", dan buat itu dapat dieksekusi dengan perintah chmod
.
chmod +x getex1.sh
Mari kita jalankan skrip dan lihat apa yang kita dapatkan.
./getex1.sh
Untuk melakukan hal yang sama dengan opsi yang lebih kuat untuk menggunakan server DNS daripada situs web, yang perlu kita lakukan hanyalah mengganti perintah curl
dengan perintah dig
.
#!/bin/bash extaddr=$(gali @resolver1.opendns.com myip.opendns.com +short) echo "Alamat IP eksternal adalah $extaddr (dari Dig)"
Simpan ini sebagai skrip "getex2.sh" dan buat itu dapat dieksekusi dengan chmod
.
chmod +x getex2.sh
Mari kita jalankan skrip ini.
./getex2.sh
Kita dapat melihat dari output kedua skrip bahwa meskipun perintah dig
mencetak karakter baris baru pada baris perintah, dalam skrip tidak ada baris baru yang ditambahkan ke variabel extaddr
.
Pergi Untuk Keandalan
Itu selalu lebih aman untuk menggunakan layanan yang diakui yang bereputasi dan memiliki format keluaran yang dapat diprediksi daripada menggunakan situs web "tidak resmi". Seperti semua hal lain di internet, perhatikan baik-baik dari siapa Anda mendapatkan informasi.'
TERKAIT: Bagaimana Membiarkan Skrip Linux Mendeteksi Mereka Berjalan di Mesin Virtual