Kau bisa bersembunyi dari kesalahanmu, tapi tidak dari penyesalanmu. Kau bisa bermain dengan dramamu, tapi tidak dengan karmamu.

  • About

    Seorang Teknisi Jaringan yang pernah berkecimpung di Internet Service Provider (ISP) dan akhirnya memutuskan diri untuk menjadi freelancer yang berdomisili di Solo, Surakarta Hadiningrat.

  • Services

    Melayani jasa pasang Internet berbasis Wireless maupun Fiber Optic, Jasa Pasang Tower/Pipa, Pointing Wireless, Setting Router, CCTV, Hotspot, Proxy, Web Server, Network Managed dan Monitoring

  • Contact

    Berbagai saran, kritikan, keluhan dan masukan akan sangat berarti bagi saya. Anda dapat menghubungi/whatsapp saya di nomor:08564-212-8686 atau melalui BBM:2128686

    Thursday, November 30, 2017


    Kali ini saya akan bagi script untuk dumping ip-ip dalam suatu ASNUMBER tertentu. Buatlah script dengan ekstensi dot sh pada console linux anda. Jangan lupa di chmod 777 file.sh tadi kemudian jalaankan script.
    rm -rf ASN
    rm -rf IP
    touch ASN
    touch IP
    clear
    echo "========================================="
    echo -n "asnumber / ipnya berapa ?  = "
    read asnum
    if [[ $asnum =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    whois -h whois.radb.net -i origin $asnum | grep '^notify:' | awk '{print "ini kak deskripsinya:   = "$2}'
    fi
    echo -n "address-list-nya ? contoh: cidr_akamai = "
    read addrlist
    echo -n "comment-nya apa ? contoh: akamai = "
    read comment
    rm -rf "$asnum"-"$comment".rsc
    echo "========#[tunggu sebentar ya kak]#======="
    echo ""
    if [[ $asnum =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    whois -h whois.radb.net -i origin $asnum | grep '^origin:' | awk '{print $2}' >> ASN
    sort -u -o ASN ASN
    tail -f IP &
    for ASN in $(cat ASN | awk '{print $1}');
    do
    { whois -h whois.radb.net -- "-i origin $ASN" | grep '^route:' | perl -MNet::Netmask -ne'm!(\d+\.\d+\.\d+\.\d+/?\d*)! or next; $h = $1; $h =~ s/(\.0)+$//; $b=Net::Netmask->new($h); $b->storeNetblock(); END {print map {$_->base()."/".$_->bits()."\n"} cidrs2cidrs(dumpNetworkTable)}'; } >> IP
    sleep 3
    done
    echo "";
    sort -V IP | uniq | awk '{print "/ip firewall address-list add list='$addrlist' comment='$comment' address=" $1}' >> /var/www/html/dump/"$asnum"-"$comment".rsc
    #sed -i '4d' "$addrlist".rsc
    cat /var/www/html/dump/"$asnum"-"$comment".rsc
    else
    whois -h whois.radb.net -i origin $asnum | grep '^route:' | perl -MNet::Netmask -ne'm!(\d+\.\d+\.\d+\.\d+/?\d*)! or next; $h = $1; $h =~ s/(\.0)+$//; $b=Net::Netmask->new($h); $b->storeNetblock(); END {print map {$_->base()."/".$_->bits()."\n"} cidrs2cidrs(dumpNetworkTable)}'  >> temp.txt
    sort -V temp.txt | uniq | awk '{print "/ip firewall address-list add list='$addrlist' comment='$comment' address=" $1}' >> /var/www/html/dump/"$asnum"-"$comment".rsc
    cat /var/www/html/dump/"$asnum"-"$comment".rsc
    rm temp.txt
    fi

    Hasilnya sepeti berikut ini :


    Jangan khawatir jika ada double ip yang tertera dalam file tersebut karena sudah difilter dan dipastikan UNIQ, alias tidak mungkin sama! 
    Tidak sampai di situ saja, hasil generate anda berwujud file rsc yang siap di import di mikrotik anda setiap anda men-generate as number baru, berikut penampakannya :


    Semoga bermanfaat. Terima kasih.

    Buat script pada mikrotik seperti berikut ini, sesuaikan dengan email anda.
    :log warning message="backup beginning now"
    :global backupfile ([/system identity get name] . "-" . [/system clock get time])
    /system backup save name=$backupfile
    :log warning message="backup pausing for 10s"
    :delay 10s
    :log warning message="backup being emailed"
    /tool e-mail send tls=yes port=587 to="<email.anda@gmail.com>" subject=([/system identity get name] . \
    " Backup") from=<terserah@gmail.com> file=$backupfile server=74.125.68.108
    :delay 20s
    /file remove $backupfile

    Lalu buat scheduler, sesuaikan durasi kapan harus otomatis dibackup, bisa setiap bulan, tiap minggu, dan lain sebagainya.

    Wednesday, November 29, 2017


    /ip hotspot walled-garden ip
    add action=accept comment=whatsapp disabled=no dst-address=50.23.90.128/27
    add action=accept comment=whatsapp disabled=no dst-address=108.168.176.192/26
    add action=accept comment=whatsapp disabled=no dst-address=108.168.177.0/27
    add action=accept comment=whatsapp disabled=no dst-address=108.168.180.96/27
    add action=accept comment=whatsapp disabled=no dst-address=157.240.7.54
    add action=accept comment=whatsapp disabled=no dst-address=158.85.48.224/27
    add action=accept comment=whatsapp disabled=no dst-address=158.85.58.0/25
    add action=accept comment=whatsapp disabled=no dst-address=158.85.224.160/27
    add action=accept comment=whatsapp disabled=no dst-address=169.44.82.96/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.71.32/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.71.96/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.87.128/26
    add action=accept comment=whatsapp disabled=no dst-address=169.45.210.64/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.214.224/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.219.224/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.238.32/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.248.96/27
    add action=accept comment=whatsapp disabled=no dst-address=169.45.248.160/27
    add action=accept comment=whatsapp disabled=no dst-address=169.47.5.192/26
    add action=accept comment=whatsapp disabled=no dst-address=169.47.35.32/27
    add action=accept comment=whatsapp disabled=no dst-address=169.47.40.128/27
    add action=accept comment=whatsapp disabled=no dst-address=169.47.42.96/27
    add action=accept comment=whatsapp disabled=no dst-address=169.47.42.160/27
    add action=accept comment=whatsapp disabled=no dst-address=169.47.42.192/26
    add action=accept comment=whatsapp disabled=no dst-address=169.53.29.128/27
    add action=accept comment=whatsapp disabled=no dst-address=169.53.71.224/27
    add action=accept comment=whatsapp disabled=no dst-address=169.53.81.64/27
    add action=accept comment=whatsapp disabled=no dst-address=169.53.250.128/26
    add action=accept comment=whatsapp disabled=no dst-address=169.55.67.224/27
    add action=accept comment=whatsapp disabled=no dst-address=169.55.210.96/27
    add action=accept comment=whatsapp disabled=no dst-address=198.11.251.32/27
    add action=accept comment=bbm disabled=no dst-address=206.51.26.0/24
    add action=accept comment=bbm disabled=no dst-address=193.109.81.0/24
    add action=accept comment=bbm disabled=no dst-address=103.246.200.0/22
    add action=accept comment=bbm disabled=no dst-address=216.9.240.0/20
    add action=accept comment=bbm disabled=no dst-address=206.53.144.0/20
    add action=accept comment=bbm disabled=no dst-address=67.223.64.0/19
    add action=accept comment=bbm disabled=no dst-address=93.186.16.0/20
    add action=accept comment=bbm disabled=no dst-address=68.171.224.0/19
    add action=accept comment=bbm disabled=no dst-address=74.82.64.0/19
    add action=accept comment=bbm disabled=no dst-address=173.247.32.0/19
    add action=accept comment=bbm disabled=no dst-address=178.239.80.0/20
    add action=accept comment=bbm disabled=no dst-address=5.100.168.0/21
    add action=accept comment=bbm disabled=no dst-address=131.117.168.0/21
    add action=accept comment=bbm disabled=no dst-address=111.95.240.0/24
    add action=accept comment=bbm disabled=no dst-address=68.171.238.0/24
    add action=accept comment=telegram disabled=no dst-address=149.154.160.0/20
    add action=accept comment=telegram disabled=no dst-address=149.154.164.0/22
    add action=accept comment=telegram disabled=no dst-address=91.108.4.0/22
    add action=accept comment=telegram disabled=no dst-address=91.108.56.0/22
    add action=accept comment=telegram disabled=no dst-address=91.108.8.0/22
    add action=accept comment=line disabled=no dst-address=125.209.253.0/24
    add action=accept comment=line disabled=no dst-address=203.105.150.0/24
    add action=accept comment=line disabled=no dst-address=203.104.153.0/24
    add action=accept comment=line disabled=no dst-address=203.104.174.0/24
    add action=accept comment=line disabled=no dst-address=74.82.94.0/24
    add action=accept comment=line disabled=no dst-address=139.193.253.0/24
    add action=accept comment=line disabled=no dst-address=111.94.254.0/24
    add action=accept comment=line disabled=no dst-address=203.104.142.0/24
    add action=accept comment=bbm disabled=no dst-address=68.171.238.0/24
    add action=accept comment=bbm disabled=no dst-address=74.82.91.0/24
    add action=accept comment=bbm disabled=no dst-address=74.125.200.0/24
    add action=accept comment=bbm disabled=no dst-address=111.94.254.0/24
    add action=accept comment=telegram disabled=no dst-address=91.108.56.0/22
    add action=accept comment=telegram disabled=no dst-address=74.82.91.0/24
    add action=accept comment=telegram disabled=no dst-address=68.171.238.0/24
    add action=accept comment=telegram disabled=no dst-address=91.108.56.0/22
    add action=accept comment=bbm disabled=no dst-address=208.65.75.21
    add action=accept comment=bbm disabled=no dst-address=208.65.75.22
    add action=accept comment=bbm disabled=no dst-address=74.82.72.232/29
    add action=accept comment=bbm disabled=no dst-address=178.239.90.232/29

    Sunday, November 26, 2017

    Kali ini saya akan bagi tips bagi anda yang menggunakan DNS server local pada jaringan anda dengan menggunakan Mikrotik RouterOS. Setelah DNS Server anda konfigurasi ada kalanya saat ingin mengubah konfigurasi dns terjadi service off, yakni dns server tidak running sebagaimana mestinya, bisa jadi karena bug atau permasalahan yang lain. Solusinya, jalankan script berikut ini agar meminimalisir terjadinya down service dengan cara me-redirect sementara saat dns server kita down. Buatlah scheduler dengan script berikut ini :

    # sesuaikan bagian ini
    :local dns 27.131.2x.x
    :local addrlist dns_aktif
    :local interface ether5.DNS
    # buat rule tangkap service dns jika belum ada
    :if ([:len [/ip firewall filter find comment=cek-dns]] = 0) do={
       /ip firewall filter add action=add-src-to-address-list address-list=$addrlist address-list-timeout=10s chain=forward comment=cek-dns disabled=no in-interface=$interface protocol=udp src-address=$dns src-port=53
       }
    # buat rule redirect dns jika dns server mati
    :if ([:len [/ip firewall nat find comment=redirect-dns]] = 0) do={
       /ip firewall nat add action=dst-nat chain=dstnat comment=redirect-dns disabled=yes dst-address=$dns dst-port=53 protocol=udp to-addresses=208.67.220.220 to-ports=443
       }
    # sensor dns diaktifkan
    :if ([:len [/ip firewall address-list find list=$addrlist address=$dns] ] = 0) do={
       /ip firewall nat set [/ip firewall nat find comment=redirect-dns disabled=yes] disabled=no
       } else {
       /ip firewall nat set [/ip firewall nat find comment=redirect-dns disabled=no] disabled=yes
       }

    Semoga Bermanfaat. 


    root@dns:/home/pi # apt-get install gcc python-dev python-pip
    root@dns:/home/pi # pip install ps_mem
    Collecting ps_mem
      Downloading ps_mem-3.6.tar.gz
    Building wheels for collected packages: ps-mem
      Running setup.py bdist_wheel for ps-mem ... done
      Stored in directory: /root/.cache/pip/wheels/62/da/b7/06050fabac6563945185c173835cd76dd2ccc273172eb3f5f7
    Successfully built ps-mem
    Installing collected packages: ps-mem
    Successfully installed ps-mem-3.6
    root@dns:/home/pi # wget https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py
    --2017-11-26 18:43:35--  https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py
    Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
    Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 22127 (22K) [text/plain]
    Saving to: ‘ps_mem.py’
    ps_mem.py    100%[============================================================================>]  21.61K  --.-KB/s    in 0.03s
    2017-11-26 18:43:36 (818 KB/s) - ‘ps_mem.py’ saved [22127/22127]

    root@dns:/home/pi # chmod 777 ps_mem.py
    root@dns:/home/pi # ./ps_mem.py
     Private  +   Shared  =  RAM used       Program
    316.0 KiB +  53.0 KiB = 369.0 KiB       sftp-server
    276.0 KiB + 144.5 KiB = 420.5 KiB       cron
    272.0 KiB + 204.5 KiB = 476.5 KiB       thd
    392.0 KiB + 216.0 KiB = 608.0 KiB       agetty (2)
    504.0 KiB + 395.0 KiB = 899.0 KiB       systemd-timesyncd
    584.0 KiB + 478.0 KiB =   1.0 MiB       systemd-logind
    740.0 KiB + 347.0 KiB =   1.1 MiB       dbus-daemon
    304.0 KiB + 851.0 KiB =   1.1 MiB       avahi-daemon (2)
    744.0 KiB + 509.0 KiB =   1.2 MiB       su (2)
    800.0 KiB + 478.5 KiB =   1.2 MiB       (sd-pam)
      1.3 MiB + 154.5 KiB =   1.4 MiB       systemd-udevd
      1.3 MiB +  96.5 KiB =   1.4 MiB       rsyslogd
    748.0 KiB + 864.0 KiB =   1.6 MiB       sudo (2)
      1.2 MiB + 430.0 KiB =   1.6 MiB       systemd-journald
      1.5 MiB +   2.2 MiB =   3.7 MiB       systemd (2)
      1.7 MiB +   5.5 MiB =   7.2 MiB       sshd (7)
     16.4 MiB +   1.4 MiB =  17.8 MiB       bash (4)
     11.7 MiB +   9.2 MiB =  20.9 MiB       apache2 (10)
     27.6 MiB + 986.5 KiB =  28.5 MiB       unbound
    ---------------------------------
                             92.6 MiB
    =================================
    Warning: Swap is not reported by this system.



    pip is the easiest way to install psutil. It is shipped by default with Python 2.7.9+ and 3.4+. For other Python versions you can install it manually.
    On Linux or via wget:

    wget https://bootstrap.pypa.io/get-pip.py -O - | python
    On OSX or via curl:

    python < <(curl -s https://bootstrap.pypa.io/get-pip.py)
    On Windows, download pip, open cmd.exe and install it:

    C:\Python27\python.exe get-pip.py
    Permission issues (UNIX)

    The commands below assume you're running as root. If you're not or you bump into permission errors you can either:


    • prepend sudo, e.g.:

    sudo pip install psutil

    • install psutil for your user only (not at system level):

    pip install --user psutil
    Linux

    Ubuntu / Debian:

    sudo apt-get install gcc python-dev python-pip
    pip install psutil
    RedHat / CentOS:

    sudo yum install gcc python-devel python-pip
    pip install psutil
    If you're on Python 3 use python3-dev and python3-pip instead.

    OSX

    Install Xcode first, then:

    pip install psutil
    Windows

    The easiest way to install psutil on Windows is to just use the pre-compiled exe/wheel installers hosted on PYPI via pip:

    C:\Python27\python.exe -m pip install psutil
    If you want to compile psutil from sources you'll need Visual Studio (Mingw32 is no longer supported):

    • Python 2.6, 2.7: VS-2008
    • Python 3.3, 3.4: VS-2010
    • Python 3.5+: VS-2015

    Compiling 64 bit versions of Python 2.6 and 2.7 with VS 2008 requires Windows SDK and .NET Framework 3.5 SP1. Once installed run vcvars64.bat, then you can finally compile (see here). To compile / install psutil from sources on Windows run:

    make.bat build
    make.bat install
    FreeBSD

    pkg install python gcc
    python -m pip install psutil
    OpenBSD

    export PKG_PATH="http://ftp.openbsd.org/pub/OpenBSD/`uname -r`/packages/`arch -s`/"
    pkg_add -v python gcc
    python -m pip install psutil
    NetBSD

    export PKG_PATH="ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/`uname -m`/`uname -r`/All"
    pkg_add -v pkgin
    pkgin install python gcc
    python -m pip install psutil
    Solaris

    If cc compiler is not installed create a symlink to gcc:

    sudo ln -s /usr/bin/gcc /usr/local/bin/cc
    Install:

    pkg install gcc
    python -m pip install psutil
    Install from sources

    git clone https://github.com/giampaolo/psutil.git
    cd psutil
    python setup.py install
    Example :
    root@dns:/home/pi # pip install psutil
    Collecting psutil
      Downloading psutil-5.4.1.tar.gz (408kB)
        100% |████████████████████████████████| 409kB 234kB/s
    Building wheels for collected packages: psutil
      Running setup.py bdist_wheel for psutil ... done
      Stored in directory: /root/.cache/pip/wheels/05/a2/2a/2015d6af91fb5a4cc5bcdfa9699034e2f624fc9cc5acde7ab9
    Successfully built psutil
    Installing collected packages: psutil
    Successfully installed psutil-5.4.1

    root@dns:/home/pi # ./meminfo.py
    MEMORY
    ------
    Total      :  927.3M
    Available  :  767.2M
    Percent    :    17.3
    Used       :   80.5M
    Free       :  416.4M
    Active     :  209.9M
    Inactive   :  260.4M
    Buffers    :   30.1M
    Cached     :  400.3M
    Shared     :   25.4M
    SWAP
    ----
    Total      :  100.0M
    Used       :      0B
    Free       :  100.0M
    Percent    :     0.0
    Sin        :      0B
    Sout       :      0B
    root@dns:/home/pi #

    Friday, November 24, 2017


    Kali ini saya akan share bagaimana menambahkan list domain iklan ke unbound service. Pertama pastikan unbound sudah berjalan sempurna. Silahkan cari tutor di blog ini dengan men-search keyword unbound.

    Jika sudah, buatlah script berikut dengan ekstensi.sh dan jangan lupa chmod 777 nama.sh
    #!/bin/bash
    #
    # Update the dummy ads block
    #
    # From http://www.bentasker.co.uk/documentation/linux/279-unbound-adding-custom-dns-records
    cd /etc/unbound/local.d/
    rm ads.conf
    for a in `wget -O - "http://www.bentasker.co.uk/adblock/autolist.txt"`; do echo "       local-data: \"$a A 127.0.0.2\"" >> ads.conf; done
    Lalu pada /etc/unbound/unbound.conf sisipkan kode berikut ini
    include: /etc/unbound/local.d/ads.conf
    kemudian jangan lupa ketikkan "service unbound reload"


    Sunday, November 19, 2017


    Hy all, kali ini saya akan bagi tips mengenai sensor atau alarm ping mikrotik yang di integrasikan dengan BOT TELEGRAM. Untuk masalah bot telegram silahkan cari tutor di internet, focus bahasan kali ini adalah pembuatan scriptnya. Baiklah studi kasusnya begini :

    • Ingin memonitor ping / latency
    • Ketika pingtime besar, maka bot telegram mengirimkan perintah untuk menginformasikan tentang besaran ping ke target yang di ping
    • Jika dalam waktu yang panjang, misalkan seharian ping time besar, tentu sangat bising kita mendengar alarm telegram, solusinya hanya di MUTE saja, tapi tetap saja notifikasi itu muncul.
    • Nah di sini nanti ada filter supaya alarm tetep jalan, tapi hanya dibatasi 30 notifikasi saja.
    • Dan selanjutnya, setiap beberapa menit kemudian apabila ping time MASIH tinggi, maka jalankan lagi script alarm.
    Langsung saja. Buat scheduler di mikrotik dengan interval 10 detik
    :local avgRtt;
    :local pin
    :local pout
    :local target 10.77.159.66
    :global perulangan
    :local router [/system identity get name]
    :local time [/system clock get time]
    :local date [/system clock get date]
    /tool flood-ping $target count=10 do={
      :if ($sent = 10) do={
        :set avgRtt $"avg-rtt"
        :set pout $sent
        :set pin $received
      }
    :if (($perulangan <= 30  && $avgRtt >= 60))  do={
    :local pesan ("[ $router ]%0A" ."LATENCY $target $avgRtt ms pada : %0A" . $time .", ".$date."%0A")
    :log error message="LATENCY $target $avgRtt"
    /tool fetch url="https://api.telegram.org/bot380921xxx:AAGn69QpFDuLSOQd3E3JtI5nhfUmxxx/sendMessage?chat_id=-203533xx&text=$pesan"
    }
    :set perulangan ($perulangan + 1)
    :delay 2
    /file remove [find type=". file"]
    /file remove [find type="file"]
    }
    Kemudian buat lagi satu scheduler selama 20 menit (sesuaikan aja) untuk membersihkan counter $perulangan agar kembali nol

    :set $perulangan 0 

    Semoga berhasil. Jangan lupa Komen, Subscribe dan Share ya.

    Monday, November 13, 2017


    Pernahkah Anda mengalami mendapatkan IP indihome kepala 125.xx .xx  atau 180.xx.xx rasanya slow respon dan ping ke internationalnya beda. Nah, dengan kepala IP 36 ini katanya lebih nyaman daripada kepala ip yg lainnya. Coba saja, tentu beda daerah mungkin beda kondisi, ehehe....
    {
      :local target "36"
      :local inface "pppoe"
      :local data1 [:pick [/ip add get [find interface=$inface] address] 0 2]  ;
      :while ($data1 != $target)  do={
      :delay 2s;
      :local data [:pick [/ip add get [find interface=$inface] address] 0 2]  ;
      :log warning "mboknom = $data"
        :if ($data != $target) do={
        :log error "DISABLE $inface"
        /in dis [find name=$inface]
        :delay 2s;
        :log warning "ENABLE $inface"
        /in en [find name=$inface]
        :delay 10s;
        }
      :set data1 $data;
      }
    }

    Monday, October 30, 2017


    Pernahkah anda menemui kasus ketika mengakses situs seperti Tokopedia, Bukalapak, Shopee, atau Yahoo serasa blank, tidak keluar gambar, atau yg semacamnya ?
    Kalau Anda berlangganan paket dedicated internet dipastikan tidak mengalami kendala seperti yang saya contohkan di atas (kan tinggal komplain aja, terima beres, hehe)
    Sebelum membahas faktor penyebab ini, kita pilah dulu yang saya maksud mengenai akses ke beberapa situs mengalami blank, gambar tidak terload dengan sempurna.
    Yang saya maksud yakni ketika akses situs situs lain lancar, namun ada beberapa situs (seperti yg saya sebutkan diatas) mengalami blank, tidak ter-load dengan sempurna dan slow respon. Sampai sini dulu semoga dipahami apa yang saya maksudkan.
    Nah, apabila Anda menggunakan layanan internet paket broadband, paket upto, paket bla bla bla dan semacamnya, maka dari sisi teknis ada beberapa faktor yg menyebabkan adanya penurunan performa, diantaranya :

    • Link. Kalau bicara link, sudah pasti antara NOC / Provider sampai ke pelanggan, tentu sebagai client ngga perlu ambil pusing mengenai ini, pelanggan hanya terima beres saja tanpa tau ditembakkan kemana, kualitas link bagaimana, dan seterusnya. Sebagai provider dan sisi tem teknis harus berusaha sebaik mungkin membuat link dan menjaga link agar tetap prima. Saya anggap clear untuk kasus ini mungkin rekan rekan sudah canggih dalam hal pointing dan optimisasi link.
    • Masalah Perangkat. Untuk hal ini yang termasuk penyebab seperti ethernet AP maupun CPE dalam kondisi unplug-unplug atau tidak, karena hal ini sangat berpengaruh terhada performa jaringan Anda
    • Untuk masalah QoS sebenarnya tidak terlalu berpengaruh, namun perlu disesuaikan adalah jatah bandwidth kepada pelanggan harus dijaga.
    • Upstream, Nah ini yang paling menjadi inti dalam pembahasan kita kali ini. Jika anda men-share ulang layanan akses internet, pastikan Anda paham beberapa faktor, diantaranya
      • kapasitas yg Anda dapatkan berapa, dan jumlah kebutuhan internet Anda harus disesuaikan
      • paket layanan internet sudah sesuai dengan kebutuhan anda atau belum, pilih layanan yang sesuai dengan keperluan Anda.
      • dan yg terakhir mengenai MTU, Maximum Transmision Unit. Untuk paket dedicated access, harusnya besaran MTU adalah 1500, dan untuk layanan yg lebih rendah dari dedicated access dibagi dua, biasanya kalau ngga penurunan MTU ya penurunan troughput seperti paket upto, burstable, atau yg semacamnya namun MTU tetap terjaga 1500.
    Untuk lebih gampang membedakan kenapa paket dedicated lebih responsif daripada broadband saya analogikan begini : Anda gambarkan, ada sebuah tekanan air yang dia harus dengan pipa 3 dim, jika media/pralon yg Anda gunakan hanya 2.5 dim, maka arus yg keluar menjadi lebih sempit dan tekanan air semakin besar, dengan begitu seharusnya air dapat lewat dengan lancar karena terhambat media/pralon tadi sehingga pancaran air tidak sempurna. 

    Jadi paket data dianalogikan sebagai tekanan air, dan pralon dianalogikan sebagai MTU. Semoga sampai sini dapat dipahami rekan sekalian.

    Baiklah, jika anda menyadari, distribusi internet ke pelanggan paket broadband biasanya pppoe, dan paket dedicated biasanya ip public static. Lalu apa yg membedakan ?

    Kalau paket dedicated, sudah pasti 1500 (atau bahkan bisa lebih), yang nantinya dengan MTU ini plan kedepan dapat dilewati service lain, seperti vpls mpls, eoip, ppp, pppoe, dan lain sebagainya.

    Dan untuk paket broadband standarnya hanya 1480, yakni berkurang 20Bytes dari yang normalnya 1500. Yang terjadi adalah ketika Anda langganan 100Mbps sekalipun, dan request dari pelanggan terlalu tinggi, maka rasa-rasanya bandwidth sebesar itu masih terasa lambat. Pernah mengalami begini ketika menggunakan indihome ? Belum lagi masalah yang lain mengenai filter situs http port 80 yang dilakukan telkom untuk internet sehat, tentu bagi anda yg sudah merasakan pasti terasa bedanya. iya-kan?

    Lalu apa solusinya :
    1. Pindah paket dedicated ! yang ini solusi yg sudah tak perlu pusing pusing lagi bagi anda yg tidak pengen ribet. hehe....
    2. Change MTU, Nah ini paket ngirit bagi anda yg mempertahankan idealisme harga murah penting ngacir... hehehe....
    Saya ngga akan bahas detailnya, hanya memberi kisi-kisi untuk solusi Anda. 
    Pada intinya, Ubah nilai MTU dari interface yg anda dapatkan saat berlangganan paket UPTO/BROADBAND. sesekali coba naikkan (resiko ditanggung sendiri broh).

    Lalu ubah pada profile ppp menjadi NO pada pengaturan change MSS.

    Kemudian buat mangle kira kira begini, Sesuaikan dengan kondisi jaringan Anda.


    / ip firewall mangle
    add chain=forward tcp-flags=syn action=jump jump-target=mss comment=”tcp mss” disabled=no
    add chain=mss protocol=tcp tcp-flags=syn tcp-mss=!536-1460 action=change-mss new-mss=1440 comment=”tcp  mss fixation” disabled=no
    add chain=mss protocol=tcp tcp-flags=syn tcp-mss=1453-65535 action=change-mss new-mss=1440 comment=”tcp  mss 1440 for mtu 1492″ disabled=no
    add chain=mss protocol=tcp tcp-flags=syn action=change-mss new-mss=clamp-to-pmtu comment=”TCP mss clamp-to-pmtu” disabled=no
    add chain=prerouting action=change-ttl new-ttl=set:65 comment=”TCP  mss ttl fix” disabled=no

    Sebagai catatan saya copas dari artikel daryusman :

    Mangle adalah cara mikrotik untuk menandai paket-paket data dan koneksi tertentu. Mangle diterapkan pada routing, bandwidth queues, NAT dan filter rules. Pembacaan dan pelaksanaan rule mangle akan dilakukan dari urutan atas ke bawah secara berurutan.

    MSS (maximum segment size) adalah ukuran maksimal sebuah data (sebelum ditambah IP header) yang dapat diterima sebuah host dalam jaringan sebelumn terkena fargmentasi, atau sebelum dipecah kembali menjadi ukuran yang lebih kecil. Secara default MSS bernilai “yes” artinya router akan otomatis membuat rule mangle change-tcp-mss ketika koneksi VPN terbentuk.

    The FAQ states that you should create the MSS rule to be 40 bytes less than your MTU. Ethernet header can be bigger than 40 bytes. MSS is changed by 44 bytes. PPPoE server and CPE are actually reporting a MTU of 1480, should I change the MSS to 1480 – 44 = 1436.

    Ada masalah bahwa kita tidak bisa mengakses website protocol HTTPS melalui tunnel IPIP, setelah dipelajari disebakan oleh ukuran dari MSS. maka dari itu kita akan menambahkan rule mangle yaitu dengan cara mengubah besar MSS (maximum segment size) dari paket di paket header. biasaya digunakan untuk menghindari adanya fragmentasi pada paket data ketika menggunakan koneksi VPN. berikut ini rulenya:

    /ip firewall mangle add out-interface=ipip1 protocol=tcp tcp-flags=syn  tcp-mss=!0-1436 action=change-mss new-mss=1436 chain=postrouting

    Thursday, October 12, 2017


    Kali ini saya akan bagi script untuk melimit device yang terkoneksi ke mikrotik routerboard secara otomatis.
    Saat ada dhcp lease baru, otomatis menambahkan pada queue simple, silahkan dikembangkan sendiri. Berikut scriptnya, paste pada script menu dhcp server mikrotik.

    #add parent
    :local parent [/queue simple find name=ROOT]
    :local network "172.16.0.0/12,192.168.0.0/16"
    :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=3000k/3000k burst-limit=4000k/4000k 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
    }

    nah nanti jadinya seperti berikut ini

    Sunday, September 24, 2017


    Pada sesi pertama (lihat artikel sebelum ini) dijelaskan mengenai monitor latency mikrotik. Nah sekarang ke scheduler bagaimana menggunakan script tersebut berdasarkan realita di lapangan. Di sini penulis menggunakan interkoneksi Moratel, dimana kualitas Moratel berbanding lurus dengan cost rupiah yg di keluarkan. Karena memang kondisi di area penulis ini terbilang perkotaan namun harga yang lebih reliable adalah Moratel. Pertimbangan saya menggunakan Moratel yakni dari sisi harga dan latency bisa dibilang kecil. Namun ya itu tadi seperti saya bilang, harga berbanding lurus dengan kualitas.
    Untuk area di sini latency ke IIX yakni 11ms tapi kadang putus, kadang ping bengkak, Yah karena memang Moratel ini hanya untuk backup, jadi sewajarnya kalau ada trobel saya alihkan ke ICON+ yang lebih stabil.
    Baiklah, asumsi yang penulis lakukan seperti berikut

    1. Routing base mengunakan OSPF, dimana posisi router ini interkoneksi langsung dengan Metro Moratel
    2. Primary link menggunakan Moratel, backup via Wireless dengan backbone IconPlus
    3. Ketika moratel putus, otomatis pindah wireless
    4. Ketika moratel packet loss diatas 10% pindah ke wireless
    5. Ketika moratel ping bengkak pindah ke wireless

    Sebelum menggunakan script berikut ini, silahkan dibenahi dulu routing OSPF nya, sesuaikan urutan interface OSPF nya. Mari langsung ke script :

    :local avgRtt;
    :local pin
    :local pout
    :local target 10.159.1.5
    /tool flood-ping $target count=10 do={
      :if ($sent = 10) do={
        :set avgRtt $"avg-rtt"
        :set pout $sent
        :set pin $received
      }
    }
    :local ploss (100 - (($pin * 100) / $pout))
    :local logmsg ("Ping Average for $target = ".[:tostr $avgRtt]."ms - packet loss: ".[:tostr $ploss]."%")
        :if ([:tostr $avgRtt] = 0) do={
        :set logmsg ("Ping Average for $target = FAILED, packet loss: ".[:tostr $ploss]."%") }
            :if (([:tostr $ploss] >= 10) || ($avgRtt >= 60))  do={
            :log error $logmsg
            /ip fire mangle set [/ip fire mangle find comment=icmp-to-sbp disabled=yes] disabled=no
            /ip firewall mangle set [/ip firewall mangle find comment="GOOGLE" disabled=yes] disabled=no
            /routing ospf interface set [/routing ospf interface find ip-address=103.77.159.69 cost=10 ] cost=20
            } else {
            :log warning $logmsg
            /ip fire mangle set [/ip fire mangle find comment=icmp-to-sbp disabled=no] disabled=yes
            /ip firewall mangle set [/ip firewall mangle find comment="GOOGLE" disabled=no] disabled=yes
            /routing ospf interface set [/routing ospf interface find ip-address=103.77.159.69 cost=20 ] cost=10
            }
          }

    Silahkan sesuaikan dengan konfigurasi anda. Selamat berkarya,...

    Hai pemirsa, jumpa lagi dengan saya. Kali ini saya akan share bagaimana membuat script mikrotik untuk monitor latency atau ping ke suatu host. Asumsi menggunakan script ini adalah ketika link interkoneksi kita mengalami trobel, intermiitten atau kendala yg lain, kita bisa menambahkan script yang kita mau. Baiklah langsung saja berikut script nya

    :local avgRtt;
    :local pin
    :local pout
    /tool flood-ping 10.159.1.5 count=10 do={
      :if ($sent = 10) do={
        :set avgRtt $"avg-rtt"
        :set pout $sent
        :set pin $received
        :log warning $avgRtt
      }
        :if ($avgRtt <=12) do={
        :log warning "ping $avgRtt ms normal"
        } else {
        :if ($avgRtt >=20) do={
        :log error "ping $avgRtt ms bengkak"
        }
      }
    }

    Silahkan kembangkan sesuai selera. Terima kasih.

    Tuesday, August 8, 2017

    filename=dump-fb.rsc
    addrlist=cidr_facebook
    rm -rfv IP ASN "$filename";
    echo "AS32934 FACEBOOK
    AS54115 FACEBOOK
    AS32934 FACEBOOK
    " > ASN
    echo > IP
    echo -e '/ip firewall address-list\n add list="cidr_dump" address=0.0.0.1\n rem [find list="cidr_dump"]' > "$filename" ;
    #apt-get -q -y install libnet-netmask-perl
    clear
    d=$(date +%H)
    if [ $d -lt 12 ]
    then
      echo -e " Met pagi Om,"
    elif [ $d -lt 16 ]
    then
       echo -e " Met siang om,"
    elif [ $d -lt 20 ]
    then
      echo -e " Sore om,"
    else
      echo -e " Malem om,"
    fi
    echo -e ' Ini daftar AS Number yang akan di-dump :\n\n' ;
    cat ASN;
    echo -e ' Silahkan Tunggu...\n\n' ;
    tail -f IP &
    for ASN in $(cat ASN | awk '{print $1}');
    do
    { whois -h whois.radb.net -- "-i origin $ASN" | grep '^route:' | perl -MNet::Netmask -ne'm!(\d+\.\d+\.\d+\.\d+/?\d*)! or next; $h = $1; $h =~ s/(\.0)+$//; $b=Net::Netmask->new($h); $b->storeNetblock(); END {print map {$_->base()."/".$_->bits()."\n"} cidrs2cidrs(dumpNetworkTable)}'; } >> IP
    sleep 5
    done
    echo "";
    echo -e '### ====== COPY DARI SINI ====== ###'
    sort -V IP | uniq | awk '{print "add list=cidr_dump address=" $1}' >> "$filename"
    echo -e '### ====== EOF ====== ###' >> "$filename"
    sed -i '4d' "$filename"
    cat "$filename"

    Friday, July 28, 2017

    https://github.com/raptorjs/raptor-cache
    https://github.com/isunbejo/raptor-web-panel-admin-bahasa-indonesia/blob/master/raptor10b-r001.sh

    Friday, June 2, 2017

    Pekerjaan networking khususnya manage mikrotik tak selamanya harus di depan layar. Ada kalanya disiasati dengan menggunakan robot atau script. Sehingga saat saat kita tidak bisa monitor, selalu ada robot yang selalu setia menjalankan tugas sesuai kemauan kita pas kita tidak bisa handle. Kali ini saya akan bahas mengenai cek status pada pppoe (cocok banget sm pengguna indih*** nich, haha).
    Baiklah, sebelumnya saya jelaskan apa maksud dari script di bawah ini.
    Kasus :
    default route ke ISP, google lempar ke indi**** dengan jalan di-mark-routing
    ketika indihome putus alias pppoe-client diskonek maka script akan mendeteksi dan menjalankan perintah. Keunggulan script berikut ini tidak terus menerus menjalankan perintah, ada filter sehinga hanya menjalankan perintah saat kondisi diskonek saja. Selanjutnya silahkan kembangkan sendiri. Mari langsung saja scriptnya

    /interface pppoe-client
       :global valuepppoe
       :local clientstatus
        monitor pppoe once do={:set clientstatus $status;:set valuepppoe $status}
       :if ($clientstatus !="connected") do={
          :log warning "status pppoe $clientstatus"
          /ip fire mangle enable [find comment="route-google"]
          :set valuepppoe diskonek
    }
       :if ($clientstatus ="connected" && $valuepppoe="diskonek" ) do={
          :log warning "status pppoe $clientstatus"
          /ip fire mangle disable [find comment="route-google"]
          :set valuepppoe konek
    }
    yang saya tandai merah silahkan diganti sesuai nama pppoe-client yang anda buat.
    Bila berhasil jangan lupa komen di bawah. terima kasih.

    Wednesday, May 3, 2017

    Langsung saja buat file terserah, jangan lupa install

    apt-get -q -y install libnet-netmask-perl
    kemudian buat file misalnya coba.sh

    echo -n "as numbernya contoh AS55666    = "
    read asnum
    whois -h whois.radb.net -- -i origin $asnum| grep '^route:' | perl -MNet::Netmask -ne'm!(\d+\.\d+\.\d+\.\d+/?\d*)! or next; $h = $1; $h =~ s/(\.0)+$//; $b=Net::Netmask->new($h); $b->storeNetblock(); END {print map {$_->base()."/".$_->bits()."\n"} cidrs2cidrs(dumpNetworkTable)}' | awk '{print "/ip firewall address-list add list=cidr_tertentu address=" $1}';
    kalau ingin multi AS Number bisa gunakan script berikut ini

    rm -rfv IP ASN dump.rsc;
    echo "AS58816 GARENAINDO
    " > ASN
    echo > IP
    echo -e '/ip firewall address-list\n add list=cidr_dump address=0.0.0.1\n rem [find list="cidr_dump"]' > dump.rsc ;
    #apt-get -q -y install libnet-netmask-perl
    clear
    d=$(date +%H)
    if [ $d -lt 12 ]
    then
      echo -e "     Met pagi Om,"
    elif [ $d -lt 16 ]
    then
       echo -e "    Met siang om,"
    elif [ $d -lt 20 ]
    then
      echo -e "     Sore om,"
    else
      echo -e "     Malem om,"
    fi
    echo -e '       Ini daftar AS Number yang akan di-dump :\n\n' ;
    cat ASN;
    echo -e '       Silahkan Tunggu...\n\n' ;
    tail -f IP &
    for ASN in $(cat ASN | awk '{print $1}');
    do
    { whois -h whois.radb.net -- "-i origin $ASN" | grep '^route:' | perl -MNet::Netmask -ne'm!(\d+\.\d+\.\d+\.\d+/?\d*)! or next; $h = $1; $h =~ s/(\.0)+$//; $b=Net::Netmask->new($h); $b->storeNetblock(); END {print map {$_->base()."/".$_->bits()."\n"} cidrs2cidrs(dumpNetworkTable)}'; } >> IP
    sleep 5
    done
    cat IP | awk '{print "add list=cidr_dump address=" $1}' >> dump.rsc
    echo -e '### ====== EOF ====== ###' >> dump.rsc
    sed -i '4d' dump.rsc
    cat dump.rsc


    Berikut ini cara instalasi smokeping dengan lighttpd sebagai web servernya. Tentu Anda bertanya tanya mengapa menggunakan lighttpd ? Saya jawab simple aja, karena lebih ringan menggunakan lighttpd daripada apache. Langsung aja

    apt-get install smokeping sendmail lighttpd php5 php5-cgi
    pada file /etc/php5/cgi/php.ini ubah line berikut ini (aktifkan)
    cgi.fix_pathinfo = 1
    lalu pada /etc/lighttpd/lighttpd.conf ubah seperti berikut


    server.modules = (
            "mod_access",
            "mod_alias",
            "mod_compress",
            "mod_redirect",
            "mod_cgi",
            "mod_fastcgi",
            "mod_accesslog",
    #       "mod_rewrite",
    )
    server.document-root        = "/var/www/html"
    server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
    server.errorlog             = "/var/log/lighttpd/error.log"
    server.pid-file             = "/var/run/lighttpd.pid"
    server.username             = "www-data"
    server.groupname            = "www-data"
    server.port                 = 80
    index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
    url.access-deny             = ( "~", ".inc" )
    static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
    compress.cache-dir          = "/var/cache/lighttpd/compress/"
    compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )
    # default listening port for IPv6 falls back to the IPv4 port
    include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
    include_shell "/usr/share/lighttpd/create-mime.assign.pl"
    include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
    dir-listing.activate        = "enable"
    alias.url                  += ( "/cgi-bin/" => "/usr/lib/cgi-bin/",
                                    "/ping" => "/usr/lib/cgi-bin/smokeping.cgi",
                                    "/smokeping" => "/usr/share/smokeping/www" )
    cgi.assign                  = ( ".pl"  => "/usr/bin/perl",
                                   ".cgi" => "/usr/bin/perl",
                                   ".rb"  => "/usr/bin/ruby",
                                   ".erb" => "/usr/bin/eruby",
                                   ".py"  => "/usr/bin/python",
                                   ".php" => "/usr/bin/php-cgi" )

    lalu restart /etc/init.d/lighttpd restart kemudian buka http://ip-smokeping/ping


    Tuesday, April 25, 2017


    Pemirsa, kali ini ada script untuk membuat limit harian 1GB dan setelah 30 hari akan diskonek pada hotspot mikrotik.

    === kuota 1GB per hari, expired 30 hari ===
    on login script :
    {
    :local usernya $user;
    :if ([/ip hotspot user find name=$usernya limit-bytes-total=1000000]="") do={/ip hotspot user set [find name=$usernya] limit-bytes-total=1000000};
    :if ([/system schedule find name=$usernya]="") do={
    /system schedule add name=$usernya interval=30d on-event="/ip hotspot user disable [find name=$usernya]\r\n/ip hotspot active remove [find user=$usernya]\r\n/system schedule remove [find name=$usernya-reset-counter]\r\n/system schedule remove [find name=$usernya]"
    }
    :if ([/system schedule find name="$usernya-reset-counter"]="") do={
    /system schedule add name="$usernya-reset-counter" interval=1d on-event="/ip hotspot user reset-counter [find name=$usernya]"
    }
    }

    Script diatas tambahkan pada hotspot on login script

    Semoga bermanfaat.

    Sunday, April 9, 2017


    Ada kasus, dimana saya buatkan samba server. Nah ketika flashdisk / hdd external ditancapkan ke pc samba yangmana samba tadi tanpa diinstall desktop, hanya CLI / Console Mode, sedangkan operator warnet ngga mungkin kan login, fdisk -l jelas ribet.

    Nah di sini saya buatkan script untuk mount ke flashdisk. berikut scriptnya mount.sh dan penjelasannya


    fdisk -l |grep -e "/dev/sd[c-z]" | awk '{print $1}' > /tmp/diskdeviceoutput
    sdx=$(cat /tmp/diskdeviceoutput | grep sd)
    echo "Mounting $sdx"
    mount $sdx /flashdisk
    untuk detektornya tetep saya pilih fdisk -l, sebenernya bisa juga sih pake dmesg, tapi untuk verifikasinya lebih ribet, kalo fdisk -l jelas, apa yang tertancap disitu jelas flashdisk baru.

    Script di atas maksudnya adalah memfilter fdisk -l dimana flashdisk yang masuk bernama /dev/sdc1 bisa juga /dev/sdd1 dan seterusnya, dan itu ganti ganti. Itulah kenapa saya filter dengan grep -e "/dev/sd[c-z]" yang artinya menampilkan /dev/sd(c sampai z) lalu di filter lagi dengan awk dimana $1 adalah kolom paling kiri kemudian ditulis dalam file /tmp/diskdeviceoutput. Nah dari situ nanti dijadiin variabel sdx untuk mount ke /flashdisk.

    Tinggal nanti dipanggil dari windows pake plink.exe -l USER -pw PASS 192.168.88.3 /home/user/mount.sh