Autonomous System atau yang disingkat AS adalah suatu kelompok yang terdiri dari satu atau lebih IP Prefix yang terkoneksi yang dijalankan oleh satu atau lebih operator jaringan dibawah satu kebijakan routing yang didefinisikan dengan jelas.
Sebagai pemilik website mungkin kita ingin menerapkan kebijakan kebijakan kebijakan tertentu misalnya hanya ASN ASN tertentu yang bisa mengakses website.
Kita juga bisa membuat tools website untuk mengecek AS Number client. Pada artikel ini tkjpedia akan mencoba menggunakan GeoLite2db gratisan pada PHP.
GeoLite2 merupakan database geolokasi IP Address yang tersedia secara gratis. Ada beberapa metode untuk mengakses nya, bisa menggunakan web service atau bisa juga menggunakan file database. Kali ini kita coba dulu menggunakan database.
Prasyarat
- Memiliki akun maxmind
Jika belum punya silahkan daftar dulu pada halaman berikut: https://www.maxmind.com/en/geolite2/signup - Sudah terinstall PHP dan Webserver, disini tkjpedia menggunakan xampp pada windows
- Sudah menginstall composer
- Mengerti dasar dasar PHP
Opsional
- Jika ingin digunakan untuk umum, kalian bisa menyiapkan hosting / vps / ip publik dan server untuk ngehost file php yang nanti kita buat.
Langkah Langkah Menggunakan GeoLite2 Database
Menyiapkan Database
Unduh GeoLite2 Database ASN pada halaman akun
Siapkan folder dan ekstrak file GeoLite2 Database yang tadi sudah kita unduh.
Menyiapkan File PHP
Install dependensi geoip2 menggunakan composer
Jika belum install composer, bisa ikuti langkah langkah pada artikel berikut
PS D:\belajar\geolite2\asn> composer require geoip2/geoip2:~2.0 ./composer.json has been created Running composer update geoip2/geoip2 Loading composer repositories with package information Updating dependencies Lock file operations: 4 installs, 0 updates, 0 removals - Locking composer/ca-bundle (1.3.1) - Locking geoip2/geoip2 (v2.12.2) - Locking maxmind-db/reader (v1.11.0) - Locking maxmind/web-service-common (v0.8.1) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 4 installs, 0 updates, 0 removals - Installing composer/ca-bundle (1.3.1): Extracting archive - Installing maxmind/web-service-common (v0.8.1): Extracting archive - Installing maxmind-db/reader (v1.11.0): Extracting archive - Installing geoip2/geoip2 (v2.12.2): Extracting archive 2 package suggestions were added by new dependencies, use `composer suggest` to see details. Generating autoload files 1 package you are using is looking for funding. Use the `composer fund` command to find out more! PS D:\belajar\geolite2\asn>
Buat file php menggunakan teks editor kesayangan kalian, disini tkjpedia menggunakan vscode.
<?php require_once 'vendor/autoload.php'; use GeoIp2\Database\Reader; // This creates the Reader object, which should be reused across // lookups. $reader = new Reader('GeoLite2-ASN.mmdb'); // Replace "city" with the appropriate method for your database, e.g., // "country". $record = $reader->asn('95.111.196.27'); var_dump($record);
Lalu coba jalankan menggunakan terminal
Maka akan terbaca untuk IP 95.111.196.27 merupakan ASN dari Upcloud. Kalian bisa mencoba IP lainnya.
Jika kita sudah mengetahui parameter parameter nya maka bisa kita lakukan print saja.
Ganti var_dump tadi dengan print
print("AS Number : " . $record->autonomousSystemNumber . "\n"); print("AS Organization : " . $record->autonomousSystemOrganization . "\n"); print("IP Address : " . $record->ipAddress . "\n"); print("IP Network : " . $record->network . "\n");
Coba lagi menggunakan terminal
Coba menggunakan browser dengan menambah html tag br untuk menambah spasi
print("AS Number : " . $record->autonomousSystemNumber . "\n"); echo "</br>"; print("AS Organization : " . $record->autonomousSystemOrganization . "\n"); echo "</br>"; print("IP Address : " . $record->ipAddress . "\n"); echo "</br>"; print("IP Network : " . $record->network . "\n");
Gimana agar dinamis, IP Address sesuai client yang mengakses
Sesuaikan $record = $reader->asn($ip); pada kode dibawah ini dan tambahkan $ip = $_SERVER[‘REMOTE_ADDR’]; untuk mengambil ip client.
<?php require_once 'vendor/autoload.php'; use GeoIp2\Database\Reader; // This creates the Reader object, which should be reused across // lookups. $reader = new Reader('GeoLite2-ASN.mmdb'); $ip = $_SERVER['REMOTE_ADDR']; // Replace "city" with the appropriate method for your database, e.g., // "country". $record = $reader->asn($ip); print("AS Number : " . $record->autonomousSystemNumber . "\n"); echo "</br>"; print("AS Organization : " . $record->autonomousSystemOrganization . "\n"); echo "</br>"; print("IP Address : " . $record->ipAddress . "\n"); echo "</br>"; print("IP Network : " . $record->network . "\n");
Ternyata, saat kita akses melalui browser malah error, wah…
Ini disebabkan karena IP address 127.0.0.1 atau localhost tidak ada di dalam database dari GeoLite2.
Solusinya bisa coba deploy ke hosting / vps dan kita coba akses
Menyiapkan Hosting
Disini saya sudah menyiapkan hosting nya, pada saat artikel ini dibuat bisa diakses melalui ipv4.tkjpedia.com
Rename tes.php menjadi index.php kemudian compress menjadi .zip dan upload ke hosting untuk di ekstrak pada folder publik
Pengujian
Saya coba tes menggunakan wifi di rumah hasilnya seperti ini
Ketika menggunakan tethering hotspot hasilnya seperti ini
Selamat mencobaaa…