:local newDynamics value=[/ip dhcp-server lease find dynamic=yes];
:local newList value="";
:foreach i in=[$newDynamics] do={
:local dynamicIP [/ip dhcp-server lease get $i address];
:local dynamicMAC [/ip dhcp-server lease get $i mac-address];
:local dynamicHOST [/ip dhcp-server lease get $i host-name];
:if ($dynamicHOST~"(Andro|andro|Redmi|redmi|Vivo|vivo|Iphone|iphone|Galaxy|galaxy|BLACKBER)") do={
/ip firewall address-list add list=cidr_hs_office address=$dynamicIP comment=$dynamicHOST
:log warning "$dynamicIP added"
}
}
Friday, November 16, 2018
Tangkap Lease Android DHCP Mikrotik
sebagai catatan untuk menangkap gadget yang berada di dhcp-server leases mikrotik kemudian ditambahkan ke addresslist. terserah mau di mark routing atau bagaimana yg jelas sudah masuk di addresslist
Saturday, November 3, 2018
Script Mikrotik Alarm Telegram Deteksi Ethernet
:global listrik
:global limitmsgon
:global limitmsgoff
/in ethernet monitor ether1.MJGD once do={
:global indikator $status
:if ($indikator = "link-ok") do={:set listrik 1} else={:set listrik 0}
}
:local router [/system identity get name]
:local time [/system clock get time]
:local date [/system clock get date]
:local voltage [/system health get voltage]
:local tegangan (. [:pick $voltage 0 2] . "," . [:pick $voltage 2 3] ." volt")
:local indication "PLN NYALA"
:local indicatioff "PLN MATI"
:local msgon ("[ $router ]%0A" . $indication . " pada : %0A" . $time .", ".$date."%0A"."voltase saat ini $tegangan%0A")
:local msgoff ("[ $router ]%0A" . $indicatioff . " pada : %0A" . $time .", ".$date."%0A"."voltase saat ini $tegangan%0A")
# reset counter
:if ($listrik =1) do={:set limitmsgoff 0;:set limitmsgon ($limitmsgon +1)}
:if ($listrik =0 && $limitmsgon >=5) do={:set limitmsgon 0}
# start pesan listrik nyala
:if (($listrik =1) && ($limitmsgon =2)) do={
/tool fetch url="https://api.telegram.org/bot380992034:AAGn69QpFDuLSOQd3E3JtI5nhfUmgKlKmkls/sendMessage?chat_id=-203xxxxxx&text=$msgon" keep-result=no
}
# start pesan listrik mati
:if ($listrik =0 && $limitmsgoff <5 ) do={
/tool fetch url="https://api.telegram.org/bot380992034:AAGn69QpFDuLSOQd3E3JtI5nhfUmgKlKmkls/sendMessage?chat_id=-203xxxxxx&text=$msgoff" keep-result=no
:set limitmsgoff ($limitmsgoff +1)
}
Tuesday, October 23, 2018
Audio Transmitter With OpenBroadcast Tools
apt install git gstreamer1.0-plugins-base gstreamer1.0-plugins-good gir1.2-gstreamer-1.0 python-gst-1.0 python-redis python-gi python-setuptools -yapt install git python-gst0.10 python-redis gstreamer0.10-plugins-base gstreamer0.10-plugins-bad gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-tools python-gobject python-gobject-2 gstreamer0.10-alsa python-setuptools -yapt install gstreamer-tools -yapt install redis-server -yapt install pulseaudio -yapt install python-pip -yapt install python3-gi -ysed -i.bak 's/bind 127.*/bind 0.0.0.0/' /etc/redis/redis.conf/etc/init.d/redis-server restart#pip install --user --upgrade setuptools wheelcd /usr/local/lib/python2.7/dist-packageswget https://pypi.python.org/packages/source/O/OpenOB/OpenOB-3.2.0.tar.gz# copykan openob ke existing direktori openob# lalu# openob 192.168.242.11 node-fm test-link tx 192.168.15.10
Sunday, August 26, 2018
Generate Netwatch Mikrotik
Yeah, kali ini saya akan share script untuk me-generate netwatch. Hanya untuk catatan pribadi aja sih
langsung saja
:for x from=2 to=254 step=8 do={/tool netwatch add host="10.10.40.$x" interval=00:00:03 down-script=":local client [/tool netwatch get [/tool netwatch find host=\"10.10.40.$x\"] comment ];\n\n :log error \"\$client down\";\n\n /system script run telolet" up-script=":local client [/tool netwatch get [/tool netwatch find host=\"10.10.40.$x\"] comment ];\n\n :log warning \"\$client up\";\n\n /system script run up"}
Saturday, June 2, 2018
make rules with address-list mikrotik
:foreach i in=[/ip firewall address-list find list=350 ] do={
:local addrlist350 [/ip firewall address-list get $i address ]
:log warning $addrlist350
/ip fire mangle add chain=postrouting dst-address=$addrlist350 connection-mark=ggc_conn action=mark-packet new-packet-mark="ggc_$user" comment=$user
}
Friday, June 1, 2018
pppoe-static mikrotik
tambahkan script di scheduler dengan run startup
:if ([:len ($000 || $150 || $200 || $250 || $300 || $350)] = 0) do={
:global 000 10.8.8.0/27
:global 150 10.8.8.32/27
:global 200 10.8.8.64/26
:global 250 10.8.8.128/26
:global 300 10.8.8.192/27
:global 350 10.8.8.224/27
}
kemudian bikin pool-ip
/ip pool
add name=000 ranges=10.8.8.2-10.8.8.30
add name=150 ranges=10.8.8.33-10.8.8.62
add name=200 ranges=10.8.8.65-10.8.8.126
add name=250 ranges=10.8.8.129-10.8.8.191
add name=300 ranges=10.8.8.193-10.8.8.222
add name=350 ranges=10.8.8.225-10.8.8.254
tambahkan di profile-pppoe on login
:local parent PPPOE
:local ippppoe [/ip address get [/ip address find interface=$user] network]
:local ipclient
:local iprouter [/ip address get [find comment=$user] address ]
:for i from=( [:len $iprouter] - 1) to=0 do={
:if ( [:pick $iprouter $i] = "/") do={
:set $ipclient ([:pick $iprouter 0 $i] +1)
}
}
:if ($ippppoe in $suspend) do={
:if ([:len [/ip firewall address-list find list=cidr_suspend comment=$user]] = 0 ) do={
/ip firewall address-list add address=$ipclient list=cidr_suspend comment=$user
}
/queue simple add target=$ipclient name=$user parent=$parent max-limit=5000000/5000000
}
:if ($ippppoe in $150) do={
/queue simple add target=$ipclient name=$user parent=$parent max-limit=2000000/2000000
/ip firewall address-list remove [find list=cidr_suspend comment=$user]
}
:if ($ippppoe in $200) do={
/queue simple add target=$ipclient name=$user parent=$parent max-limit=2500000/2500000
/ip firewall address-list remove [find list=cidr_suspend comment=$user]}
:if ($ippppoe in $300) do={
/queue simple add target=$ipclient name=$user parent=$parent max-limit=3000000/3000000
/ip fire mangle add chain=postrouting dst-address=$ipclient connection-mark=ggc_conn action=mark-packet new-packet-mark="ggc_$user" comment=$user
/queue tree add name=$user limit-at=2000000 max-limit=5000000 parent=DN-PPPOE packet-mark="ggc_$user"
/ip firewall address-list remove [find list=cidr_suspend comment=$user]
}
:if ($ippppoe in $350) do={
/queue simple add target=$ipclient name=$user parent=$parent max-limit=3000000/3500000
/ip fire mangle add chain=postrouting dst-address=$ipclient connection-mark=ggc_conn action=mark-packet new-packet-mark="ggc_$user" comment=$user
/queue tree add name=$user limit-at=2000000 max-limit=8000000 parent=DN-PPPOE packet-mark="ggc_$user"
/ip firewall address-list remove [find list=cidr_suspend comment=$user]
}
tambahkan di profile-pppoe on logout
:log error "$user logout $ipclient"
/queue simple remove [find name=$user]
/queue tree remove [find name=$user]
/ip fire mangle remove [find comment=$user]
Teknik Penggabungan PPPOE feat Static Address Mikrotik
Kali ini saya akan berikan tips anti mainstream, dimana deliver ke pelanggan menggunakan ip static, namun secara management user dicontrol oleh userman. Teknik ini dibuat karena problem yang penulis alami ketika deliver bandwidth ke pelanggan mengalami kendala link dan perangkat yang dipasang pppoe-client tidak sempurna jika menggunakan produk selain mikrotik (tplink, tenda, maupun ubnt).
Problem menggunakan TPLINK = dialup lama
Problem menggunakan TENDA = dialup cenderung lebih cepat daripada TPLINK namun tetap saja ada jeda waktu yang membuat risih pelanggan, karena established pppoe butuh waktu yang cukup lama.
Problem menggunakan UBNT = sama persis seperti TENDA maupun TPLINK.
Nah, dari problem diatas, kita siasati seperti berikut :
- Sediakan Router utama, yang berisi userman berikut limiternya
- Sediakan Router khusus untuk dial pppoe-client
- Buat Point to point ip static antara ROUTER2 ke masing masing client, usahakan namanya sama dengan pppoe-client.
- Bikin semua point to point via pppoe dengan menggunakan kedua router tersebut
- Untuk Router point nomor 2, nantinya digunakan untuk dial semua user. Kemudian bikin environment gimana caranya agar ip p2p static dibikin mark-routing ke pppoe-client tadi.
- Dengan begitu, untuk 1 user memerlukan 1 mangle dan 1 mark routing, dan ini nanti kita buat secara otomatis berdasarkan user yang berhasil dial dengan status R pada interface pppoe-client.
- Trafik pppoe-client dan limiter pppoe-client tetap dibaca oleh Router point 1.
- Done !
Ok langsung saja, script pada profile default ppp, pada on logon kasih script berikut :
:local iface [/interface pppoe-client get [find running=yes] name]
:local ipaddress ([/ip address get [find comment=$iface] address ])
:for i from=( [:len $ipaddress] - 1) to=0 step=-1 do={
:if ( [:pick $ipaddress $i] = "/") do={
:set ipaddress ( [:pick $ipaddress 0 $i] +1)
}
}
:log warning $ipaddress
/ip firewall mangle add comment=$iface chain=prerouting src-address=$ipaddress action=mark-routing new-routing-mark=$iface passthrough=no
/ip route add routing-mark=$iface gateway=$iface
Lalu untuk on logout script :
:local iface [/interface pppoe-client get [find running=no] name]Semoga bermanfaat.
:log error "$iface removed"
/ip fire mangle remove [find comment=$iface]
/ip route remove [find routing-mark=$iface]
Monday, May 21, 2018
mengatasi captcha google mikrotik
Pernah mengalami seperti ini :
Yubs, tentu sangat membosankan bukan? kenapa terjadi seperti itu ? jawabannya adalah karena si mbah google mendeteksi adanya malware atau sejenis spam yang melakukan query tertentu pada mesin pencarian google sehingga perlu adanya pembatasan atau pencegahan query. Bisa dibayangkan jika aktivitas spamming ini tidak diatasi pihak google. Tentu hal ini sudah dipikirkan mbah google agar kejadian ini teratasi dengan cara memberikan captcha. Perlu diketahui, ada beberapa kasus dimana tidak semua komputer terkena spam, mengenai hal ini saya kurang paham methode apa yg dipakai google untuk menerapkan pencegahan, karena fakta di lapangan ketika 1 ip public indih*me dishare ke banyak user, tidak semua kena spam. Namun jika terus menerus kena spam, dalam kurun waktu sekitar 30 menit maka semua komputer muncul captcha. Solusi satu-satunyanya saat ini harus generate ip baru. Nah lalu bagaimana cara mendeteksi kena spam ? tentu kita memanfaatkan domain ipv4.google.com/sorry/ bla bla bla yang akan kita tangkap dan kita eksekusi perintah untuk redial pppoe indih*me.
Baiklah langsung saja, kali ini saya akan bagi tips versi kedua yang mana pada script ini ada pembaharuan sehingga lebih valid. Karena terkadang akses ke google kena spam hanya ke beberapa pc saja dan pc lainnya tidak kena. solusinya gunakan layer7.
Pertama tama, buat regex layer7 pada mikrotik kasih nama spamgoogle :^.*(ipv4.google.com)
kemudian buat rule firewall filter agar address yg kena spam masuk ke address-list. (sesuaikan cidr_nat adalah pool ip client anda)
/ip fi fi add action=add-src-to-address-list address-list=kena_spam address-list-timeout=\
none-dynamic chain=forward comment=kena_spam layer7-protocol=spamgoogle protocol=tcp src-address-list=cidr_nat
:global iface 0pppoe0
:global currentIP
#:if ([:len [/ip firewall address-list find list=kena_spam dynamic=yes ]] != 0 ) do={
:if ([/ip firewall address-list print count-only where list=kena_spam] >=5) do={
:log error "akses google kena spam"
/in pppoe-client disable $iface
:delay 2
/in pppoe-client enable $iface
:delay 2
:set $currentIP ([/ip address get [find interface="$iface"] address])
:for i from=( [:len $currentIP] - 1) to=0 step=-1 do={
:if ( [:pick $currentIP $i] = "/") do={
:set currentIP [:pick $currentIP 0 $i]
}
}
:foreach i in=[/ip firewall address-list find list=kena_spam ] do={:put $i; /ip firewall address-list remove $i }
:log warning "telah digenerate dengan ip baru : $currentIP"
:local router [/system identity get name]
:local time [/system clock get time]
:local date [/system clock get date]
:local voltage [/system health get voltage]
:local tegangan (. [:pick $voltage 0 2] . "," . [:pick $voltage 2 3] ." volt")
:local pesan ("[ $router ]%0A" ."GENERATE IP%0A$currentIP:81/userman%0A103.77.159.87:81/userman%0AKENA SPAM pada : %0A" . $time .", ".$date. "%0AVoltase saat ini $tegangan.")
/tool fetch url="https://api.telegram.org/bot38xx21546:AAGn69QpFDuLSOQd3E3JtI5nhfUmg05hQys/sendMessage?chat_id=-20xx3762&text=$pesan" keep-result=no
}
:if ($currentIP in 10.0.0.0/8) do={
:log error "dapet ip private! redial kembali untuk mendapatkan ip kepala 36";
/in pppoe-client disable $iface
:delay 2
/in pppoe-client enable $iface
:delay 2
:set $currentIP ([/ip address get [find interface="$iface"] address])
:for i from=( [:len $currentIP] - 1) to=0 step=-1 do={
:if ( [:pick $currentIP $i] = "/") do={
:set currentIP [:pick $currentIP 0 $i]
}
}
:foreach i in=[/ip firewall address-list find list=kena_spam ] do={:put $i; /ip firewall address-list remove $i }
:log warning "telah digenerate dengan ip baru : $currentIP"
:local router [/system identity get name]
:local time [/system clock get time]
:local date [/system clock get date]
:local voltage [/system health get voltage]
:local tegangan (. [:pick $voltage 0 2] . "," . [:pick $voltage 2 3] ." volt")
:local pesan ("[ $router ]%0A" ."GENERATE IP%0A$currentIP:81/userman%0A103.77.159.87:81/userman%0AKENA SPAM pada : %0A" . $time .", ".$date. "%0AVoltase saat ini $tegangan.")
/tool fetch url="https://api.telegram.org/bot38xx921546:AAGn69QpFDuLSOQd3E3JtI5nhfUmg05hQys/sendMessage?chat_id=-20353xx762&text=$pesan" keep-result=no
}
hasilnya :
dan telah dilaporkan ke telegram Anda. semoga bermanfaat
Sunday, May 20, 2018
anti spam google captcha indihome
Kali ini saya akan bagi tips bagaimana cara agar si indihome ngga kena captcha google. Sebagaimana kita ketahui dialup pppoe pada indihome mendapatkan IP public dynamis. Artinya siapapun pelanggan indihome mendapatkan ip public secara acak. Nah, masalahnya kita terkadang mendapat dosa dari pelanggan dengan ip tertentu yangmana ip tersebut telah terindikasi spam oleh google. Nah, bagimana cara mengatasi hal ini ?
clue :
- pertama tama, wajib anda minta ke petugas telkom untuk men-set modem sebagai bridge. (Hal ini dimaksudkan agar dapat generate ip baru dengan method disable / enable pppoe-client)
- kemudian dial-up pppoe di mikrotik
- selanjutnya, arahkan semua pelanggan ke dns gateway router mikrotik anda
- ketika ada pelanggan yang kena spam, maka terindikasi pada dns cache dengan cname ipv4.google.com
- buat indikasi dugaan spam itu menjadi beberapa iterasi. Di sini saya gunakan 5x pengecekan dengan durasi 20 detik di setiap perulangan yang disimpan pada variable environment script. Karena ada beberapa pc yang berbeda tidak kena spam.
- jika iterasi sudah ditempuh sebanyak 5x pengecekan maka lakukan generate ip
- selain itu untuk memantau ip public sudah saya sertakan pada tutorial kali ini
- let's go!
berikut scriptnya
:global countSpam
:global currentIP
:global iface 0pppoe0
:if ([:len [/ip dns cache all find where name="ipv4.google.com" ]] = 1 ) do={
:set countSpam ($countSpam +1)
:log error "Akses ke google kena spam"
}
:if (($countSpam >= 5) && ([:len [/ip dns cache all find where name="ipv4.google.com" ]] = 1 )) do={
:log error "generate ip baru"
:set countSpam 0
/in pppoe-client disable $iface
:delay 2;
/in pppoe-client enable $iface
/ip dns cache flush
:log warning "DNS Cache has cleaned!"
:delay 2;
:set $currentIP [/ip address get [find interface="$iface"] address]
:for i from=( [:len $currentIP] - 1) to=0 step=-1 do={
:if ( [:pick $currentIP $i] = "/") do={
:set currentIP [:pick $currentIP 0 $i]
}
}
:log warning $currentIP
:local router [/system identity get name]
:local time [/system clock get time]
:local date [/system clock get date]
:local voltage [/system health get voltage]
:local tegangan (. [:pick $voltage 0 2] . "," . [:pick $voltage 2 3] ." volt")
:local pesan ("[ $router ]%0A" ."GENERATE IP%0A$currentIP:81/userman%0AKENA SPAM pada : %0A" . $time .", ".$date. "%0AVoltase saat ini $tegangan.")
/tool fetch url="https://api.telegram.org/bot388921546:AAGn69QpCDuLSOQd3E3JtI5nhfUmg05hQys/sendMessage?chat_id=-203533762&text=$pesan" keep-result=no
}
perhatikan yang saya bold silahkan sesuaikan dengan nama pppoe-client pada router anda.
Berikut hasilnya :
Saturday, May 12, 2018
dynamic mangle dan queue pada pppoe mikrotik
Kali ini saya akan bagi tips bagaimana cara membuat dynamic mangle dan queue tree di sebuah sistem pppoe pada mikrotik. Studi kasus :
- distribusi internet ke pelanggan menggunakan sistem pppoe
- pelanggan 100rb-250rb per bulan dilayani dengan bandwidth fix (dynamic pppoe biasa)
- pelanggan 300rb ke atas dikasih benefit tambahan bandwidth GGC/AKAMAI/ANY-CDN
- otomatis tambahkan mangle jika pelanggan 300rb ke atas
- otomatis tambahkan queue tree jika pelanggan 300rb ke atas
solving :
- pisahkan ip address (remote address) bagi pelanggan mix dan pelanggan premium
- buat 2 pool address, pertama pppoe_addr_biasa dan pppoe_addr_premium
- pada userman, profile 300rb ke atas pada menu constraints tambahkan pppoe_addr_premium pada address pool
- buat profile pppoe dengan pool address global (misal 10.8.8.0/24)
- let's go!
pada on login script pppoe-profile tambahkan
:local ipaddr [/ip address get [/ip address find interface=$user] network]
:log warning "$user login dengan ip $ipaddr"
:if ($ipaddr in 10.8.8.192/26) do={
/ip fire mangle add comment=$user chain=forward out-interface=$user action=mark-packet new-packet-mark=$user src-address=118.98.0.0/17 passthrough=no
:local parent [/queue tree find name=DN-PPPOE]
:if ([:len $parent] = 0) do={/queue tree add name=DN-PPPOE parent=global }
/queue tree add name=$user packet-mark=$user parent=DN-PPPOE limit-at=1000000 max-limit=8000000
}
kemudian pada on logout kasih script
:log error "$user logout"
/ip fire mangle remove [find out-interface=$user]
/queue tree remove [find name=$user]
maka nanti hasilnya sebagai berikut
ppp pppoe mikrotik dynamic mangle queue
Yups. jumpa lagi sob. setelah sekian lama ngga ngeposting blog, kali ini saya mau bagi script bagaimana cara membuat mangle maupun queue secara otomatis berdasarkan user ppx. ppx yang dimaksud kali ini yaitu bisa pptp, l2tp, pppoe dan any-ppp. terserah lah tergantung distribusi sobat ke pelanggan pake pptp apa pppoe atau yg lainnya.
Nah. untuk membuat ini berfungsi kita ambil action script nya pada ppp-profile mikrotik. Jangan lupa upgrade routeros sobat ke versi 6 (terbaru) untuk mendapatkan benefit yang lebih baik seperti bug fixing, peningkatan performa, fitur-fitur dan lainnya.
Di tempat saya, distribusi internet ke pelanggan menggunakan pppoe yang diintegrasikan dengan userman agar ketika aktivasi pelanggan sama dengan expired pelanggan. Biasa, yang namanya jualan receh tu duit kecil dianggap remeh. Kita jual 150rb/bln bagi mereka itu duit kecil, akan tetapi seringkali menjadi persoalan ketika sudah jatuh tempo, kita susah nagihnya. Nah dengan userman ini dapat membantu kita dalam mengetahui dan memberi notifikasi ke pelanggan bahwa telah masuk jatuh tempo pembayaran.
Kali ini lebih spesifik. Di tempat saya, userman dibuat beberapa profil layanan. User kita buat kemudian di bawahnya kita masukkan profile suspend dimana profile suspend ini kita buat manual di routerosnya (terpisah dengan userman) dan kita buat redirect proxy agar ketika pelanggan mengakses internet khususnya port 80 kita arahkan ke notif-page buatan kita yang tujuannya mengingatkan pelanggan untuk segera membayar abonemen bulanan.
Saya anggap masalah userman ini clear, dan sudah banyak tutor di internet dan silahkan mengambil ilmunya dan diterapkan sesuai dengan kondisi sobat.
Di sini ambil kasus beberapa service / layanan internet. Misal, pelanggan termurah kita kasih harga 100rb atau 150rb. Dan ada beberapa service dengan biaya yang lumayan, anggap misalkan 450rb. Nah, untuk paket 400an ribu ke atas ini kita kasih benefit yang berbeda dengan yang lainnya, akan tetapi deliver tetep menggunakan pppoe. Hanya saja, untuk pelanggan dibawah 400rb kita kasih bandwidth fix. Kalau yang 400an ribu ini kita kasih benefit atau tambahan bandwidth seperti GGC, AKAMAI atau any CDN-X. Konsepnya, dial pppoe sebagai bandwidth regular, apa adanya. Kemudian untuk queue tree kita kasih mangle sesuai dengan profile pelanggan.
Ketika user pppoe ini aktif, maka yang terjadi harus membuat mangle otomatis dimana out interface adalah nama user tadi dan buat packet mark dengan nama yang sama, kemudian buat queue tree juga sekaligus. Dan ketika user logout atau diskonek juga harus menghapus mangle / queue yang telah dibuat secara otomatis oleh system. Langsung saja
Buat profile pppoe pada menu PPP. Kemudian pada form script login kita isi seperti berikut.
:log warning "$user login"
/ip fire mangle add comment=$user chain=forward out-interface=$user action=mark-packet new-packet-mark=$user src-address=118.98.0.0/17 passthrough=no
:local parent [/queue tree find name=DN-PPPOE]
:if ([:len $parent] = 0) do={/queue tree add name=DN-PPPOE max-limit=10000000 parent=global }
/queue tree add name=$user packet-mark=$user parent=DN-PPPOE limit-at=1000000 max-limit=10000000
dan pada logout script kita kasih isi seperti ini
:log error "$user logout"
/ip fire mangle remove [find out-interface=$user]
/queue tree remove [find name=$user]
Thursday, April 5, 2018
Deny Ip private pppoe indihome
Bagi pelanggan indih*me pernah ngga dapet ip private kepala 10.xx.xx.xx ?
cara dapetin ip public caranya begini:local iface "indomiesedap"
:if ( [/interface get $iface running] ) do={
:if ( [/ip address get [find interface=$iface] address] in 10.0.0.0/8) do={
/interface disable $iface
delay 2
/interface enable $iface
}
}
kemudian untuk report ke telegram
:local currentIP
:local externalInterface "$iface"
:set currentIP [/ip address get [find interface="$externalInterface"] address]
:for i from=( [:len $currentIP] - 1) to=0 step=-1 do={
:if ( [:pick $currentIP $i] = "/") do={
:set currentIP [:pick $currentIP 0 $i]
}
}
Sunday, April 1, 2018
variable linux ip dan interface
my_ip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
my_interface=$(ip route get 8.8.8.8 | awk '/dev/ {f=NR} f&&NR-1==f' RS=" ")
Wireless Access Point Raspberry pi 3
Dewasa ini teknologi komputasi semakin canggih. Dengan semakin canggih teknologi membuat perangkat pabrikan elektronik dibuat se-ramping mungkin.. Yah, contohnya seperti orange-pi, raspberry-pi dll. Dengan alat sekecil ini sudah mampu menjalankan desktop. Walaupun minimalis, raspberry-pi ini mampu dan siap digunakan sebagai solusi hemat listrik karena jika kebutuhan hanya sekedar display saja ngga perlu komputer bercatu daya listrik 220V. Baiklah, kali ini saya akan share cara mengaktifkan Access Point 2.4Ghz pada raspberry-pi 3.
Pertama tama install hostapd dulu
Jika dari eth0 sudah tersedia dhcp-server dari router maka kita buat bridge dengan menggabungkan eth0 dengan wlan0. Caranya :
Pertama tama install hostapd dulu
apt-get install hostapd bridge-utils -ykemudian edit /etc/hostapd/hostapd.conf
# This is the name of the WiFi interface we configured aboveperhatikan yang saya beri tanda warna merah, silahkan sesuaikan. lalu edit /etc/default/hostapd
interface=wlan0
# Use the nl80211 driver with the brcmfmac driver
driver=nl80211
# This is the name of the network
ssid=RaspberryWiFi
# Add to bridge
# Jika menginginkan wlan0 di bridge dengan eth0 silahkan hapus tanda #
#bridge=br0
# Use the 2.4GHz band
hw_mode=g
# Use channel 6
channel=6
# Enable 802.11n
ieee80211n=1
# Enable WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# Accept all MAC addresses
macaddr_acl=0
# Use WPA authentication
auth_algs=1
# Require clients to know the network name
ignore_broadcast_ssid=0
# Use WPA2
wpa=2
# Use a pre-shared key
wpa_key_mgmt=WPA-PSK
# The network passphrase
wpa_passphrase=11223344
# Use AES, instead of TKIP
rsn_pairwise=CCMP
nano /etc/default/hostapd
# Defaults for hostapd initscriptkemudian restart service hostapd dengan cara
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd.conf"
# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)
# -K include key data in debug messages
# -t include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""
/etc/init.d/hostapd restartatau
service hostapd restart
Jika dari eth0 sudah tersedia dhcp-server dari router maka kita buat bridge dengan menggabungkan eth0 dengan wlan0. Caranya :
brctl addbr br0untuk melihat konfigurasi bridge silahkan ketik seperti berikut
brctl addif br0 eth0
brctl addif br0 wlan0
root@new-noc:/home/pi# brctl showkemudian buat interface baru dengan mengedit /etc/network/interfaces
bridge name bridge id STP enabled interfaces
br0 8000.b827eba267d2 no eth0
wlan0
# interfaces(5) file used by ifup(8) and ifdown(8)Jika sudah, silakan reboot. Silahkan konek dengan ssid yang anda buat tadi dan dengan password yang anda set di atas. Maka gadget anda mendapatkan ip dari router, karena dengan membuat bridge tadi dimaksudkan untuk menggabung eth0 dengan wlan0.
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0
Saturday, March 31, 2018
Cloning Fresh dpkg antar mesin
Pernah kepikiran ngga, gimana caranya install di mesin B SAMA PERSIS seperti yang terinstall di mesin A ????
gini caranya :
di mesin A ketikkan :
dpkg --get-selections > selections.txtperintah diatas maksudnya mencatat apa saja dependensi yang terinstall pada mesin A ke file selections.txt kemudian pindahkan file selections.txt tadi ke mesin B.
kemudian pada mesin B :
- install dselect
apt-get install dselect
- kemudian men-set dselect agar menginstall apa saja yang telah tercatat di selections.txt
dpkg --set-selections < selections.txt
dselect install
dan, selesai :D gampang kan.
Audio Sound Over TCP IP
Download jessie raspberry:
https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-07-05/2017-07-05-raspbian-jessie-lite.zip
install package di masing masing mesin TX maupun RX
apt-get update
apt-get dist-upgrade
apt-get install git python-gst0.10 python-redis \
gstreamer0.10-plugins-base gstreamer0.10-plugins-bad \
gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly \
gstreamer0.10-tools python-gobject python-gobject-2 gstreamer0.10-alsa python-setuptools lsof -y
# optional
apt-get install pulseaudio alsa-base
apt-get install redis-server
sed -i.bak 's/bind 127.*/bind 0.0.0.0/' /etc/redis/redis.conf
/etc/init.d/redis-server restarttest antar mesin dengan cara :
redis-cli -h [iplawan] pingjika reply = PONG berarti redis-server sukses!
kemudian :
easy_install OpenOB
untuk transmitter :
- HARUS ADA USB SOUNDCARD sebagai input audio
nano /usr/share/alsa/alsa.conf
ubah nilai 0 menjadi 1
defaults.ctl.card 1
defaults.pcm.card 1
kemudian start sisi TRANSMIT
/usr/local/bin/openob 192.168.127.2 ngadirojo test-link tx 192.168.127.2
#### START SCRIPT
port=3000
server=10.10.1.66
while ! lsof -i @"$port"
do
echo -e "\e[38;5;198mPORT : $port is down, - start STL\e[0m"
/usr/local/bin/openob "$server" rahox test-link tx "$server"
done
#### END SCRIPT
sisi RECEIVE
/usr/local/bin/openob [ip-receiver] test-rx-node test-link rx
#### START SCRIPT
port=3000
server=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
while ! lsof -i:"$port"
do
echo -e "\e[38;5;198mPORT : $port is down, - start STL\e[0m"
/usr/local/bin/openob "$server" test-rx-node test-link rx
done
#### END SCRIPT
trobelshoot :
lsof|grep "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}" | grep openob
usage: openob config_host node_name link_name tx [-h] [-a {auto,alsa,jack}]
[-d ALSA_DEVICE]
[-jn JACK_NAME] [-aj]
[-r SAMPLERATE]
[-e {pcm,opus}] [-p PORT]
[-m] [--no-multicast]
[-j JITTER_BUFFER]
[-b {16,24,32,48,64,96,128,192,256,384}]
[-l LOSS] [--dtx] [--no-dtx]
[--fec] [--no-fec]
[--complexity {0,1,2,3,4,5,6,7,8,9}]
[--framesize {2,5,10,20,40,60}]
receiver_host
positional arguments:
receiver_host The receiver for this transmitter. The machine at this
address must be running an rx-mode Manager for this
link name
optional arguments:
-h, --help show this help message and exit
-a {auto,alsa,jack}, --audio_input {auto,alsa,jack}
The audio source type for this end of the link
(default: auto)
-r SAMPLERATE, --samplerate SAMPLERATE
Set the sample rate to request from the input (Hz)
(default: 0)
-e {pcm,opus}, --encoding {pcm,opus}
The audio encoding type for this link; PCM for linear
audio (16-bit), or Opus for encoded audio (default:
opus)
-p PORT, --port PORT The base port to use for audio transport. This port
must be accessible on the receiving host (default:
3000)
-m, --multicast Start this transmitter in multicast mode, enabling
multiple clients to connect at once using the address
specified in reciever_host (default: False)
--no-multicast Start this transmitter in unicast mode (default)
(default: False)
-j JITTER_BUFFER, --jitter_buffer JITTER_BUFFER
The size of the jitter buffer in milliseconds. Affects
latency; may be reduced to 5-10ms on fast reliable
networks, or increased for poor networks like 3G
(default: 40)
alsa:
Options when using ALSA source type
-d ALSA_DEVICE, --alsa_device ALSA_DEVICE
The ALSA device to connect to for input (default:
hw:0)
jack:
Options when using JACK source type
-jn JACK_NAME, --jack_name JACK_NAME
JACK port name root (default: openob)
-aj, --jack_auto Disable auto connection for JACK inputs (default:
True)
opus:
Opus encoder options
-b {16,24,32,48,64,96,128,192,256,384}, --bitrate {16,24,32,48,64,96,128,192,256,384}
Bitrate if using CELT/Opus (in kbit/s) (default: 128)
-l LOSS, --loss LOSS Expected packet loss percentage for Opus, between 0
and 100 (default: 0)
--dtx Enable Opus Discontinuous Transmission support
(default: False)
--no-dtx Disable Opus Discontinuous Transmission support
(default) (default: False)
--fec Enable Opus Inband Forward Error Correction support
(default) (default: True)
--no-fec Disable Opus Inband Forward Error Correction support
(default: True)
--complexity {0,1,2,3,4,5,6,7,8,9}
Opus Computational Complexity, between 0 and 10 -
reduce on CPU-constrained devices (default: 9)
--framesize {2,5,10,20,40,60}
Opus frame size (ms) (default: 20)
Thursday, March 29, 2018
API Telegram ssh
Pernahkah anda berfikiran ingin memantau siapa saja yang login dan mendapat laporan ketika ada user yang masuk ke box Anda ? api telegram solusinya.
Baiklah, pertama tama simak script berikut ini
# simpan file ke /etc/profile.d/
USERID="213567634"
KEY="930289293:AAGn69QpFJKdlwkaJDLWADkladwa"
TIMEOUT="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
DATE_EXEC="$(date "+%d %b %Y %H:%M")"
TMPFILE='/tmp/ipinfo-$DATE_EXEC.txt'
if [ -n "$SSH_CLIENT" ]; then
IP=$(echo $SSH_CLIENT | awk '{print $1}')
PORT=$(echo $SSH_CLIENT | awk '{print $3}')
HOSTNAME=$(hostname -f)
IPADDR=$(hostname -I | awk '{print $1}')
curl http://ipinfo.io/$IP -s -o $TMPFILE
CITY=$(cat $TMPFILE | jq '.city' | sed 's/"//g')
REGION=$(cat $TMPFILE | jq '.region' | sed 's/"//g')
COUNTRY=$(cat $TMPFILE | jq '.country' | sed 's/"//g')
ORG=$(cat $TMPFILE | jq '.org' | sed 's/"//g')
TEXT="<b>SSH Login!</b>%0A<b>pada:</b> <code>$DATE_EXEC</code>%0A<b>user:</b> ${USER} %0A<b>on hostname:</b> <code>$HOSTNAME</code>%0A<b>ip:</b> (<code>$IPADDR</code>)%0A<b>from:</b> <code>$IP</code>%0A- $ORG, %0A- $CITY, %0A- $REGION, %0A- $COUNTRY <i>%0Aon port:</i> $PORT"
curl -s --max-time $TIMEOUT -d "chat_id=$USERID&parse_mode=HTML&disable_web_page_preview=1&text=$TEXT" $URL > /dev/null
rm $TMPFILE
fi
ubah yang saya beri tanda merah dan sesuaikan dengan bot id telegram anda.
kemudian install jq
root@dns:/var/www/html/bot # apt-get install jq
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libjq1 libonig4
The following NEW packages will be installed:
jq libjq1 libonig4
0 upgraded, 3 newly installed, 0 to remove and 58 not upgraded.
Need to get 305 kB of archives.
After this operation, 964 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://mirror.rise.ph/raspbian/raspbian stretch/main armhf libonig4 armhf 6.1.3-2 [127 kB]
Get:2 http://mirror.rise.ph/raspbian/raspbian stretch/main armhf libjq1 armhf 1.5+dfsg-1.3 [119 kB]
Get:3 http://mirror.rise.ph/raspbian/raspbian stretch/main armhf jq armhf 1.5+dfsg-1.3 [58.9 kB]
Fetched 305 kB in 1s (161 kB/s)
Selecting previously unselected package libonig4:armhf.
(Reading database ... 45136 files and directories currently installed.)
Preparing to unpack .../libonig4_6.1.3-2_armhf.deb ...
Unpacking libonig4:armhf (6.1.3-2) ...
Selecting previously unselected package libjq1:armhf.
Preparing to unpack .../libjq1_1.5+dfsg-1.3_armhf.deb ...
Unpacking libjq1:armhf (1.5+dfsg-1.3) ...
Selecting previously unselected package jq.
Preparing to unpack .../jq_1.5+dfsg-1.3_armhf.deb ...
Unpacking jq (1.5+dfsg-1.3) ...
Setting up libonig4:armhf (6.1.3-2) ...
Setting up libjq1:armhf (1.5+dfsg-1.3) ...
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up jq (1.5+dfsg-1.3) ...
Jika login dengan ip private nanti pesan balasannya null, null, null, tapi status login tetap diterima.
Wednesday, March 28, 2018
Queue Otomatis DHCP Mikrotik
Kali ini saya akan share tips cara menambahkan simple queue untuk melimit device yang terkoneksi ke mikrotik routerboard melalui dhcp service. Konsepnya, setiap kali device yang mendapatkan ip dari dhcp server mikrotik akan dibuat queue secara otomatis. Syaratnya harus menggunakan mikrotik routeros versi 6.xx. Baiklah ini scriptnya.
yang berwarna merah silahkan sesuaikan. Tambahkan script itu pada menu ip => dhcp-server pada textbox lease-script.
Semoga membantu.
#add parent
:local parent [/queue simple find name=ROOT]
:local network "172.16.0.0/12,192.168.0.0/16"
#tambahkan parent jika belum ada
:if ([:len $parent] = 0) do={/queue simple add name=ROOT max-limit=10000k/10000k target="$network" packet-marks=no-mark}
#action
:local queueName "Client-$leaseActMAC";
:if ($leaseBound = "1") do={
/queue simple add name=$queueName target=($leaseActIP . "/32") limit-at=1000k/1000k max-limit=2000k/2000k burst-limit=3000k/3000k burst-threshold=2000k/2000k burst-time=8/8 parent=ROOT packet-marks=no-mark comment=[/ip dhcp-server lease get [find where active-mac-address=$leaseActMAC && active-address=$leaseActIP] host-name];
} else={
/queue simple remove $queueName
}
yang berwarna merah silahkan sesuaikan. Tambahkan script itu pada menu ip => dhcp-server pada textbox lease-script.
Semoga membantu.
Wednesday, February 14, 2018
Mengatasi SSH Can't Agree ketika diremote dari winbox
Pernahkah anda mengalami seperti berikut ini ketika me-remote server linux anda melalui ssh
Hal itu terjadi ketika Anda meng-install openssh-server versi terbaru yang telah bundling dengan apt-get saat anda menggunakan server berbasis debian.
Untuk mengatasi hal itu, pada server linux Debian/Ubuntu Anda nano /etc/ssh/sshd_config
Lalu tambahkan script berikut pada bagian akhir file sshd_config tadi
Kemudian tekan CTRL + O atau CTRL + X
Lalu restart service ssh Anda dengan cara :
Hal itu terjadi ketika Anda meng-install openssh-server versi terbaru yang telah bundling dengan apt-get saat anda menggunakan server berbasis debian.
Untuk mengatasi hal itu, pada server linux Debian/Ubuntu Anda nano /etc/ssh/sshd_config
Lalu tambahkan script berikut pada bagian akhir file sshd_config tadi
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
Kemudian tekan CTRL + O atau CTRL + X
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?Tekan huruf Y lalu enter
Y Yes
N No ^C Cancel
Lalu restart service ssh Anda dengan cara :
root@deb8:/home/kangrahox# /etc/init.d/ssh restart
[ ok ] Restarting ssh (via systemctl): ssh.service.
Dan coba lagi remote ssh server Debian anda kembali sehingga berhasil login seperti berikut ini :