Pendahuluan:
Penambahan aturan di Mikrotik dapat dilakukan menggunakan beberapa metode diantaranya menggunakan Winbox, SSH atau Telnet. Kita bisa menambahkan aturan-aturan baru di Mikrotik menggunakan aplikasi PHP. Tujuannya untuk memudahkan administrator menambah aturan di mikrotik berdasarkan SOP di institusi dan nantinya bisa dilakukan otomatis.
Prerequisities:
- Pastikan Mikrotik membuka layanan API dan tidak ada rule input untuk user masuk lewat API. Pilih IP > Service menggunakan winbox seperti pada gambar:
Implementation
- Contoh 1: Berikut contoh sederhana membuat aturan simple queue menggunakan PHP:
<?php
require('routeros_api.class.php');
// Ubah sesuai setting mikrotik Anda
define('MIKROTIK_IP', '192.168.0.1');
define('MIKROTIK_USERNAME', 'admin');
define('MIKROTIK_PASSWORD', '');
define('SERVER', 'all');
define('PROFILE', 'default');
$API = new routeros_api();
// Aktifkan debug
// $API->debug = true;
$nama = "Andi";
$ip = "192.168.1.2";
$limit = "50000/500000";
if ($API->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
$API->write('/queue/simple/add', false);
$API->write('=name='.$nama,false);
$API->write('=target-addresses='.$ip, false);
$API->write('=max-limit='.$limit, false);
$API->write('=disabled=no');
$ARRAY = $API->read();
//print_r($ARRAY);
}
$API->disconnect();
echo "<p>Aturan telah ditambahkan..<br>";
?>
-----------------------------------------------------------
- Contoh 2: Berikut contoh sederhana melihat output torch:
<?php
require('routeros_api.class.php');
// Ubah sesuai setting mikrotik Anda
define('MIKROTIK_IP', '192.168.1.1');
define('MIKROTIK_USERNAME', 'admin');
define('MIKROTIK_PASSWORD', '12345');
define('SERVER', 'all');
define('PROFILE', 'default');
$src_address = "192.168.1.2";
$API = new routeros_api();
// Aktifkan debug
// $API->debug = true;
if ($API->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
$API->write('/tool/torch', false);
$API->write('=src-address='.$src_address, false);
$API->write('=duration=2', false);
$API->write('=interface=ether2-lokal', false);
$ARRAY = $API->read();
//print_r($ARRAY[$no]);
echo "<p>";
$source = $ARRAY[0]['src-address'];
$tx = $ARRAY[0]['tx'];
$rx = $ARRAY[0]['rx'];
echo "source = $source<br>";
echo "tx = $tx<br>";
echo "rx = $rx<br>";
echo "-------------------------------------<p>";
}
$API->disconnect();
}
echo "<p>Selesai..<br>";
?>
-------------------------------------------------------------
- Contoh 3: Menambah aturan NAT
<?php
require('routeros_api.class.php');
// Ubah sesuai setting mikrotik Anda
define('MIKROTIK_IP', '192.168.1.1');
define('MIKROTIK_USERNAME', 'admin');
define('MIKROTIK_PASSWORD', '12345');
define('SERVER', 'all');
define('PROFILE', 'default');
$API = new routeros_api();
// Aktifkan debug
$API->debug = true;
if ($API->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
$API->write('/ip/firewall/nat/add', false);
$API->write('=chain=srcnat',false);
$API->write('=src-address=192.168.90.0/24',false);
$API->write('=action=masquerade', false);
$API->write('=disabled=yes');
$ARRAY = $API->read();
}
$API->disconnect();
echo "<p>Selesai..<br>";
?>
Keterangan:
Script diatas digunakan untuk menambah satu aturan NAT yang klo di CLI (Command Line Interface) nulisnya:
ip firewall nat add chain=srcnat src-address=192.168.90.0/
24 action=masquerade disabled=yes
Contoh2 lainnya bisa dilihat di:
http://wiki.mikrotik.com/wiki/API_PHP_class
kalau di taruh di server hosting bagaimana mas cara koneksinya ke mikrotik lokal
Hmm, aku belum pernah nyoba kalo server hosting. Tapi kalo server dedicated atau VPS, aku pernah nyoba. Yang penting, mikrotik tidak melakukan bloking input di firewall nya untuk port 8728. Artinya, server VPS yang akan "meremote" MT via API "diijinkan" oleh MT tersebut.
Masalahnya: untuk apa? Bisa dikasih contoh implementasinya? Karena sedikit banyak, feature ini bisa menjadi bumerang keamanan untuk MT itu sendiri atau server2 dibelakang router tersebut.
Hartuno Sejati, saya sudah d set dst-nat dari publik ke ip mikrotik dg port 8728. Tetapi tetap tidak bisa. Mohon penjelasannya. Tq
@Alfi: Maaf baru balas. Kenapa tidak langsung saja ke port 8728 mas? Maksudnya kenapa harus pakai dst-nat? Bisa langsung koq.
kalo mau menambahkan limit uptime pada user tertentu gimana caranya ya bos? terimakasih
mas, bisa dipake buat manajemen bandwith kah? sorry masih newbe nih
Bisa. Manajemen bandwidth dapat dilakukan lewat queue (simple maupun tree). Jika pakai simple, perintah di terminal misalnya: /queue simple add name=komp1 target-addresses=192.168.1.1/32 limit-at=100k/500k disabled=no tinggal dirubah menjadi perintah api.
mas, saya bertanya
mas, saya bertanya
mau tanya, tapi kayaknya yg punya blog sibuk dengan oprekan lain, ketinggalan tema deh saya, ;3
klo mau menampilkan wrieless gmna ya?
klo mau menampilkan wrieless gmna ya?
Commands examples (each string in each field 1,2,3, ...):
1: /interface/ethernet/getall
1: /interface/wireless/registration-table/print 2: =stats=
1: /interface/monitor-traffic 2: =interface=wlan1
1: /ppp/active/print 2: =stats= 3: =without-paging=
1: /queue/tree/print 2: =stats=
1: /interface/wireless/monitor 2: =numbers=wlan1 3: =once=
1: /tool/ping 2: =address=10.0.0.222
-------------------------------------------------------------------
/ip/route/print
/ip/address/print
/system/shutdown
/system/reboot
/system/resource/print
/routing/ospf/interface/print
/interface/wireless/registration-table/remove=.id=*7
mas mw tanya, bisa gk kalo SRC-ADDRESS nya di gantikan dengan remote addres, di tentuin dari client yg ngeremote API nya, saya masih belajar, dan masih bingung mas? mohon bantuannya, berikut script yg saya pakai
debug = true;
if ($API->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
$API->write('/ip/firewall/address-list/add', false);
$API->write('=list="Proyektor CR"',false);
$API->write('=address=.$ip',false);
$API->write('=disabled=yes');
$ARRAY = $API->read();
}
$API->disconnect();
echo "
Selesai..
";
?>
eh udah bisa gan, terimakasih blognya sangat membantu
masih aktif gak gan, mau nanya dong
mas, saya nyoba tapi knpa gagal konek terus ya? saya aksesnya dr web server ke mikrotik. gmna caranya ya mas? mohon bantuannya
Mas, cara get spesifik interface gimana ya command nya ?
mas tanya kl cli seperti ini, kl ditulis api gmn?
/caps-man configuration
add name= "wifi xx xx " mode=ap ssid= "xx xx" country=indonesia3
sya sudah coba masih salah ..
$API->comm("/caps-man/configuration/add", array(
"name" => "wifi ".$ssid_location,
"mode" => "ap",
"ssid" => $ssid_location,
"country" => "indonesia3",
"rx-chains" => "0,1,2,3",
"tx-chains" => "0,1,2,3",
"datapath" => "customer internet wifi ".$ssid_location,
"datapath.client-to-client-forwarding" => "yes",
"hide-ssid" => "no",
"security" => "customer wifi ".$ssid_location
));