25 November 2013

Konfigurasi Dasar Dinding Api pada Vyatta Core


Konfigurasi ini dilakukan dengan simulasi sistem operasi virtual. Perangkat lunak yang digunakan adalah sebagai berikut:
Topologi logik yang dibangun ditunjukkan pada gambar berikut:

Tujuan simulasi yang ingin dicapai:
  1. Konfigurasi antarmuka jaringan dan alamat IP pada semua sistem sesuai topologi.
  2. Konfigurasi dinding api global stateful pada Vyatta Core.
  3. Konfigurasi dinding api berbasis zona (zone-based firewall) pada Vyatta Core. Zona yang dikonfigurasi adalah zona Lokal (Local-Zone), zona Outside (eth0), zona Inside (eth1) dan zona DMZ (eth2). Kebijakan lalu lintas data antar zona adalah sebagai berikut:
    • Dari zona Lokal ke zona Outside/zona Inside/zona DMZ: accept
    • Dari zona Outside/zona Inside/zona DMZ ke zona Lokal: drop kecuali SSH dan ICMP accept.
    • Dari zona Outside ke zona Inside: drop.
    • Dari zona Outside ke zona DMZ: drop kecuali SSH dan HTTP ke Debian-DMZ accept.
    • Dari zona Inside ke zona Outside/zona DMZ: accept
    • Dari zona DMZ ke zona Outside: accept
    • Dari zona DMZ ke zona Inside: drop
  4. Konfigurasi SNAT Masquerade (PAT) pada Vyatta Core untuk lalu lintas data dari BlankOn-Inside menuju zona Outside dan zona DMZ.
  5. Konfigurasi NAT dua arah (bidirectional NAT) pada Vyatta Core untuk lalu lintas data dari zona Outside menuju Debian-DMZ dan kebalikannya.
Contoh konfigurasi Vyatta Core untuk simulasi di atas adalah sebagai berikut:

firewall {
    all-ping enable
    broadcast-ping disable
    ipv6-receive-redirects disable
    ipv6-src-route disable
    ip-src-route disable
    log-martians enable
    name DMZ_TO_INSIDE {
        default-action drop
    }
    name DMZ_TO_LOCAL {
        default-action drop
        rule 1 {
            action accept
            destination {
                port ssh
            }
            protocol tcp
        }
        rule 2 {
            action accept
            protocol icmp
        }
    }
    name DMZ_TO_OUTSIDE {
        default-action accept
    }
    name INSIDE_TO_DMZ {
        default-action accept
    }
    name INSIDE_TO_LOCAL {
        default-action drop
        rule 1 {
            action accept
            destination {
                port ssh
            }
            protocol tcp
        }
        rule 2 {
            action accept
            protocol icmp
        }
    }
    name INSIDE_TO_OUTSIDE {
        default-action accept
    }
    name LOCAL_TO_DMZ {
        default-action accept
    }
    name LOCAL_TO_INSIDE {
        default-action accept
    }
    name LOCAL_TO_OUTSIDE {
        default-action accept
    }
    name OUTSIDE_TO_DMZ {
        default-action drop
        rule 1 {
            action accept
            destination {
                address 172.16.0.10
                port ssh,http
            }
            protocol tcp
        }
    }
    name OUTSIDE_TO_INSIDE {
        default-action drop
    }
    name OUTSIDE_TO_LOCAL {
        default-action drop
        rule 1 {
            action accept
            destination {
                port ssh
            }
            protocol tcp
        }
        rule 2 {
            action accept
            protocol icmp
        }
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    state-policy {
        established {
            action accept
        }
        invalid {
            action drop
            log {
                enable
            }
        }
        related {
            action accept
        }
    }
    syn-cookies enable
}
interfaces {
    ethernet eth0 {
        address 10.0.0.2/24
        address 10.0.0.10/24
        description "antarmuka OUTSIDE"
        duplex auto
        hw-id 08:00:27:94:27:df
        smp_affinity auto
        speed auto
    }
    ethernet eth1 {
        address 192.168.0.1/24
        description "antarmuka INSIDE"
        duplex auto
        hw-id 08:00:27:e6:88:61
        smp_affinity auto
        speed auto
    }
    ethernet eth2 {
        address 172.16.0.1/24
        description "antarmuka DMZ"
        duplex auto
        hw-id 08:00:27:68:de:ac
        smp_affinity auto
        speed auto
    }
    loopback lo {
    }
}
nat {
    destination {
        rule 3 {
            description "DNAT dari zona OUTSIDE ke Debian-DMZ"
            destination {
                address 10.0.0.10
            }
            inbound-interface eth0
            translation {
                address 172.16.0.10
            }
        }
    }
    source {
        rule 1 {
            description "SNAT Masquerade dari zona INSIDE ke zona OUTSIDE"
            outbound-interface eth0
            source {
                address 192.168.0.0/24
            }
            translation {
                address masquerade
            }
        }
        rule 2 {
            description "SNAT Masquerade dari zona INSIDE ke zona DMZ"
            outbound-interface eth2
            source {
                address 192.168.0.0/24
            }
            translation {
                address masquerade
            }
        }
        rule 3 {
            description "SNAT dari Debian-DMZ ke zona OUTSIDE"
            outbound-interface eth0
            source {
                address 172.16.0.10
            }
            translation {
                address 10.0.0.10
            }
        }
    }
}
protocols {
    static {
        route 0.0.0.0/0 {
            next-hop 10.0.0.1 {
            }
        }
    }
}
service {
    ssh {
        port 22
    }
}
system {
    config-management {
        commit-revisions 100
    }
    host-name vyatta-core
    login {
        banner {
            pre-login ""
        }
        user utian {
            authentication {
                encrypted-password $1$xfieuOG9$71yatduWgwVlWf.XzHbmr/
            }
            level admin
        }
    }
    ntp {
        server 0.vyatta.pool.ntp.org {
        }
        server 1.vyatta.pool.ntp.org {
        }
        server 2.vyatta.pool.ntp.org {
        }
    }
    package {
        auto-sync 1
        repository community {
            components main
            distribution stable
            password ""
            url http://packages.vyatta.com/vyatta
            username ""
        }
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone GMT
}
zone-policy {
    zone DMZ {
        default-action drop
        from INSIDE {
            firewall {
                name INSIDE_TO_DMZ
            }
        }
        from LOCAL {
            firewall {
                name LOCAL_TO_DMZ
            }
        }
        from OUTSIDE {
            firewall {
                name OUTSIDE_TO_DMZ
            }
        }
        interface eth2
    }
    zone INSIDE {
        default-action drop
        from DMZ {
            firewall {
                name DMZ_TO_INSIDE
            }
        }
        from LOCAL {
            firewall {
                name LOCAL_TO_INSIDE
            }
        }
        from OUTSIDE {
            firewall {
                name OUTSIDE_TO_INSIDE
            }
        }
        interface eth1
    }
    zone LOCAL {
        default-action drop
        from DMZ {
            firewall {
                name DMZ_TO_LOCAL
            }
        }
        from INSIDE {
            firewall {
                name INSIDE_TO_LOCAL
            }
        }
        from OUTSIDE {
            firewall {
                name OUTSIDE_TO_LOCAL
            }
        }
        local-zone
    }
    zone OUTSIDE {
        default-action drop
        from DMZ {
            firewall {
                name DMZ_TO_OUTSIDE
            }
        }
        from INSIDE {
            firewall {
                name INSIDE_TO_OUTSIDE
            }
        }
        from LOCAL {
            firewall {
                name LOCAL_TO_OUTSIDE
            }
        }
        interface eth0
    }
}

17 October 2013

Memasang OpenVZ dan OpenVZ Web Panel (OWP) Pada BlankOn Rote

Ceritanya begini. Anda berprofesi sebagai instruktur Linux atau pengadministrasi sistem Linux. Kemudian anda perlu melakukan simulasi dengan banyak sistem Linux virtual. Komputer destop/laptop anda sudah terpasang BlankOn Rote, namun menjalankan banyak Linux virtual di aplikasi virtualisasi menyeluruh seperti Virtualbox atau Qemu KVM "terasa sangat berat". Nah, dalam kondisi ini OpenVZ mungkin bisa meringankan perasaan anda.

Berikut ini langkah-langkah untuk memasang OpenVZ dan OpenVZ Web Panel (OWP) pada BlankOn Rote. Selamat menikmati, eh mengikuti.

1. Mutakhirkan sistem BlankOn Rote 64bit anda.
sudo aptitude update
sudo aptitude upgrade
2. Tambahkan baris lumbung paket berikut di berkas /etc/apt/sources.list
deb http://download.openvz.org/debian wheezy main

3. Mutakhirkan kembali sistem BlankOn Rote 64bit anda.
sudo aptitude update

4. Pasang paket-paket OpenVZ
sudo aptitude install linux-image-2.6.32-openvz-042stab081.5-amd64 linux-headers-2.6.32-openvz-042stab081.5-amd64 vzctl vzdump vzkernel-firmware vzquota vzstats
Catatan:
  • Sesuaikan nama dan versi paket linux-image dan linux-headers yang tersedia di lumbung paket OpenVZ.
  • Pemasangan paket vzkernel-firmware mungkin akan konflik dengan paket-paket firmware bawaan BlankOn Rote. Silahkan anda putuskan sendiri apakah anda akan memasang paket vzkernel-firmware dari lumbung OpenVZ atau tetap menggunakan paket-paket firmware bawaan BlankOn Rote dan tidak memasang paket vzkernel-firmware.

5. Muat ulang komputer anda dan boot ke kernel OpenVZ yang baru dipasang  (linux-image-2.6.32-openvz-042stab081.5-amd64).

6. Cek dan bandingkan apakah semua perangkat keras komputer anda berfungsi dengan baik seperti saat menggunakan kernel bawaan BlankOn Rote. Jika ada perangkat keras yang tidak berfungsi, silahkan perbaiki sendiri misal dengan memasang (ulang) paket penggerak atau firmware yang sesuai. Jika semua perangkat keras berfungsi normal, anda boleh menghapus atau tetap membiarkan kernel Linux bawaan BlankOn Rote terpasang.

7. Cek dan pastikan layanan OpenVZ berjalan.
sudo /etc/init.d/vz status

8. Unduh berkas skrip shell pemasang OWP.
wget -c http://ovz-web-panel.googlecode.com/svn/installer/ai.sh

Catatan:
Saat tulisan ini dibuat, OWP terbaru adalah versi 2.4.

9. Edit berkas skrip shell pemasang OWP ai.sh. Ubah baris berikut:


if [ "$DISTRIB_ID" = "Ubuntu" -o "$DISTRIB_ID" = "Debian" ]; then

menjadi
if [ "$DISTRIB_ID" = "Blankon" ]; then

apt-get -y install ruby rubygems libsqlite3-ruby libopenssl-ruby rake

menjadi
apt-get -y install ruby1.8 rubygems libsqlite3-ruby libopenssl-ruby rake
10. Jalankan skrip shell pemasang OWP.
sudo sh ai.sh

11. Cek dan pastikan layanan OWP berjalan.
sudo /opt/ovz-web-panel/script/owp status

12. Jalankan peramban web Chromium dan buka alamat http://localhost:3000. Kemudian masuk OWP dengan akun dan kata kunci bawaan admin/admin.

13. Uji hasil pemasangan dengan membuat server virtual. Jika berhasil, tampilan layar akan seperti berikut:



Catatan:
Antarmuka jaringan BlankOn Rote untuk berkomunikasi dengan Linux virtual adalah venet0. Anda dapat melakukan konfigurasi jaringan lanjutan pada antarmuka tersebut. Misal dikonfigurasi bridge dengan antarmuka ethX atau wlanX.

15 July 2013

Si Sombong dan 6 Galon Aqua


Kemarin (14/07/2013) adalah hari ke-6 puasa Ramadhan 1434 H bagiku. Sudah lebih dari 4 minggu aku, istriku dan anak-anakku tidak pulang ke rumah di Bogor. Selama ini kami menetap sementara di rumah orang tua istriku alias mertuaku di daerah Bekasi Barat agar lebih mudah mengerjakan berbagai urusan di Jakarta. Dan kemarin adalah hari di mana kami pulang ke Bogor.

Ada beberapa kegiatan lain yang kurencanakan bersamaan dengan perjalanan pulang ke Bogor. Begini daftar rencananya:
  1. Sekitar jam 15 berangkat dari rumah mertua menuju bandara Soekarno Hatta (Soetta) untuk menjemput ibuku dan 3 orang keponakanku yang baru pulang liburan dari Sanana, Kabupaten Kepulauan Sula.
  2. Sekitar jam 16 tiba di bandara Soetta dan berangkat ke rumah orang tuaku yang juga berlokasi di Bogor untuk mengantar ibu dan keponakanku.
  3. Sekitar jam 18 buka puasa bersama ibuku dan kakak-kakakku dan keluarga mereka di rumah orang tuaku.
  4. Sekitar jam 20 berangkat pulang ke rumahku dan sampai di rumah sekitar jam 20:30.
Sekitar jam 14 aku dan istriku bersiap-siap mengemas pakaian dan barang-barang. Saat kami bersiap-siap, mobil yang akan kami gunakan untuk perjalanan pulang masih digunakan oleh adik ipar perempuan dan ibu mertuaku untuk belanja berbagai barang dan bahan pokok kebutuhan rumah tangga di salah satu supermarket popular.

Sekitar jam 14:30 adik ipar dan ibu mertuaku pulang. Mobil diparkir di garasi, semua barang-barang hasil belanja dikeluarkan dari mobil, dibawa masuk ke rumah dan dirapihkan ke tempatnya masing-masing, kecuali 3 galon aqua berisi (1 galon yang kumaksud adalah 19 liter air mineral). 3 galon aqua berisi itu masih ada di dalam mobil.

Aku maklum galon-galon aqua berisi itu terlalu berat untuk dibawa adik iparku atau ibu mertuaku. Lebih lagi setahuku mereka puasa. Saat itu, hanya akulah laki-laki dewasa termuda setinggi 160 cm, seberat 65 kg yang berbadan sehat (jiwa mungkin juga) yang berada di rumah mertuaku yang pantas membawa masuk ke-3 galon aqua itu. Dan tentu saja itu harus aku lakukan karena mobil itu akan kami gunakan untuk perjalanan pulang ke Bogor dan tidak mungkin membawa 3 galon aqua itu ke Bogor karena itu diperlukan ibu mertuaku. Dan juga ruang di dalam mobil kami perlukan untuk menyimpan barang-barang yang akan ikut kami pulang. Jadi, aku lakukan. Kuangkat satu per satu galon-galon aqua berisi itu dari dalam mobil kemudian kumasukkan ke dalam rumah dan kusimpan di tempat biasa galon-galon aqua tersimpan.

"Ayo, Pap. Semangat.Istriku yang manis sambil membereskan kereta bayi di lapangan bermain dekat garasi tersenyum memberi semangat kepadaku yang beraktivitas berat melewati efek panas terik matahari Jakarta jam 14:45 (padahal 2 hari sebelumnya mendung dan hujan terus menerus sepanjang siang dan malam).

"Tenang, Mam. Papa sih ngangkat 3 galon lagi yang kayak gini masih kuat". Itu jawabku setengah bercanda dengan perasaan dan logat sombong pada istriku. Kalimat jawabanku di atas kucetak tebal untuk menunjukkan kepada anda bahwa itulah kalimat inti dari cerita setengah panjang ini.

3 galon selesai dibereskan. Barang-barang kami selesai kumasukkan ke dalam mobil. Namun, sebelum berpamitan dengan mertua dan adik iparku, kulihat botol minumku yang selalu ada di dalam mobil itu kosong. Terpikir olehku seandainya jalanan macet dan aku harus buka puasa selagi masih dalam perjalanan maka aku bisa minum air dari botol minumku jika botol itu terisi air. Dari pemikiranku yang jenius itu, akhirnya aku meminta bantuan istriku untuk mengisi botol minumku dengan air dari dispenser di dalam rumah mertuaku.

"Duhai adindaku, bidadariku, permata hatiku. Sudikah kiranya engkau membantu kakanda mengisi botol minuman ini? Karena hanya dengan meminum air yang dituangkan oleh tanganmu saja yang dapat menghilangkan dahaga raga dan jiwaku". Pintaku kepada istriku sambil menyodorkan botol minum.

"Duhai, kakanda. Dukamu adalah dukaku, bahagiamu adalah bahagiaku. Akan kutuangkan air ke dalam  botol minuman itu seiring curahan rasa cintaku kepadamu." Jawab istriku kepadaku sambil mengambil botol minum yang kusodorkan.

Sebetulnya jawaban istriku tidak seperti itu sih. Dia hanya mengerutkan kening dan bilang "Iya Pap, sini aku isikan botolnya" sambil mengambil botol yang aku sodorkan kemudian masuk ke dalam rumah. Aku melanjutkan memeriksa barang-barang di dalam mobil, memastikan semua tersusun rapi dan tidak ada barang yang tertinggal.

"Kakandaaaaa..." eh "Paaaaaap..." suara panggilan istriku kudengar dari dalam rumah mertuaku. "Iya, maaaam?" aku bertanya. "Botolnya belum bisa diisi, galonnya kosong" terang istriku.

Aku membatin "Ternyata urusan angkat galon ini belum selesai". Aku harus menangkat 1 galon aqua lainnya dari tempat penyimpanan menggantikan galon aqua di atas dispenser yang sudah kosong. Serius, bagiku mengangkat total 3 galon aqua dari garasi mobil ke dalam rumah di tengah udara panas saat puasa sudah membuatku berkeringat dan "ngos-ngosan". Dan sekarang aku harus mengangkat 1 galon lainnya lagi. Ini merupakan sebuah situasi dengan tantangan yang luar biasa. Tapi, aku sukses melewatinya. Botol minum terisi penuh, kami pamit dan memulai perjalanan ke bandara Soetta.

Sekitar jam 16, kami tiba di bandara. Kakakku ternyata datang juga ke bandara untuk menjemput Ibuku dan 3 keponakanku yang salah satunya adalah anaknya. Kemudian kami langsung berangkat beriringan menuju ke Bogor.

Sekitar jam 18, kami tiba di rumah orang tuaku. Kami segera minum dan makan berbuka puasa di ruang tamu. Makanan dan minuman yang kami makan sebagian dibeli saat perjalanan dari bandara ke rumah orang tuaku. "Paaappp, pengen minum air putih" tiba-tiba anak pertamaku, Mika (4) menyampaikan keinginannya kepadaku. "Ambil lah sendiri di dispenser di ruang makan. Mika kan udah besar" aku meminta Mika untuk belajar mandiri. "Tapi galonnya kosong" Mika menjelaskan kepadaku.

Aku membatin kembali "Ternyata urusan angkat galon ini masih berlanjut". Saat itu di rumah orang tuaku sebetulnya kakakku yang tinggi dan berat badannya lebih besar dari aku yang paling cocok mengganti galon aqua kosong. Tapi karena saat itu yang perlu minum segera adalah anakku sendiri, jadi ya kukerjakan sendiri juga angkat dan ganti galon aqua-nya. Lagi.

Sesuai rencanaku, sekitar jam 20 aku, istriku dan anak-anakku berangkat dari rumah orang tuaku untuk pulang ke rumah. Dan sesuai rencana pula sekitar jam 20:30 kami sampai di rumah. Setelah selesai kumenurunkan kembali semua barang-barang dari dalam mobil, istriku yang berinisiatif akan membuatkan susu hangat untukku menghampiriku dan berkata "Pap, galonnya kosong".

"Astagfirallahalajim" ujarku.

13 July 2013

Membuat Cermin Lumbung Paket Distro dan Aplikasi Favorit

Sebagai penggemar FOSS, saya mengkoleksi lumbung paket distro dan aplikasi favorit saya. Lumbung paket ini saya simpan lokal di harddisk eksternal yang selalu saya mutakhirkan setidaknya satu minggu satu kali saat sedang terkoneksi ke internet di rumah ataupun di kantor. Biasanya pemutakhiran lumbung paket ini saya eksekusi saat koneksi internet tidak sibuk digunakan oleh orang rumah (istri dan anak-anak) atau orang kantor (teman, bos dan satpam). Ukuran total lumbung paket ini sangat besar dan saat dimutakhirkan akan mengunduh berkas-berkas paket dalam jumlah yang cukup besar pula.

Daftar distro dan aplikasi favorit yang saat ini lumbung paketnya saya buat cermin adalah sebagai berikut:
  1. BlankOn 8 Rote (stabil) dan  9 Suroboyo (pengembangan), ini adalah distro terbaik se-nusantara.
  2. Paket DEB Google Chrome, peramban web kompetitor serius Mozilla Firefox.
  3. Paket DEB Google Earth, cuma pengen aja. Mungkin karena Google.
  4. Paket DEB Google Talk/Hangouts Plugin, plugin agar peramban web dapat melakukan obrel suara dan video Google Talk/Hangouts.
  5. Paket DEB Opera, peramban web alternatif Mozilla Firefox dan Google Chrome.
  6. Paket DEB Oracle Virtualbox, agar dapat menggunakan versi terbaru Virtualbox lebih awal.
  7. Vyatta Community 6.6, distro router/dinding api (firewall) terbaik.
  8. Proxmox VE 3, distro virtualisasi KVM dan OpenVZ terbaik.
  9. Debian Wheezy, Jessie dan Sid, distro terkeren se-dunia.
  10. Debian Security dan Debian Multimedia, lumbung paket pendukung lumbung paket utama Debian.
  11. Ubuntu Precise (LTS terbaru) dan Raring (rilis terbaru), jaga-jaga kalau dapat permintaan perkerjaan mengajar/implementasi Ubuntu.
  12. Canonical Partner, lumbung paket pendukung lumbung paket utama Ubuntu.
  13. Kali dan Kali Security, jaga-jaga kalau dapat permintaan perkerjaan mengajar/implementasi Kali.
  14. CentOS 6, ini distro favorit di kantor-kantor di Jakarta, jaga-jaga kalau dapat permintaan perkerjaan mengajar/implementasi CentOS.
  15. EPEL, DAG, ATRPMS EL6, lumbung paket pendukung lumbung paket utama CentOS 6.
  16. ClearOS 6 Community dan Professional, ini distro server terintegrasi favorit beberapa kantor di Jakarta, jaga-jaga kalau dapat permintaan perkerjaan mengajar/implementasi ClearOS.
  17. Fedora 17, ini distro RPM popular. Versi 17 adalah versi terbaru -2 yang pemutakhirannya dihentikan 1 bulan setelah rilis versi terbaru (19). Cocok untuk bahan ajar Linux RPM.
  18. Fedora 19, ini distro RPM popular. Versi 19 adalah versi terbaru, jaga-jaga kalau dapat permintaan perkerjaan mengajar/implementasi Fedora.

Karena pemutakhiran lumbung paket ini saya eksekusi rutin dan lumbung paket yang dimutakhirkan berjumlah banyak, maka untuk memudahkan saya membuat berkas skrip bash untuk memudahkan eksekusi. Isi skrip adalah daftar pemutakhiran lumbung paket distro dan aplikasi favorit menggunakan debmirror (untuk paket-paket .deb) dan rsync (untuk paket-paket .rpm). Skrip bash pembuatan/pemutakhiran cermin lumbung paket distro dan aplikasi di atas adalah sebagai berikut:

#!/bin/bash
debmirror -p -v --nosource --rsync-extra=none -h arsip.blankonlinux.or.id --method=http -r blankon -d rote,rote-security,rote-updates,suroboyo,suroboyo-security,suroboyo-updates -s main,restricted,extras,extras-restricted -a i386,amd64 /media/exthdd/Repositories/blankon
debmirror -p -v --nosource --rsync-extra=none -h dl.google.com --method=http -r linux/chrome/deb -d stable -s main -a i386,amd64 /media/exthdd/Repositories/debian-chrome
debmirror -p -v --nosource --rsync-extra=none -h dl.google.com --method=http -r linux/earth/deb -d stable -s main -a i386,amd64 /media/exthdd/Repositories/debian-earth
debmirror -p -v --nosource --rsync-extra=none -h dl.google.com --method=http -r linux/talkplugin/deb -d stable -s main -a i386,amd64 /media/exthdd/Repositories/debian-talkplugin
debmirror -p -v --nosource --rsync-extra=none -h deb.opera.com  --method=http -r opera -d stable -s non-free -a i386,amd64 /media/exthdd/Repositories/debian-opera
debmirror -p -v --nosource --rsync-extra=none -h download.virtualbox.org --method=http -r virtualbox/debian -d wheezy,precise,raring -s non-free,contrib -a i386,amd64 /media/exthdd/Repositories/debian-virtualbox
debmirror -p -v --nosource --rsync-extra=none -h packages.vyatta.com --method=http -r vyatta -d VC6.6 -s main -a i386,amd64 /media/exthdd/Repositories/vyatta
debmirror -p -v --nosource --rsync-extra=none --ignore-release-gpg -h download.proxmox.com --method=http -r debian -d wheezy -s pve -a i386,amd64 /media/exthdd/Repositories/proxmox-ve
debmirror -p -v --nosource --rsync-extra=none -h kambing.ui.ac.id  --method=http -r debian -d wheezy,wheezy-backports,wheezy-proposed-updates,wheezy-updates,jessie,jessie-proposed-updates,sid -s main,contrib,non-free -a i386,amd64 /media/exthdd/Repositories/debian
debmirror -p -v --nosource --rsync-extra=none -h kambing.ui.ac.id  --method=http -r debian-security -d wheezy/updates,jessie/updates -s main,contrib,non-free -a i386,amd64 /media/exthdd/Repositories/debian-security
debmirror -p -v --nosource --rsync-extra=none -h kambing.ui.ac.id  --method=http -r debian-multimedia -d wheezy,jessie,sid -s main,non-free -a i386,amd64 /media/exthdd/Repositories/debian-multimedia
debmirror -p -v --nosource --rsync-extra=none -h kambing.ui.ac.id  --method=http -r ubuntu -d precise,precise-security,precise-updates,raring,raring-security,raring-updates -s main,multiverse,restricted,universe -a i386,amd64 /media/exthdd/Repositories/ubuntu
 ./debmirror -p -v --nosource --rsync-extra=none -h archive.canonical.com --method=http -r / -d precise,raring -s partner -a i386,amd64 /media/exthdd/Repositories/ubuntu-partner
debmirror -p -v --nosource --rsync-extra=none -h http.kali.org --method=http -r / -d kali -s contrib,main,non-free -a i386,amd64 /media/exthdd/Repositories/kali
debmirror -p -v --nosource --rsync-extra=none -h security.kali.org --method=http -r / -d kali/updates -s contrib,main,non-free -a i386,amd64 /media/exthdd/Repositories/kali-security
rsync -avzH --delete kambing.ui.ac.id::centos/6/centosplus/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/centosplus/
rsync -avzH --delete kambing.ui.ac.id::centos/6/contrib/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/contrib/
rsync -avzH --delete kambing.ui.ac.id::centos/6/cr/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/cr/
rsync -avzH --delete kambing.ui.ac.id::centos/6/extras/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/extras/
rsync -avzH --delete kambing.ui.ac.id::centos/6/fasttrack/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/fasttrack/
rsync -avzH --delete kambing.ui.ac.id::centos/6/os/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/os/
rsync -avzH --delete kambing.ui.ac.id::centos/6/updates/x86_64/ /media/exthdd/Repositories/centos/6/x86_64/updates/
rsync -avzH --delete kambing.ui.ac.id::centos/6/centosplus/i386/ /media/exthdd/Repositories/centos/6/i386/centosplus/
rsync -avzH --delete kambing.ui.ac.id::centos/6/contrib/i386/ /media/exthdd/Repositories/centos/6/i386/contrib/
rsync -avzH --delete kambing.ui.ac.id::centos/6/cr/i386/ /media/exthdd/Repositories/centos/6/i386/cr/
rsync -avzH --delete kambing.ui.ac.id::centos/6/extras/i386/ /media/exthdd/Repositories/centos/6/i386/extras/
rsync -avzH --delete kambing.ui.ac.id::centos/6/fasttrack/i386/ /media/exthdd/Repositories/centos/6/i386/fasttrack/
rsync -avzH --delete kambing.ui.ac.id::centos/6/os/i386/ /media/exthdd/Repositories/centos/6/i386/os/
rsync -avzH --delete kambing.ui.ac.id::centos/6/updates/i386/ /media/exthdd/Repositories/centos/6/i386/updates/
rsync -avzH --delete --exclude=debug --exclude=repoview ftp.riken.jp::fedora/epel/6/x86_64/ /media/exthdd/Repositories/epel/6/x86_64/
rsync -avzH --delete --exclude=debug --exclude=repoview ftp.riken.jp::fedora/epel/6/i386/ /media/exthdd/Repositories/epel/6/i386/
rsync -avzH --delete --exclude=testing ftp.riken.jp::dag/redhat/el6/en/x86_64/ /media/exthdd/Repositories/dag/redhat/el6/x86_64/
rsync -avzH --delete --exclude=testing ftp.riken.jp::dag/redhat/el6/en/i386/ /media/exthdd/Repositories/dag/redhat/el6/i386/
rsync -avzH --delete --exclude=bleeding --exclude=testing ftp.riken.jp::atrpms/el6-x86_64/atrpms/ /media/exthdd/Repositories/atrpms/el6/x86_64/
rsync -avzH --delete --exclude=bleeding --exclude=testing ftp.riken.jp::atrpms/el6-i386/atrpms/ /media/exthdd/Repositories/atrpms/el6/i386/
rsync -avzH --delete --exclude=iso --exclude=SRPMS --exclude=dev --exclude=test --exclude=updates-testing --exclude=6.3.0 mirror3-toronto.clearsdn.com::clearos/community/ /media/exthdd/Repositories/clearos/community/
rsync -avzH --delete --exclude=iso --exclude=SRPMS --exclude=dev --exclude=test --exclude=updates-testing --exclude=6.3.0 mirror3-toronto.clearsdn.com::clearos/professional/ /media/exthdd/Repositories/clearos/professional/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/releases/17/Everything/x86_64/os/ /media/exthdd/Repositories/fedora/17/x86_64/os/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/updates/17/x86_64/ /media/exthdd/Repositories/fedora/17/x86_64/updates/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/releases/17/Everything/i386/os/ /media/exthdd/Repositories/fedora/17/i386/os/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/updates/17/i386/ /media/exthdd/Repositories/fedora/17/i386/updates/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/releases/19/Everything/x86_64/os/ /media/exthdd/Repositories/fedora/19/x86_64/os/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/updates/19/x86_64/ /media/exthdd/Repositories/fedora/19/x86_64/updates/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/releases/19/Everything/i386/os/ /media/exthdd/Repositories/fedora/19/i386/os/
rsync -avzH --delete --exclude=debug repo.ugm.ac.id::fedora/updates/19/i386/ /media/exthdd/Repositories/fedora/19/i386/updates/
Jika ingin mencoba menggunakan skrip bash ini, anda dapat mengunduhnya langsung di sini. Untuk mengeksekusi di distro BlankOn, anda perlu memasang terlebih dulu paket debmirror dan rsync.

Pembuatan cermin Canonical Partner memerlukan skrip perl debmirror yang sudah di-patch yang dapat anda unduh di sini.

Debmirror menggunakan gpgv untuk memverifikasi berkas Release dan Release.gpg pada lumbung paket sumber dengan berkas kunci pembanding bawaan yang berada di ~/.gnupg/trustedkeys.gpg. Untuk daftar lumbung paket di atas, anda dapat menambahkan kunci masing-masing lumbung paket secara manual (baca caranya di manual debmirror) atau menggunakan berkas trustedkeys.gpg yang sudah saya tambahkan kunci-kuncinya. Anda dapat mengunduhnya di sini dan langsung menyimpannya di direktori ~/.gnupg.

11 July 2013

Membangun GlusterFS Pada Debian Wheezy

GlusterFS merupakan sistem berkas kluster/jaringan yang tangguh yang bekerja pada lapisan userspace memanfaatkan FUSE (Filesystem in Userspace) untuk terhubung ke lapisan VFS (Virtual File System). Sekalipun merupakan sistem berkas pada lapisan userpace, namun pada lapisan kernel, GlusterFS menggunakan sistem berkas diska yang sudah teruji seperti ext3, ext4, xfs, dll untuk menyimpan data. Kapasitas GlusterFS dapat dengan mudah ditingkatkan sampai ukuran penyimpanan petabyte yang dapat dimanfaatkan oleh mesin lain di bawah titik kait (mount point) tunggal.

Tulisan ini menjelaskan langkah-langkah singkat membangun sistem penyimpanan GlusterFS pada Debian Wheezy. Skenario yang digunakan dalam tulisan ini digambarkan pada diagram berikut:



  1. Kloset, Pispot dan Septiktank merupakan server-server GlusterFS yang masing-masing memiliki 3 harddisk. 1 harddisk (/dev/sda) untuk sistem Debian Wheezy dan 2 harddisk (/dev/sdb dan /dev/sdc) untuk GlusterFS. Masing-masing server juga memiliki 2 NIC (network interface card) yang digunakan (1) untuk replikasi data antar server GlusterFS (eth1 10.2.2.0/24) dan (2) untuk dikaitkan ke server aplikasi (eth0 10.1.1.0/24).
  2. Tongsampah adalah server aplikasi Debian Wheezy yang akan memanfaatkan GlusterFS dengan cara mengaitkannya (mount). Tongsampah juga memiliki 2 NIC berbeda (1) untuk mengaitkan GlusterFS (eth1 10.1.1.1/24) dan (2) untuk memberikan layanan aplikasi ke klien (eth0 10.0.0.1/24).
  3. 2 unit ge (gigabit ethernet) switch masing-masing digunakan untuk (1) replikasi data antara Kloset, Pispot dan Septiktank dan (2) mengaitkan GlusterFS ke Tongsampah. 2 fungsi dari 2 ge switch ini dapat pula digantikan oleh 1 unit managable ge switch dengan pengaturan VLAN.

Misalkan seluruh 6 harddisk/brick GlusterFS di Kloset, Pispot dan Septiktank masing-masing berukuran 4 TB. Setiap 1 brick di satu server dipasangkan dengan 1 brick di server lainnya untuk melakukan replikasi. Kapasitas total volume GlusterFS yang terbangun akan sebesar 12 TB.
Agar ketersediaan GlusterFS bagi Tongsampah tetap tinggi, perlu direncanakan skema replikasi brick antar server GlusterFS sehingga data tetap tersedia sekalipun ada 1 server GlusterFS yang jatuh. Skenario skema replikasi brick GlusterFS dalam tulisan ini adalah sebagai berikut:



Konfigurasi:

1. Di semua server, pasang Debian Wheezy 64 bit netisnt dan atur konfigurasi jaringan sesuai skenario di atas.

2. Di Kloset, Pispot dan Septiktank, mutakhirkan paket-paket terpasang dan pasang paket-paket yang diperlukan.
# aptitude update
# aptitude upgrade
# aptitude install xfsprogs glusterfs-server
3. Di Kloset, Pispot dan Septiktank, buat sistem berkas XFS pada setiap brick dan kaitkan di masing-masing sistem berkas lokal. Kemudian buat subdirektori di masing-masing titik kait brick untuk dijadikan subdirektori lokasi replikasi brick. Sesuaikan variabel brick0X dan brick0Y dengan nomor brick pada gambar skema replikasi brick di atas.

# parted /dev/sdb mklabel gpt
# parted /dev/sdc mklabel gpt
# parted /dev/sdb mkpart primary ext2 0% 100%
# parted /dev/sdc mkpart primary ext2 0% 100%
# mkfs.xfs -f -i size=512 /dev/sdb1
# mkfs.xfs -f -i size=512 /dev/sdc1
# mkdir -p /data/glusterfs/vol1/brick0X
# mkdir -p /data/glusterfs/vol1/brick0Y
# echo "/dev/sdb1 /data/glusterfs/vol1/brick0X xfs defaults 1 2" >> /etc/fstab
# echo "/dev/sdc1 /data/glusterfs/vol1/brick0Y xfs defaults 1 2" >> /etc/fstab
# mount -a && mount
# mkdir /data/glusterfs/vol1/brick0X/glusterfs_vol1_brick0X
# mkdir /data/glusterfs/vol1/brick0Y/glusterfs_vol1_brick0Y
4.  Di salah satu server GlusterFS misal di Kloset, buat trusted pool.
# gluster peer probe 10.2.2.12
# gluster peer probe 10.2.2.13
# gluster peer status
5.  Di salah satu server GlusterFS misal di Kloset, buat gluster volume dan tambahkan brick-brick yang ada kemudian jalankan.
# gluster volume create vol1 replica 2 10.2.2.11:/data/glusterfs/vol1/brick01/glusterfs_vol1_brick01 10.2.2.12:/data/glusterfs/vol1/brick02/glusterfs_vol1_brick02
# gluster volume add-brick vol1 10.2.2.12:/data/glusterfs/vol1/brick03/glusterfs_vol1_brick03 10.2.2.13:/data/glusterfs/vol1/brick04/glusterfs_vol1_brick04
# gluster volume add-brick vol1 10.2.2.13:/data/glusterfs/vol1/brick05/glusterfs_vol1_brick05 10.2.2.11:/data/glusterfs/vol1/brick06/glusterfs_vol1_brick06
# gluster volume start vol1
# gluster volume info
 6. Di Tongsampah, mutakhirkan paket-paket terpasang dan pasang paket-paket yang diperlukan untuk mengaitkan GlusterFS kemudian kaitkan.
# aptitude update
# aptitude upgrade
# aptitude install glusterfs-client
# mkdir -p /mnt/glusterfs/vol1
# echo "10.2.2.11:/vol1 /mnt/glusterfs/vol1 glusterfs defaults 0 0" >> /etc/fstab
# mount -a && mount
7. GlusterFS siap digunakan untuk data aplikasi di Tongsampah.

Referensi: http://www.gluster.org/community/documentation/index.php/QuickStart

10 July 2013

Aku Seorang Penggemar FOSS

Namaku Utian, laki-laki, 30 tahun. Pekerjaanku system administrator yang merangkap network engineer. Aku sudah pakai Linux sekitar 6 tahun. Linux kupasang di mana-mana, desktop, laptop, desktop router di rumah, dan server-server bisnis di kantor.

Unduh surel kupakai Thunderbird, menulis dokumen kupakai LibreOffice, dengar lagu kupakai Audacious, nonton video kupakai SMPlayer. Server-server kantor beroperasi dengan Debian. Di atasnya berjalan layanan yang disediakan oleh Apache dan MySQL. Kalau perlu virtualisasi kugunakan Proxmox VE. Firewall, pakai Vyatta.

Karena alasan tertentu, misal di warnet, aku terpaksa pakai Windows. Tapi untuk browsing aku akan tetap gunakan Firefox dan saat harus me-remote ke server-server kantor akan kugunakan PuTTY.

Semua software yang kusebut di atas (kecuali Windows) adalah software yang termasuk dalam kelompok software berlisensi FOSS (Free and Open Source Software), piranti lunak bebas dan sumber terbuka. Selain yang kusebut di atas, masih banyak FOSS lainnya yang juga rutin kupakai. Semua FOSS itu secara nyata telah membantuku menikmati hiburan serta membantuku dan kantorku menghasilkan uang.

Alasan utama kupakai FOSS sederhana, karena gratis. Alasan lainnya adalah alasan popular yang banyak disebutkan oleh orang-orang seperti performa lebih baik, lebih aman, lebih mudah disesuaikan dengan kebutuhan bisnis, mendukung skalabilitas dan lain-lain.

Semua "manfaat baik" FOSS kuterima dengan perasaan bahagia. Ini adalah hadiah karena aku sudah menentukan pilihan yang tepat yaitu memakai FOSS. Sekarang, Aku hanya perlu melanjutkan perjalanan hidupku. Aku rasa hal lainnya tentang FOSS bukan urusanku.

Aku tak perlu tahu siapa pencipta FOSS yang aku pakai dan bagaimana proses FOSS tersebut diciptakan. Aku tak tertarik pembuatan FOSS karena aku bukan programmer. Aku tak peduli bagaimana FOSS ini tetap berproduksi sehingga produk-produknya selalu bisa kupakai. Bukan urusanku berapa biaya yang dikeluarkan untuk memproduksi FOSS agar bisa terus dirilis sampai dapat kugunakan dengan gratis.

Sekalipun tak pernah kupakai istilah GNU, tapi dapat kupastikan bahwa aku seorang penggemar FOSS.

Kontribusi dapat merujuk kepada: donasi, berbagi, pembayaran, publikasi...

09 July 2013

Sysadmin Keren Nggak Gini

Twit @utianayuba 10 Mei 2013 14:05 s.d. 14:33 WIB
dari pengalaman pribadi dan obrolan dgn teman2 mengenai profesi sysadmin (termasuk netadmin), bnyk sysadmin yg salah menjalankan profesinya
jd secara pribadi, saya merasa terpanggil untuk ngasih tips tentang apa saja yang seharusnya nggak dilakukan agar menjadi sysadmin keren :D
mungkin tips ini berguna buat adik2 yang mau berprofesi sebagai sysadmin. tipsnya akan saya beri tanda . siap?
foto sm server/perangkat jaringan diupload ke fb. berfotolah dgn manusia lainny, pasangan lawan jenis, keluarga, sahabat
datang masuk kantor jam 8 pagi pulang jam 5 sore. kantor bisa juga jadi rumah lu. data center bisa jadi kamar tidur lu.
menolak ajakan makan malam dengan raisa karena harus ngerimping kabel utp cat6.
makan pop mie setiap pagi, siang, malam dan nggak 1 hari cuma minum air putih 1 cangkir.
terkunci di dalam data center lebih dari 2 x 24 jam kecuali sudah lapor pak rt.
musuhan sama satpam. satpam bisa jadi teman ngobrol tengah malam.
tidur lebih sebentar dibanding tidurnya server atau jaringan produksi.
harus jago pake cli tapi harus jago pake google.
telanjang atasan/bawahan/keduanya di data center. dingin sob.
terakhir, boleh durhaka sama orang tua.
demikian tips yang seharusnya nggak dilakukan agar jadi sysadmin keren. ingat, kebenaran itu datangnya dari Allah SWT. jangan percaya saya.

Linux Setan

Cerita ini beredar sekitar pertengahan tahun 2002 saat saya masih kuliah. Cerita ini cukup populer di kalangan mahasiswa yang rajin nongkrong di kantin.

Ceritanya begini. Saat itu tengah malem. Di sebuah kost-an yang konon katanya angker, seorang mahasiswi akuntansi sedang coba mengerjakan tugas kuliahnya. Mahasiswi itu menemukan beberapa kejadian aneh.

Saat dia mencoba mencetak laporan, pencetak tidak bergerak sama sekali. Klik dua kali ikon di destop juga tidak mengeluarkan hasil apa-apa. Pointer mouse kadang muncul kadang hilang. Berharap ada sahabat yang menolongnya, diapun mencoba "update status" galau di friendster, namun modem tidak dapat tersambung ke internet.

Mahasiswi ini mulai berkeringat. Jantungnya berdetak lebih keras. Matanya menatap penuh kewaspadaan. Kemudian, dia berdiri dan mundur beberapa langkah dari laptop yang dia pakai.

Sambil gemetar dia berteriak keras: "LINUX SETAAAAAAAAAAANN !!!"