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

: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"
      }
}

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 -y
apt 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 -y
apt install gstreamer-tools -y
apt install redis-server -y
apt install pulseaudio -y
apt install python-pip -y
apt install python3-gi -y
sed -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 wheel
cd /usr/local/lib/python2.7/dist-packages
wget 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 :

  1. Sediakan Router utama, yang berisi userman berikut limiternya
  2. Sediakan Router khusus untuk dial pppoe-client
  3. Buat Point to point ip static antara ROUTER2 ke masing masing client, usahakan namanya sama dengan pppoe-client.
  4. Bikin semua point to point via pppoe dengan menggunakan kedua router tersebut
  5. 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.
  6. 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.
  7. Trafik pppoe-client dan limiter pppoe-client tetap dibaca oleh Router point 1.
  8. 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]
:log error "$iface removed"
/ip fire mangle remove [find comment=$iface]
/ip route remove [find routing-mark=$iface]

Semoga bermanfaat.

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
kemudian buat script seperti berikut dan jangan lupa buat schedulernya.
: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]

hasilnya gini


Semoga bermanfaat dan silahkan dikembangkan, apabila masih ada pertanyaan silahkan japri. Makasih.


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

apt-get install hostapd bridge-utils -y
kemudian edit /etc/hostapd/hostapd.conf
# This is the name of the WiFi interface we configured above
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
perhatikan yang saya beri tanda warna merah, silahkan sesuaikan. lalu edit /etc/default/hostapd
nano /etc/default/hostapd
# Defaults for hostapd initscript
#
# 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=""
kemudian restart service hostapd dengan cara
/etc/init.d/hostapd restart
atau
service hostapd restart

Jika dari eth0 sudah tersedia dhcp-server dari router maka kita buat bridge dengan menggabungkan eth0 dengan wlan0. Caranya :
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 wlan0
untuk melihat konfigurasi bridge silahkan ketik seperti berikut
root@new-noc:/home/pi# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.b827eba267d2       no              eth0
                                                        wlan0
kemudian buat interface baru dengan mengedit /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# 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


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.

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.txt
perintah 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 restart
test antar mesin dengan cara :
redis-cli -h [iplawan] ping
jika 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) ...

Coba anda login ke ssh Anda, (coba dari luar network) nanti hasilnya seperti ini di telegram anda.
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.

#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
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) ?
 Y Yes
 N No           ^C Cancel
Tekan huruf Y lalu enter
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 :