Tuesday, February 27, 2018

MikroTik - Menggunakan Fitur Send Email (+List Konfigurasi SMTP)

  No comments
Assalamu'alaikum Wr. Wb.
Halo! kali ini saya akan menuliskan mengenai penggunaan fitur pengiriman email yang ada di Mikrotik yang mungkin beberapa dari kita belum pernah menggunakannya.

Untuk mengirim Email kita perlu Server SMTP (Simple Mail Transfer Protocol), simpelnya SMTP ini adalah service yang akan mengantarkan Email ke penerima yang kita inginkan (seperti Pos). Teman-teman bisa membangun sendiri Server SMTP-nya atau bisa menggunakan layanan SMTP yang sudah ada dan gratis seperti Gmail dan Outlook.

Berikut adalah konfigurasi untuk beberapa SMTP yang sudah saya coba dan bisa digunakan di Mikrotik:
Outlook.com
Server: smtp-mail.outlook.com
Port: 587
Start TLS: Ya
User/Pass: Alamat Email Outlook Kalian dan Passwordnya
Gmail.com
Server: smtp.gmail.com
Port: 587
Start TLS: Ya
User/Pass: Alamat Email Gmail Kalian dan Passwordnya
Untuk versi RouterOS yang cukup baru (mungkin v6.x+ *mohon dikoreksi) teman-teman bisa langsung memasukkan Server SMTP nya dengan nama domain seperti diatas, namun jika belum mendukung maka teman-teman hanya bisa memasukkan IP Server SMTP nya. Bagaimana cara mengetahui IP nya? bisa dengan kalian ping nama domain tersebut :)

*Catatan:
Jika menggunakan SMTP dari Outlook, teman-teman bisa langsung menggunakannya untuk mengirim Email.

Tapi jika menggunakan SMTP dari Gmail, teman-teman harus 'menurunkan' sedikit keamanan akun-nya agar bisa dipakai untuk autentikasi SMTP melalui Mikrotik.

Dari yang saya baca di Laman Dukungan. Google hanya mengizinkan perangkat yang sudah memenuhi standar keamanan mereka yang dapat masuk menggunakan akun pengguna, dan sampai tulisan ini dibuat (RouterOS v6.41.2) belum bisa menggunakan SMTP Gmail secara langsung tanpa mengubah pengaturan keamanan akun. Memang belum ada perbaikan untuk ini atau memang standar keamanan Google yang terlalu tinggi.
Email yang saya terima jika memaksa masuk
Sehingga solusi sementara adalah menurunkan keamanannya. Caranya hanya dengan mengaktifkan opsi "Izinkan aplikasi yang kurang aman" di pengaturan keamanan akun.

Konfigurasi SMTP
1. Melalui Winbox
Untuk "From" meski bisa dikosongi, disarankan teman-teman untuk mengisinya dengan alamat email yang sama dengan yang teman-teman gunakan untuk autentikasi guna meminimalisir Email masuk spam pada sisi penerima.

2. Melalui CLI
/tool e-mail set address=<alamat server smtp> port=<port smtp> start-tls=yes user <alamat email> password=<password akun> from=<alamat email>

Mulai Mengirim Email!
Untuk mulai mengirim email teman-teman bisa melalui beberapa cara:
1. Melalui GUI Winbox

2. Melalui CLI
/tool e-mail send start-tls=yes <arguments>
Arguments:
to=<satu penerima>
cc=<banyak penerima, dipisahkan koma>
subject=<judul email>
body=<isi email>
file=<path ke file yang ada di storage Mikrotik>

Pastikan tidak ada error apapun di Log setelah mengirim Email.
Dan yap, begitulah caranya! jika email berhasil terkirim, maka teman-teman bisa mengkombinasikan dengan tool lain dan memanfaatkannya untuk hal-hal seperti pengiriman file backup otomatis, pengiriman laporan otomatis, dan sebagainya :)

Referensi:
Mikrotik Wiki - Email

Sekian yang dapat saya tulis, Semoga bermanfaat.
Maaf apabila ada kesalahan dan mohon untuk koreksinya.
Wassalamu'alaikum Wr. Wb.

Saturday, February 24, 2018

MikroTik - Memisahkan Dua Jalur WAN untuk Dua LAN + WAN Failover

  6 comments

Assalamu'alaikum Wr. Wb.
Halo! sebelumnya maaf kalau judulnya terasa aneh, karena saya menuliskannya berdasarkan apa yang saya pahami, hehe.

Seperti judul, saya mempunyai kasus seperti ini:
1. Terdapat 2 WAN (WAN1, WAN2) dan 2 LAN (LAN1, LAN2).
2. Anggap LAN1 adalah untuk Umum dan LAN2 adalah untuk VIP yang Internetnya harus selalu aktif.
3. WAN1 adalah jalur Shared dimana LAN1 dan LAN2 dapat menggunakannya. Namun WAN2 dikhususkan (Dedicated) hanya untuk LAN2.
4 Jalur WAN Utama untuk LAN1 (Umum) adalah menggunakan WAN1 (Shared), dan tidak ada Failover.
5.Jalur WAN Utama untuk LAN2 (VIP) adalah menggunakan WAN2 (Dedicated). Karena Internet untuk LAN2 (VIP) harus tetap aktif maka WAN1 (Shared) digunakan sebagai Jalur Backup jika WAN2 mengalami putus koneksi.
6. Apabila Jalur WAN2 sudah dapat digunakan kembali, maka LAN2 otomatis pindah menggunakan jalur WAN Dedicatednya.


Setelah berpusing-pusing ria dengan Routing Mark + Netwatch + Scripting yang hasilnya kurang memuaskan karena poin nomer 6 belum bisa diselesaikan. Akhirnya saya dapat menyelesaikan semuanya tanpa scripting sama sekali dengan cara berikut:

- Check Gateway (Untuk mengetahui apakah ada akses internet atau tidak)
- Routing Policy + Routing Mark (Untuk memisah jalur WAN)

Untuk Langkahnya:
1. Konfigurasi Dasar
Konfigurasi semua jalur WAN dan LAN seperti biasanya, sampai kedua jalur WAN dapat terkoneksi ke Internet. Untuk catatan karena kita akan mengubah sesuatu di Tabel Routing, pastikan teman-teman membuat Default Route-nya secara static/manual. Karena jika Dynamic maka kita tidak bisa mengubah konfigurasinya.

2. Penyelesaian Poin 2-3
Kita akan membuat aturan Routing Policy yang akan menandai jalur dari LAN2, yang nantinya akan digunakan untuk memisahkan Jalur WAN. Disini kita akan membuat Routing Policy melalui IP -> Route -> Rules.
Isikan Source Address dengan Network dari LAN2, dan Berikan nama untuk Routing Policy-nya (bebas)

Setelah setting dasar pada Langkah 1, kurang lebih isi tabel routing akan seperti ini:
Salah satu default route tidak dalam status aktif, ini normal karena keduanya punya nilai prioritas (Distance) yang sama.

3. Penyelesaian Poin 5-6
Kita akan membuat Check Gateway yang berfungsi untuk mengetahui apakah ada koneksi internet atau tidak.

Cara membuatnya sama seperti kita membuat Default Route, hanya saja Destination Address kita ganti menjadi IP Host yang akan djadikan patokan (dalam hal ini saya akan menggunakan IP dari DNS Google).

Lalu hidupkan Check Gateway dan pilih opsi ping, ini akan mengaktifkan ping otomatis tiap 10 detik ke host yang bersangkutan. Buatlah Check Gateway ini sesuai dengan banyaknya jalur WAN yang teman-teman ingin monitor.

Setelah itu kita buka Default Route dan Check Gateway dari Jalur WAN2, hidupkan Routing Mark dan pilih nama Routing Policy yang sebelumnya kita buat. Ini akan membuat Jalur WAN2 dikhususkan hanya untuk LAN2, dan membuat kedua Default Route bisa aktif bersamaan.

Selesai!
Ringkasannya adalah sebagai berikut:
- Kita mengkonfigurasi semuanya seperti biasa
- Lalu membuat Routing Policy untuk menandai jalur LAN2
- Kemudian kita buat Check Gateway untuk melakukan pengecekan otomatis ketersediaan akses Internet tiap WAN.
- Dan akhirnya memberikan Routing Policy ke route WAN2, yang hasilnya akan memisah jalur WAN2 khusus untuk LAN2 saja.
- Dengan dibuatnya Check Gateway, Jika koneksi internet WAN2 putus/tidak tersedia, maka otomatis Default Route WAN2 akan dimatikan / menjadi tidak aktif. Dan karna WAN1 juga mempunyai Default Route dan tidak terdapat Routing Policy di route nya maka LAN2 bisa langsung menggunakannya untuk jalur cadangan.
- Apabila jalur WAN2 sudah pulih dan terdapat akses internet, segera setelah Check Gateway mengirimkan ping dan berhasil maka otomatis Default Route dari WAN2 akan kembali aktif dan traffic LAN2 kembali diarahkan ke WAN2.

WAN2 Tidak ada Koneksi


WAN2 Kembali ada Koneksi

Referensi:
Mikrotik.id - Pengenalan Fungsi Routing Dasar
- Mikrotik Wiki - Advanced Routing Failover without Scripting

Sekian yang dapat saya tulis, Semoga bermanfaat.
Maaf apabila ada kesalahan dan mohon untuk dikoreksi.
Wassalamu'alaikum Wr. Wb.

Thursday, January 18, 2018

Git - Include Hanya Folder/File Tertentu, Exclude Sisanya

  No comments
Source Image: git-scm
Assalamu'alaikum Wr. Wb.
Baru-baru ini saya menggunakan Git untuk melakukan tracking dan manajemen source code aplikasi yang iseng saya tulis. Dengan menggunakan Version Control seperti Git sangat membantu saya dalam melakukan perubahan pada kode, karena tidak perlu membuat incremental backup secara manual.

Tepatnya hari ini, saya mendapatkan kendala karena belum berhasil mengatur file .gitignore untuk meng-include hanya sebuah folder + seisinya dan sisanya tidak diikutsertakan untuk ditrack. Setelah membaca dokumentasi resminya dan membaca blog milik orang lain akhirnya tercerahkan juga. Memang cukup mudah, tapi cukup membingungkan juga hehe.

Inilah .gitignore yang saya gunakan sebelumnya:

- Coba 1 (Tidak work)
*
!a/b/

- Coba 2 (Tidak work)
*
!a/b/*.[html|css|js|md|png]

- Coba 3 (Work tapi tidak praktis)
**.*
!**/**.html
!**/**.css

!**/**.js
!**/**.md
!**/**.png

Kupas Masalah dan Sedikit Faktanya:
1. File ".gitignore" digunakan untuk memberitahu Git agar tidak mengikutsertakan (exclude) file/folder dalam trackingnya, sesuai dengan daftar yang ada di dalam file ".gitignore"
"The purpose of gitignore files is to ensure that certain files not tracked by Git remain untracked."
2. Meski begitu, ada opsi negasi untuk mengikutsertakan kembali file/folder yang kita exclude, yaitu dengan menambahkan karakter "!" pada awal baris.
"An optional prefix "!" which negates the pattern; any matching file excluded by a previous pattern will become included again." 
3. ".gitignore" mendukung pola untuk mencari file, Tapi bukan pola RegEx.
Ini adalah alasan kenapa contoh "Coba 2" tidak bekerja. Karena pola yang digunakan untuk mencari kecocokan file adalah pola Regular Expression.
"..Git treats the pattern as a shell glob suitable for consumption by fnmatch(3).."
4. Leading Slash yang menurut saya cukup unik
Jika kita melihat template .gitignore yang ada di GitHub. Teman-teman sadar kalau cara penulisannya tidak semuanya sama, dalam hal ini kita membicarakan karakter slash diawal. Ada yang menggunakan slash diawal dan ada juga yang tidak.

Akan tetapi dalam kasus saya, slash awal ini punya efek yang membuat saya bingung pada awalnya (karena semua pattern yang saya coba tidak bekerja). Dan dalam contoh "Coba 1" diatas, pattern yang saya gunakan mirip dengan contoh yang bekerja yang saya gunakan sekarang, hanya berbeda slash diawal.

Oke, dengan sedikit kupasan dan fakta diatas kita akan mencoba menyelesaikan masalah pada topik artikel ini.
Untuk meng-include kembali folder beserta isinya, yang perlu teman-teman lakukan adalah menuliskan path dari folder nya satu-persatu berdasarkan level foldernya (jika subfolder).

Contoh, saya akan meng-exclude semua file kecuali folder satu dan isinya.

├── README.md
└── satu
    ├── dua
    └── tiga
        └── halo.txt

Ekspektasi kita adalah folder satutiga dan file "halo.txt" dibaca oleh Git dan statusnya menjadi Untracked. namun lainnya akan diabaikan.

Konten .gitignore:
/*
!/satu/

Sebelum memakai .gitignore:
Perhatikan tanda "U" dan warna hijau pada Sidebar.



Sesudah memakai .gitignore:
Perhatikan tanda "U" dan warna hijau pada Sidebar.

Teman-teman mungkin bertanya kenapa folder dua tidak menjadi warna hijau/Untracked? jawabannya adalah karena Git hanya melakukan tracking pada file. Folder dapat ikut ditrack jika ada file didalamnya, nah dalam contoh ini folder dua kondisinya kosong sehingga diabaikan oleh Git.

Referensi:
- Git Documentation - gitignore
- ConSol Labs - Using .gitignore the Right Way

Mungkin cukup sekian yang dapat saya tulis, Mohon maaf jika ada kesalahan dan mohon untuk dikoreksi. Wassalamu'alaikum Wr. Wb.