1. Home
  2. Docs
  3. MikroTik
  4. Script
  5. Cara Import Daftar IP dari URL ke Address-List di MikroTik RouterOS v7

Cara Import Daftar IP dari URL ke Address-List di MikroTik RouterOS v7

Untuk membuat script otomatis di MikroTik RouterOS v7 yang mengambil (fetch) file berisi daftar IP (satu IP per baris) dari dari sumber eksternal (seperti GitHub) lalu mem-parse baris demi baris ke address-list, Kita bisa menggunakan kombinasi /tool fetch, scripting, dan /ip firewall address-list karena mengelola routing table atau rule firewall secara manual bisa sangat memakan waktu, apalagi jika harus menangani ratusan alamat IP yang terus berubah.

Dalam manajemen jaringan modern, kita sering kali perlu memblokir atau merutekan traffic ke daftar ip server tertentu, seperti server DNS over HTTPS (DoH) publik, IP malware, atau IP ads. Karena list ini dinamis, memasukkannya secara manual ke firewall MikroTik tidaklah efektif. Dengan memanfaatkan tool fetch dan scripting internal RouterOS, kita dapat mengambil data dari sumber eksternal (seperti GitHub) dan secara otomatis memasukkan setiap baris IP tersebut ke dalam address-list. Hal ini memastikan security policy jaringan selalu up-to-date.

Prasyarat dan Konsep Dasar

  • Pastikan Anda menggunakan MikroTik RouterOS v7. Meskipun konsep dasarnya mirip dengan v6, ada beberapa penyesuaian pada manajemen memori dan eksekusi script.
  • URL daftar IP siap dipakai: seperti IP server DNS over HTTPS (DoH), IP malware, atau IP ads.
  • Dokumentasi ini menggunakan contoh mengambil daftar IP server DNS over HTTPS (DoH) dari sumber Public IP DNS/DoH Server di Github dan dimasukan ke dalam address-list yang diberi nama ips_doh_server di mikrotik.

Contoh Script Import Daftar IP DNS over HTTPS (DoH) ke Address-List

Berikut adalah contoh script lmport daftar IP DNS over HTTPS (DoH) ke Address-List, contoh script ini Anda bisa gunakan untuk blokir akses DoH via address-list seperti di dokumentasi saya sebelumnya — Paksa User Menggunakan DNS Internal di Mikrotik.

  • Menggunakan Winbox -> buka menu System -> Scripts -> Klik + (Add)
    • Name: Update-IP-DoH-List isi nama script yang nantinya dipanggil Scheduler
    • Dalam kolom source: isi contoh script dibawah ini
# 1. Definisikan variabel URL dan nama Address List
:local url "https://raw.githubusercontent.com/crypt0rr/public-doh-servers/refs/heads/main/ipv4.list";
:local listName "ips_doh_server";

# 2. Hapus address-list lama agar tidak numpuk
/ip firewall address-list remove [find list=$listName];

# 3. Fetch data dari URL dan simpan ke dalam variabel memori
:log info "Mulai mengunduh daftar IP untuk $listName...";
:local result [/tool fetch url=$url as-value output=user];

# 4. Validasi apakah fetch berhasil
:if ($result->"status" = "finished") do={
    :local data ($result->"data");
    :local dataLen [:len $data];
    :local lineStart 0;
    :local lineEnd 0;

    :log info "Download selesai, mulai parsing data...";

    # 5. Looping untuk membaca baris demi baris berdasarkan karakter 'New Line' (\n)
    :while ($lineEnd < $dataLen) do={
        # Cari posisi \n berikutnya
        :set lineEnd [:find $data "\n" $lineStart];
        
        # Jika tidak ada \n lagi, set lineEnd ke akhir data
        :if ([:type $lineEnd] = "nil") do={
            :set lineEnd $dataLen;
        }

        # Ekstrak string per baris
        :local line [:pick $data $lineStart $lineEnd];
        
        # Bersihkan karakter Carriage Return (\r) jika file format Windows/CRLF
        :if ([:pick $line ([:len $line] - 1)] = "\r") do={
            :set line [:pick $line 0 ([:len $line] - 1)];
        }

        # 6. Masukkan IP ke address-list jika panjang karakter sesuai (minimal IP '1.1.1.1' = 7 karakter)
        :if ([:len $line] >= 7) do={
            :do {
                /ip firewall address-list add list=$listName address=$line;
            } on-error={
                # Log jika baris gagal ditambahkan (misal format bukan IP yang valid)
                :log warning "Gagal menambahkan ke address-list: $line";
            }
        }
        
        # Pindahkan pointer start ke baris berikutnya
        :set lineStart ($lineEnd + 1);
    }
    :log info "Proses update Address List $listName selesai.";
} else={
    :log error "Gagal download URL $url";
}

Gunakan script ini jika daftar IP tidak terlalu banyak Jika memiliki ribuan baris IP, script berbasis memori ini bisa membebani CPU router Anda. Karena parameter output=user as-value: menyimpan langsung data teks dari GitHub ke dalam variable lokal/memori tanpa perlu download file ke storage internal (Flash/NAND) router.

Buat Scheduler

Anda bisa membuat Scheduler Agar script ini berjalan otomatis, misalnya update setiap 24 jam.

/system scheduler
add name="Schedule-Update-IP-DoH" interval=1d on-event="Update-IP-DoH-List" start-time=02:00:00

Verifikasi dan Pengujian

Untuk memastikan script Anda berjalan lancar:

  1. Buka menu Log di Winbox. Anda seharusnya melihat pesan: "Mulai mengunduh..." diikuti dengan "Proses update Address List... selesai."
  2. Buka IP -> Firewall -> Address Lists. Anda akan melihat list IP address baru telah masuk dengan list name ips_doh_server.

Frequently Asked Questions (FAQ)

Kok router saya jadi terasa lambat saat script dijalanin ?

Parsing string (looping) langsung dari memori (as-value) dapat menguras sumber daya CPU, apalagi jika daftar IP berisi puluhan ribu baris. Pada perangkat MikroTik berspesifikasi rendah seperti hAP lite, hal ini berpotensi memicu lonjakan Load CPU (CPU spike).

Bagaimana jika file URL-nya sangat besar ?

Metode as-value memiliki batasan ukuran (biasanya sekitar 64KB – 1MB tergantung memori). Jika daftar IP terlalu masif, best practice-nya adalah download sebagai file (output=file), lalu membacanya secara iteratif

Kesimpulan

Dengan memanfaatkan /tool fetch dan scripting Mikrotik, Kita bisa automatisasi proses pengambilan daftar IP dari sumber eksternal seperti GitHub dan ditambahkan firewall address-list secara dinamis di MikroTik v7. Solusi ini sangat cocok untuk skenario seperti blokir public DoH, asalkan ukuran list sesuai kemampuan router, jika Anda memiliki ribuan baris IP, skrip berbasis memori ini bisa membebani CPU router Anda.

Tags ,
guest

0 Comments
Oldest
Newest Most Voted