IP Fiktif Dalam Serial TV

Saya gemar mengikuti beberapa serial TV seperti Castle, Modern Family, House, dll. Biasanya stasiun TV Fox menayangkannya secara reguler. Video masing-masing serial itu dapat dengan mudah didapatkan melalui layanan BitTorrent. Dengan mengambil videonya dari torrent, saya bisa menonton banyak episode lama yang sudah tidak lagi diputar. Minggu lalu saya iseng mengunduh serial NCIS. NCIS season 11 memang sedang tayang di Fox channel, tapi saya tidak rutin menontonnya. Saya unduh semua video dari season 11. NCIS (Naval Criminal Investigative Service) bercerita tentang lembaga federal yang menangani penyelidikan berbagai kasus yang melibatkan personil angkatan laut Amerika Serikat.

Seperti umumnya serial detektif, selalu ada aktor yang berperan sebagai “computer geek” alias jagoan komputer. Aktor macam ini akan selalu ditampilkan dengan kemampuan komputer yang luar biasa, termasuk di dalamnya kemampuan penyadapan jaringan komputer (hacking). Ada yang menarik bagi saya menyaksikan NCIS 11 episode 5 minggu lalu. Ada salah satu adegan saat sang tokoh jagoan komputer berhasil mendeteksi alamat IP target buruannya. Ini tangkapan layar yang saya ambil :

IP Address prefix 472???

Bagi saya tampilan ini lucu. Saya yakin Anda yang hidupnya tidak jauh dari dunia komputer & jaringan akan tersenyum melihat tampilan layar di atas. Di scene tersebut ditampilkan alamat IP 472.13.278.5. Sejauh yang saya tahu alamat IP semacam itu tidak akan pernah ada di dunia komputer. Mengapa saya bisa berpikir seperti itu?

Perlu sedikit cerita tentang tentang pengalamatan IP versi 4 (IPv4). IPv4 tersusun dari 4 oktet, katakanlah dalam susunan seperti ini : A.B.C.D. Yang dimaksud dengan oktet (octet) dalam dunia komputer adalah susunan 8 bit digital atau bisa dibilang susunan 8 bilangan biner (bilangan biner sendiri hanya ada 2 yaitu 0 dan 1). Jadi satu oktet dapat tersusun dari kombinasi 00000000 sampai 11111111. Jadi susunan yang terbesar yang paling mungkin adalah (jika dituliskan dalam bentuk biner):

11111111.11111111.11111111.11111111

Susunan bilangan biner di atas bila diubah menjadi bilangan desimal akan menjadi :

255.255.255.255

Dengan demikian masing-masing oktet hanya mungkin tersusun dari bilangan desimal 0 sampai 255. Meskipun pada teori jaringan, angka 0 & 255 tidak akan pernah digunakan sebagai awalan/akhiran sebuah alamat IP, karena masing-masing sudah “dipesan” sebagai alamat jaringan (network address) dan alamat broadcast. Kalau kita melihat lagi tangkapan layar tadi, ada 2 oktet yang aneh yaitu 472 dan 278. Sejauh ini saya masih tidak bisa percaya ada alamat IP dengan komponen 472 & 278. Mungkin teori saya salah tapi coba saja Anda set IP komputer Anda dengan IP fiktif tadi, saya acungi dua jempol bila Anda bisa “memaksa” komputer Anda menggunakan IP tersebut. Setidaknya Ubuntu saya komplen saat saya mencoba menggunakan IP tadi. Lihat muncul peringatan merah & tombol Save yang tidak bisa diklik pada gambar berikut ini :

Bila benar ada alamat IP seperti itu di dunia nyata, mungkin saya perlu kembali belajar tentang teori jaringan komputer lagi (atau menggugat dosen jaringan komputer saya dulu di kampus? :-D ).

FTP Server Di Solaris 11

Saya punya server Solaris 11 dengan hostname ncc-dev-sms01. Saat saya ingin mencoba mengakses server ini melalui FTP tapi saya mendapati error seperti ini :

root@slc03dto:~# ftp ncc-dev-sms01
ftp: connect: Connection refused
ftp> quit
root@slc03dto:~# 

Error seperti itu dapat dipastikan karena servis FTP server di ncc-dev-sms01 belum aktif. Ketika saya cek di server ncc-dev-sms01 memang tidak terlihat ada servis FTP yang sedang aktif :

root@ncc-dev-sms01:~# svcs | grep -i ftp
root@ncc-dev-sms01:~#

Saya coba aktifkan dengan perintah svcadm enable tapi mendapati error seperti ini :

root@ncc-dev-sms01:~# svcadm enable ftp
svcadm: svc:/network/ftp:default: is not complete, missing general/complete (see svcs -xv svc:/network/ftp:default for details)
root@ncc-dev-sms01:~# 

Mengikuti petunjuk yang muncul saya gunakan perintah svcs -xv tersebut :

root@ncc-dev-sms01:~# svcs -xv svc:/network/ftp:default
svc:/network/ftp:default (?)
 State: -
Reason: Service is incomplete, defined only by profile /etc/svc/profile/generic.xml.  To install this service, identify and install the package which provides the service's primary manifest.  Use "pkg search 'svc\:/network/ftp\:default'" to identify the package, then "pkg install <pkg>" to install the indicated package.
Impact: This service is not running.
root@ncc-dev-sms01:~# 

Untuk memasang servis FTP yang belum ada tadi, saya gunakan perintah seperti di bawah ini :

root@ncc-dev-sms01:~# pkg install pkg://solaris/service/network/ftp
           Packages to install:  1
       Create boot environment: No
Create backup boot environment: No
            Services to change:  2


DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                1/1       112/112      0.8/0.8  2.1M/s


PHASE                                          ITEMS
Installing new actions                       179/179
Updating package state database                 Done
Updating image state                            Done
Creating fast lookup database                   Done
root@ncc-dev-sms01:~# 

Setelah servis tersebut aktif, saya bisa mengulang kembali perintah svcadm enable tadi :

root@ncc-dev-sms01:~# svcadm enable ftp
root@ncc-dev-sms01:~# svcs | grep -i ftp
online          3:52:46 svc:/network/ftp:default
root@ncc-dev-sms01:~#

Setelah servis ini aktif saya bisa melihat servis FTP sudah LISTEN di port 21 :

root@ncc-dev-sms01:~# netstat -an | egrep "21.*LISTEN"
  *.21                 *.*                0      0 128000      0 LISTEN
  *.21                              *.*                             0      0 128000      0 LISTEN      
root@ncc-dev-sms01:~#

Dengan begitu sekarang saya sudah bisa mengakses server ini melalui perintah FTP :

root@slc03dto:~# ftp ncc-dev-sms01
Connected to ncc-dev-sms01.
220 ::ffff:192.168.1.11 FTP server ready
Name (ncc-dev-sms01:ttirtawi): smf_oper
331 Password required for smf_oper
Password:
230 User smf_oper logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Untuk membatasi user yang tidak boleh mengakses FTP server ini, saya bisa menambahkan username yang bersangkutan dalam berkas berikut ini :

root@ncc-dev-sms01:~# cat /etc/ftpd/ftpusers 
#
# List of users denied access to the FTP server, see ftpusers(4).
#
root
daemon
bin
sys
adm
lp
uucp
nuucp
dladm
netadm
netcfg
smmsp
gdm
xvm
mysql
openldap
webservd
nobody
noaccess
nobody4
aiuser
unknown
ftp
root@ncc-dev-sms01:~# 

Demikian catatan singkat saya tentang cara mengaktifkan FTP server di Solaris 11. Langkah-langkah ini bisa dilakukan pada global zone maupun dari dalam local zone.

Backup Komputer Dengan Clonezilla

Masih lanjutan cerita tentang backup notebook dengan Clonezilla, tulisan ini berisi contoh langkah-langkah menggunakan Clonezilla. Clonezilla adalah aplikasi Linux yang menyediakan proses backup-restore harddisk. Pada dasarnya Clonezilla adalah distribusi Linux yang mengkhususnya fungsinya sebagai sarana backup-restore. Solusi backup dengan Clonezilla ini sifatnya “Full Backup”, dengan kata lain backup diambil dari keseluruhan bagian harddisk atau beberapa partisi saja. Clonezilla sesuai namanya “Clone”, melakukan duplikasi isi harddisk atau partisi untuk menghasilkan “backup image”. Clonezilla berbeda dengan solusi backup lain yang sifatnya “Incremental Backup” seperti misalnya Time Machine pada Mac OSX. Time Machine bisa mengambil backup secara berkala & gradual.

Untuk membahas bedanya “Full Backup” & “Incremental Backup”, contoh gampangnya seperti ini : Misalnya pada tanggal 1 Juli Anda menggunakan Clonezilla untuk mem-backup notebook Anda. Isi harddisk notebook Anda berukuran 250GB. Pada tanggal 7 Juli, data yang ada di dalam notebook Anda hanya bertambah 100MB. Bila Anda kembali melakukan full backup dengan Clonezilla, maka hasil backup-nya lebih kurang sama 250GB + 100MB. Padahal hampir semua data relatif tetap tidak berubah. Jadi pada tanggal 7 Juli Anda akan punya 2 image backup. Bayangkan berapa ruang kosong yang harus Anda miliki untuk menyimpan semua hasil backup tersebut (paling tidak 2x250GB kan?).

Lain halnya dengan “Incremental Backup”, aplikasi backup akan mengambil Full Backup setidaknya 1 kali saja di awal. Selebihnya aplikasi backup hanya mengamankan data-data yang baru atau data lama yang berubah. Pada contoh tadi, 100MB data saja yang akan diamankan pada proses backup berikutnya. Jadi pada tanggal 7 Juli, Anda punya backup berukuran 250GB + 100MB. “Incremental Backup” relatif lebih hemat ruang & lebih cepat karena hanya perubahan data saja yang diamankan.

Clonezilla memang kurang cocok dipakai sehari-hari paling tidak karena 2 alasan berikut ini :

  • Untuk menggunakan Clonezilla, kita harus mematikan komputer & reboot dengan bootable medianya Clonezilla. Tidak praktis karena kita harus menghentikan aktivitas pada komputer yang akan kita backup.
  • Ukuran hasil backup relatif besar karena tiap kali backup dilakukan, Clonezilla akan melakukan “Full Backup”.

Pada contoh ini saya gunakan VirtualBox untuk mengambil contoh tangkapan layar (screenshot) proses backup-restore. Pada prinsipnya sama saja cara penggunakan Clonezilla ini baik di virtual machine maupun di komputer betulan. Ini sudah saya buktikan juga saat melakukan proses backup notebook Lenovo x220 saya. Untuk mengambil tangkapan layar setiap proses, saya gunakan skenario seperti ini :

  • Saya punya VirtualBox virtual machine dalam Macbook Air.
  • VM tersebut menjalankan Ubuntu 14.04.
  • Saya mencoba mem-backup isi VM tersebut dengan Clonezilla.
  • Pada proses restore-nya, saya akan menggunakan Clonezilla untuk menginstal hasil backup menjadi virtual machine baru di VirtualBox-nya MacMini.

Sekali lagi, langkah-langkah yang akan saya tuliskan sama persis bila Anda aplikasikan pada sebuah notebook / desktop (bukan virtual machine). Saya membagi tulisan ini menjadi 2 bagian utama : proses backup & proses restore.

Persiapan

Beberapa hal yang perlu disiapkan sebelum mulai mem-backup sebuah harddisk adalah :

  1. Saya perlu mengunduh Clonezilla dari website resminya Clonezilla. Ada dua pilihan media yang tersedia : berkas ISO yang bisa dijadikan bootable CD atau berkas zip yang bisa dipasang pada USB flash disk. Anda bisa baca detail cara untuk menyiapkan Clonezilla bootable media di sini.
  2. Media penyimpanan hasil backup. Pada contoh ini saya gunakan 2 macam media : USB flash disk & NFS server. Perlu diingat media penyimpanan harus punya cukup ruang kosong, ini sangat tergantung dari ukuran harddisk yang ingin kita backup & banyaknya data dalam harddisk tersebut.

Proses Backup

Berikut adalah contoh langkah-langkah melakukan backup sebuah komputer berisi Ubuntu 14.04 : Continue reading

NFS Server Di Mac OSX 10.9

Beberapa hari belakangan ini notebook Thinkpad X220 saya mulai menunjukkan tanda-tanda masalah. Mulai dari temparatur CPU yang mendadak naik melebihi ambang batas, sampai bunyi “ticking” dari harddisk-nya. Notebook ini adalah notebook kantor tapi sudah lama tidak saya gunakan karena saya memilih untuk bekerja dengan MacBook pribadi. Saya manfaatkan saja sebagai mesin tes untuk belajar ini itu, termasuk belajar virtualisasi KVM. Saya memasangkan CentOS Linux 6.5 pada Lenovo Thinkpad X220 ini (saya pilih hostname centosdev01). Saya belum cek lebih jauh apa masalahnya & belum saya bawa juga ke service center. Di dalam centosdev01 ini saya sudah banyak membuat KVM virtual machine untuk keperluan tes. Karena khawatir harddisk-nya mati total, Sabtu kemarin saya memutuskan untuk melakukan full backup terlebih dulu.

Saya pilih untuk menggunakan Clonezilla untuk melakukan disk-to-image backup (backup keseluruhan harddisk). Harddisk yang terpasang pada notebook ini berukuran 320GB. Saya bingung juga memilih lokasi untuk menyimpan hasil backup. Saya punya harddisk eksternal WD MyBook yang cukup besar, ada sekitar 1.8GB  1.8TB ruang sisa. Sayangnya harddisk ini terpasang pada Mac Mini; salah satu partisinya dipakai untuk TimeMachine. Akhirnya saya putuskan untuk mengaktifkan NFS server pada Mac Mini supaya Clonezilla bisa langsung mengirimkan hasil backup ke WD MyBook tadi.

Mac OSX sudah dilengkapi dengan NFS server. Ini tulisan singkat sebagai catatan pribadi tentang cara mengaktifkan servis NFS pada Mac OSX 10.9 Mavericks. Langkah-langkahnya cukup mudah seperti berikut ini :

  1. Pertama saya buat dulu direktori dalam WD MyBook tadi untuk di-share via NFS :
    ttirtawi@macmini:~ $ mkdir /Volumes/MACMINI_DATA/NFS
    
  2. Kemudian saya perlu menambahkan direktori tadi ke dalam berkas /etc/exports seperti berikut ini :
    ttirtawi@macmini:~ $ sudo vi /etc/exports
    /Volumes/MACMINI_DATA/NFS -maproot=root -network 192.168.10.0 -mask 255.255.255.0
    ttirtawi@macmini:~ $ 
    
  3. Setelah itu saya tinggal me-restart servis NFS dengan perintah berikut ini :
    ttirtawi@macmini:~ $ sudo nfsd restart
    
  4. Untuk melihat status NFS & direktorinya yang aktif, saya bisa gunakan perintah berikut ini :
    ttirtawi@macmini:~ $ sudo nfsd status
    nfsd service is enabled
    nfsd is running (pid 41907, 0 threads)
    ttirtawi@macmini:~ $
    ttirtawi@macmini:~ $ showmount -e
    Exports list on localhost:
    /Volumes/MACMINI_DATA/NFS           192.168.10.0
    ttirtawi@macmini:~ $
    

    Pada contoh di atas saya tambahkan opsi untuk kontrol akses NFS client, hanya NFS client dalam jaringan 192.168.10.0/24 yang bisa mengakses direktori tersebut.

  5. Sebelum memulai backup dengan Clonezilla, saya coba dulu akses NFS direktori tadi dari mesin centosdev01 :
    ttirtawi@centosdev01:~$ sudo mount 192.168.10.13:/Volumes/MACMINI_DATA/NFS /testing-nfs-mac/
    ttirtawi@centosdev01:~$ df -h
    Filesystem                               Size  Used Avail Use% Mounted on
    /dev/mapper/vg_centosdev01-lv_root        50G  9.6G   38G  21% /
    tmpfs                                    3.8G  300K  3.8G   1% /dev/shm
    /dev/sda1                                485M   40M  420M   9% /boot
    /dev/mapper/vg_centosdev01-lv_home       227G  182G   34G  85% /home
    192.168.10.13:/Volumes/MACMINI_DATA/NFS  2.8T  1.4T  1.5T  48% /testing-nfs-mac
    ttirtawi@centosdev01:~$
    

    Setelah centosdev01 bisa melakukan mounting NFS direktori tadi saya bisa cek juga status NFS client yang sedang aktif dengan perintah showmount :

    ttirtawi@macmini:~ $ showmount
    Hosts on localhost:
    192.168.10.50
    ttirtawi@macmini:~ $
    

Di tulisan ini saya tidak menuliskan secara detail langkah backup dengan Clonezilla (mungkin kapan-kapan bisa saya tulis juga di blog ini). Singkatnya saya siapkan USB bootable Clonezilla, lalu boot Lenovo X220 tadi dengan USB tersebut sebagai boot disk-nya. Clonezilla punya user interface yang cukup mudah diikuti, meskipun user interface-nya masih berbasis teks. Ada satu langkah untuk menentukan lokasi backup. Saya pilih untuk masuk ke shell terlebih dulu untuk menyambungkan Clonezilla dengan NFS server-nya Mac. Saya harus menggunakan /home/partimag sebagai mountpoint-nya. Proses backup via jaringan ini cukup lama, saya tidak tahu tepatnya berapa kecepatan transfer data ke NFS server tadi. Ini screenshot saat proses backup mulai berjalan :

CloneZilla With NFS

Setelah selesai saya lihat hasilnya di Mac :

ttirtawi@macmini:NFS $ ll
total 16
lrwxrwxrwx   1 ttirtawi  staff    38B Jun 28 16:45 partimag -> //lib/live/mount/medium//home/partimag
drwxr-xr-x  70 ttirtawi  staff   2.3K Jun 28 22:05 2014-06-28-09-img
ttirtawi@macmini:NFS $ du -sh
 86G    .
ttirtawi@macmini:NFS $ 

Menurut saya Clonezilla cukup hebat melakukan kompresi data,

ttirtawi@centosdev01:~$ df -h
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/vg_centosdev01-lv_root   50G  9.6G   38G  21% /
tmpfs                               3.8G   76K  3.8G   1% /dev/shm
/dev/sda1                           485M   40M  420M   9% /boot
/dev/mapper/vg_centosdev01-lv_home  227G  182G   34G  85% /home
ttirtawi@centosdev01:~$ 

Lihat saja dari sekitar 192GB kapasitas harddisk yang terpakai, hasil backup cuma berukuran separuh dari total penggunaan data.

Sekilas Tentang IP Forwarding

Test Fowarding RHEL6

Beberapa hari lalu salah seorang rekan bertanya via Whatsapp. Dia punya masalah dengan Linux servernya. Katanya servernya punya 2 IP (berbeda jaringan) & ada broadcast request yang datang dari network 1 ke network 2. Padahal menurut rekan saya, kedua IP tersebut harusnya terisolasi satu sama lain. Karena kami berkomunikasi via Whatsapp, saya kurang paham betul apa sebenarnya yang jadi masalah. Rekan saya minta pendapat apa saja yang perlu dicek. Dengan informasi yang terbatas itu saya cuma bisa menduga 2 hal, isu pada IP Forwarding atau Firewall.

Karena pertanyaan itu saya jadi berpikir lagi tentang IP Forwarding. Meskipun saya tahu cara mengaktifkan IP Forwarding di mesin Linux, tapi sampai sekarang saya belum pernah berhenti sejenak untuk memikirkan konsepnya seperti apa. Konsep IP Forwarding yang saya tahu secara sederhana kira-kira seperti ini :

  • Misalkan sebuah server punya 2 NIC (network interface card), NIC#1 terhubung ke network A & NIC#2 terhubung ke B.
  • Bila ada paket IP yang datang melalui NIC#1 menuju network B. Ada 2 kemungkinan yang terjadi :
    • Tanpa IP Forwarding, server tidak akan meneruskan paket itu keluar ke network B. Meskipun dia punya akses ke network B. Ilustrasinya seperti gambar berikut ini :
      Tanpa IP Forwarding
    • Dengan IP Forwarding, server akan meneruskan paket IP melalui NIC#2 itu menuju network B. Jadi gampangnya, akan ada serah terima paket dari NIC#1ke NIC#2 karena server tahu hanya NIC#2 yang tahu caranya mengantar paket ke tujuan. Ilustrasinya seperti gambar berikut ini :
      Dengan IP Forwarding

Konsep sederhana di atas belum melibatkan kemungkinan adanya Firewall yang aktif dalam server tersebut. Mungkin saja meskipun IP Forwarding sudah aktif, paket tetap tidak bisa dikirimkan ke network B karena terbentur oleh Firewall.

Saya jadi penasaran melakukan tes untuk makin menyakinkan diri sendiri soal IP Forwarding & Firewall tadi. Saya segera buka VirtualBox & membuat 2 buah VM (virtual machine), masing-masing menggunakan RedHat Linux 6.

VirtualBox Setup

Strukturnya saya buat mengikuti diagram pada gambar pertama tadi. Berikut detailnya :

Continue reading

FreeBSD Sebagai Router

Sekilas Tentang RIP

Saat belajar CCNA dulu, salah satu materi yang menarik adalah soal routing protocol. Protokol routing yang paling pertama diajarkan adalah RIP (Routing Information Protokol). Katanya RIP adalah salah satu protokol routing yang paling tua umurnya. RIP termasuk dalam kategori distance vector routing protocol. Proses routing ditentukan berdasarkan perhitungan jarak terdekat antar router, berapa router yang harus dilewati yang diperlukan untuk mencapai tujuan. Masing-masing router akan berbagi topologi jaringannya kepada setiap router di dekatnya (neighbor router).

Salah satu kelemahan RIP adalah tidak bisa melakukan routing antar jaringan yang menggunakan subnetting (classless network). RIP hanya bisa melakukan routing antar jaringan dengan classfull netmask. Classfull netmask misalnya 255.255.0.0 atau 255.255.255.0.

Misalnya dua jaringan masing-masing menggunakan network address 192.168.10.0/26 dan 192.168.10.64/26. Normalnya IP dengan prefiks 192.168.xxx.xxx termasuk pada class C & memiliki subnet mask 255.255.255.0 (atau biasa ditulis dalam notasi /24). Tapi dua jaringan tadi menggunakan /26 atau bisa ditulis menjadi 255.255.255.192, artinya 2 jaringan tadi tidak lagi menggunakan class C subnetmask. Dua jaringan itu menggunakan apa yang disebut sebagai Classless Subnet.

RIP tidak bisa membedakan dua jaringan yang menggunakan “classless subnet”. Bagi RIP kedua jaringan tersebut berada pada jaringan yang sama : 192.168.10.0 255.255.255.0. Kelemahan ini diperbaiki pada RIP versi 2 yang mendukung CIDR (Classless Inter-Domain Routing). Dengan RIP versi 2 kita bisa mengatur routing jaringan yang menggunakan subnetting (jaringan dengan classless subnetmask).

Testing RIPv2 Dengan FreeBSD Sebagai Router

Misalnya saya ingin mensimulasikan struktur jaringan seperti pada gambar di bawah ini :

Tanpa adanya proses routing, PC1 tidak bisa berkomunikasi dengan PC2 & PC3. Begitupun seterusnya untuk PC2 & PC3, masing-masing akan terisolir dalam jaringannya masing-masing. Router bertugas mengatur lalu lintas data dari jaringan yang satu ke jaringan yang lainnya. Router bisa berupa dedicated hardware seperti Cisco Router atau Unix server. Semua sistem operasi Unix punya fitur untuk melakukan proses routing.

Dengan menggunakan VirtualBox saya bisa membuat beberapa virtual machine untuk mensimulasikan routing dengan protokol RIP. Saya ingin mencoba menggunakan FreeBSD sebagai router. Saya buat 6 virtual machine, 3 sebagai router & 3 lainnya sebagai client dalam 3 jaringan yang berbeda. Saya belajar menggunakan FreeBSD 9 sebagai router. Sementara untuk komputer client saya gunakan Tiny Linux. Saya pilih Tiny Linux untuk menghemat memory resource & space harddisk, Tiny Linux hanya perlu beberapa puluh Megabyte space harddisk saja.

FreeBSD menyediakan daemon routed untuk melakukan proses routing. Untuk mengaktifkan daemon tersebut saya perlu menambahkan beberapa baris berikut ini dalam berkas /etc/rc.conf :

routed_enable="YES"
routed_program="/sbin/routed"
routed_flags="-P ripv2,rdisc_interval=45"

Parameter flag -P ripv2 maksudnya kita minta FreeBSD untuk menggunakan protokol RIP versi 2. Sementara parameter rdisc_interval itu maksudnya kita mengatur daemon routed supaya melakukan broadcast routing table-nya setiap 45 detik sekali. Hal tersebut karena dalam protokol RIP, masing-masing router akan saling berbagi routing table dengan semua router “di sekitarnya”.

Berikut ini adalah konfigurasi di masing-masing virtual machine :

Continue reading

Konversi KVM Image Ke VirtualBox

Tulisan ini masih berkait dengan tulisan sebelumnya tentang virtualisasi dengan KVM Linux. Saat membuat virtual machine dengan KVM, aplikasi qemu-kvm akan membuat sebuah virtual harddisk dengan format *.img. Virtual harddisk ini dapat dipasangkan juga pada VirtualBox. Dengan begitu OS yang sudah dipasang di KVM, bisa dijalankan juga di virtual machine-nya VirtualBox.

Untuk dapat menggunakan virtual harddisk ini kita perlu mengkonversi dulu menjadi format *.vdi. Berikut ini adalah contoh proses konversi menggunakan perintah VBoxManage bawaan VirtualBox :

ttirtawi@macmini:~ $ VBoxManage convertfromraw -format VDI centos65-template.img  centos65-template.vdi
Converting from raw image file="centos65-template.img" to file="centos65-template.vdi"...
Creating dynamic image with size 8589934592 bytes (8192MB)...
ttirtawi@macmini:~ $

Di contoh tadi, virtual disk dari KVM berukuran 8GB sementara hasil konversinya cuma berukuran 836MB. Ini karena saat membuat virtual machine KVM, saya memilih opsi “Allocate entire disk now”, artinya KVM melakukan reservasi terlebih dahulu sebesar 8GB. Sementara VirtualBox membuat VDI yang sesuai jumlah data yang sudah dipakai. Meskipun pada akhirnya VirtualBox VM akan mengenali virtual harddisk tersebut sebagai harddisk berukuran 8GB.

ttirtawi@macmini:~ $ ls -thlr centos65-template.*
-rw-------  1 ttirtawi  staff   836M May 31 21:51 centos65-template.vdi
-rw-------  1 ttirtawi  staff   8.0G May 31 17:25 centos65-template.img
ttirtawi@macmini:~ $ 

Memasang Wireshark Versi Lama Di MacPorts

Di tulisan sebelumnya (Sekilas Tentang MacPorts) saya menuliskan bahwa kita bisa memasang beberapa versi port bersamaan (meskipun hanya 1 yang aktif). Di posting tersebut saya mencoba memasang Wireshark versi 1.10.7. Saya bisa mencari versi terdahulu dari sebuah port dari website http://trac.macports.org. Misalnya seperti contoh tangkapan layar di bawah ini :

Revision Browser

Sebagai contoh saya ingin memasang Wireshark versi yang lebih lama, misalnya 1.10.6. Yang perlu dicatat adalah Revision number yang menghasilkan Wireshark versi 1.10.6. Dari website tadi saya dapat nomor revisinya 118753.

Revision Number Wireshark Upgrade 1.10.6

Untuk memasang port versi lama ini langkah-langkahnya adalah sebagai berikut :

  1. Saya perlu mengambil port revision number 118753 dengan menggunakan svn. SVN (subversion) adalah aplikasi untuk kontrol versi, ini biasanya digunakan para developer software untuk mengontrol perubahan yang dilakukan pada source code software-nya. Perintah svn di Mac OSX sudah termasuk dalam paket XCode Command Line Tools. Perintah yang perlu saya gunakan adalah seperti contoh berikut ini :
    ttirtawi@macmini:Downloads $ svn co -r 118753 http://svn.macports.org/repository/macports/trunk/dports/net/wireshark
    A    wireshark/files
    A    wireshark/files/patch-configure.diff
    A    wireshark/files/patch-epan-dissectors-pacet-dtls.c.diff
    A    wireshark/files/patch-svnversion
    A    wireshark/Portfile
    Checked out revision 118753.
    ttirtawi@macmini:Downloads $ 
    

    Saya bisa melakukan perintah ini di direktori mana saja. Perintah svn akan mengambil direktori wireshark dari server SVNnya Macports.

  2. Selanjutnya saya bisa lihat versi port yang ada di direktori tersebut :
    ttirtawi@macmini:Downloads $ cd wireshark/
    ttirtawi@macmini:wireshark $ port info
    wireshark @1.10.6 (net)
    Variants:             no_adns, no_geoip, no_gnutls, no_ipv6, no_libgcrypt, no_libsmi, no_lua, no_rtp, no_ssl, no_x11, universal
    
    Description:          A network analyzer that lets you capture and interactively browse Ethernet frames. Packet data can be read from a file, or live from a
                          local network interface.
    Homepage:             http://wireshark.org/
    
    Build Dependencies:   pkgconfig
    Library Dependencies: adns, libgcrypt, libgeoip, glib2, libsmi, lua, gnutls, gtk2, openssl, portaudio, libpcap, kerberos5, zlib
    Conflicts with:       wireshark-devel
    Platforms:            darwin
    License:              GPL-2 GPL-3
    Maintainers:          opendarwin.org@darkart.com
    ttirtawi@macmini:wireshark $ 
    

    Benar bahwa port yang diambil tadi adalah Wireshark versi 1.10.6.

  3. Selanjutnya untuk memasang port Wireshark 1.10.6 tersebut saya tinggal gunakan perintah port install seperti pada contoh berikut ini :
    ttirtawi@macmini:wireshark $ port install
    --->  Computing dependencies for wireshark
    --->  Fetching distfiles for wireshark
    --->  Attempting to fetch wireshark-1.10.6.tar.bz2 from http://jog.id.distfiles.macports.org/macports/mpdistfiles/wireshark
    --->  Attempting to fetch wireshark-1.10.6.tar.bz2 from http://www.wireshark.org/download/src/
    --->  Verifying checksums for wireshark
    --->  Extracting wireshark
    --->  Applying patches to wireshark
    --->  Configuring wireshark
    --->  Building wireshark
    --->  Staging wireshark into destroot
    --->  Installing wireshark @1.10.6_0
    --->  Deactivating wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
    --->  Cleaning wireshark
    --->  Activating wireshark @1.10.6_0
    --->  Cleaning wireshark
    --->  Updating database of binaries: 100.0%
    --->  Scanning binaries for linking errors: 100.0%
    --->  No broken files found.
    ttirtawi@macmini:wireshark $ 
    
  4. Bila proses instalasi port tadi sudah selesai saya bisa melihat ada 2 port Wireshark yang terpasang & hanya versi 1.10.6 yang aktif.
    ttirtawi@macmini:wireshark $ port installed wireshark
    The following ports are currently installed:
      wireshark @1.10.6_0 (active)
      wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
    ttirtawi@macmini:wireshark $ 
    
  5. Contoh lain bila saya ingin memasang port Wireshark versi 1.2.5. Revision number-nya adalah 61926.
    ttirtawi@macmini:Downloads $ svn co -r  61926 http://svn.macports.org/repository/macports/trunk/dports/net/wireshark
    svn: E000017: Can't create directory '/Users/ttirtawi/mydata/Downloads/wireshark/.svn': File exists
    ttirtawi@macmini:Downloads $ 
    

    Pada contoh di atas muncul error dari perintah svn karena direktori wireshark sudah ada. Saya perlu menghapus dulu direktori wireshark atau pindah menggunakan direktori lainnya.

    ttirtawi@macmini:Downloads $ rm -r wireshark/
    ttirtawi@macmini:Downloads $ svn co -r  61926 http://svn.macports.org/repository/macports/trunk/dports/net/wireshark
    A    wireshark/files
    A    wireshark/files/patch-svnversion
    A    wireshark/Portfile
    Checked out revision 61926.
    ttirtawi@macmini:Downloads $
    ttirtawi@macmini:wireshark $ port install
    --->  Computing dependencies for wireshark
    --->  Dependencies to be installed: c-ares
    --->  Fetching distfiles for c-ares
    --->  Attempting to fetch c-ares-1.10.0.tar.gz from http://jog.id.distfiles.macports.org/macports/mpdistfiles/c-ares
    --->  Verifying checksums for c-ares
    --->  Extracting c-ares
    --->  Configuring c-ares
    --->  Building c-ares
    --->  Staging c-ares into destroot
    --->  Installing c-ares @1.10.0_0
    --->  Activating c-ares @1.10.0_0
    --->  Cleaning c-ares
    --->  Fetching distfiles for wireshark
    --->  Attempting to fetch wireshark-1.2.5.tar.bz2 from http://jog.id.distfiles.macports.org/macports/mpdistfiles/wireshark
    --->  Verifying checksums for wireshark
    --->  Extracting wireshark
    --->  Configuring wireshark
    --->  Building wireshark
    --->  Staging wireshark into destroot
    --->  Installing wireshark @1.2.5_0
    --->  Deactivating wireshark @1.10.6_0
    --->  Cleaning wireshark
    --->  Activating wireshark @1.2.5_0
    --->  Cleaning wireshark
    --->  Updating database of binaries: 100.0%
    --->  Scanning binaries for linking errors: 100.0%
    --->  No broken files found.
    ttirtawi@macmini:wireshark $ 
    ttirtawi@macmini:wireshark $ port installed wireshark
    The following ports are currently installed:
      wireshark @1.2.5_0 (active)
      wireshark @1.10.6_0
      wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
    ttirtawi@macmini:wireshark $ 
    ttirtawi@macmini:~ $ MacPorts/bin/wireshark -version
    wireshark 1.2.5
    
    Copyright 1998-2009 Gerald Combs <gerald@wireshark.org> and contributors.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    Compiled with GTK+ 2.24.23, with GLib 2.40.0, with libpcap 1.5.3, with libz
    1.2.8, without POSIX capabilities, without libpcre, with SMI 0.4.8, with c-ares
    1.10.0, without Lua, with GnuTLS 3.1.22, with Gcrypt 1.5.3, with MIT Kerberos,
    with GeoIP, without PortAudio, without AirPcap.
    NOTE: this build doesn't support the "matches" operator for Wireshark filter
    syntax.
    
    Running on Darwin 13.2.0 (MacOS 10.9.3), with libpcap version 1.5.3, GnuTLS
    3.1.22, Gcrypt 1.5.3.
    
    Built using gcc 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40).
    ttirtawi@macmini:~ $ 
    

Sampai tahap ini saya punya 3 port Wireshark yang terpasang :

ttirtawi@macmini:~ $ port installed wireshark
The following ports are currently installed:
  wireshark @1.2.5_0 (active)
  wireshark @1.10.6_0
  wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
ttirtawi@macmini:~ $ 

Bila saya ingin kembali menggunakan Wireshark versi 1.10.7, saya cukup mengaktifkannya dengan perintah port activate seperti contoh di bawah ini :

ttirtawi@macmini:~ $ port activate wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Computing dependencies for wireshark
--->  Deactivating wireshark @1.2.5_0
--->  Cleaning wireshark
--->  Activating wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Cleaning wireshark
ttirtawi@macmini:~ $
ttirtawi@macmini:~ $ port installed wireshark
The following ports are currently installed:
  wireshark @1.2.5_0
  wireshark @1.10.6_0
  wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11 (active)
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ MacPorts/bin/wireshark -version
wireshark 1.10.7 (Git Rev Unknown from unknown)

Copyright 1998-2014 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GTK+ 2.24.23, with Cairo 1.12.16, with Pango 1.36.3, with
GLib 2.40.0, with libpcap, with libz 1.2.8, without POSIX capabilities, without
libnl, with SMI 0.4.8, without c-ares, with ADNS, with Lua 5.2, without Python,
with GnuTLS 3.1.22, with Gcrypt 1.5.3, with MIT Kerberos, with GeoIP, with
PortAudio V19-devel (built May 23 2014 02:29:07), with AirPcap.

Running on Mac OS X 10.9.3, build 13D65 (Darwin 13.2.0), with locale
en_US.UTF-8, with libpcap version 1.5.3, with libz 1.2.8, GnuTLS 3.1.22, Gcrypt
1.5.3, without AirPcap.
       Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz

Built using clang 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40).
ttirtawi@macmini:~ $ 

Memperbaiki Tampilan Wireshark Di Mac OSX

Wireshark menggunakan GTK untuk menghasilkan tampilan grafisnya. Setelah memasang Wireshark melalui MacPorts, saya dapati tampilan Wireshark seperti ini :

Wireshark Default Tanpa Clearlook GTK+

Menurut saya tampilan Wireshak ini sangat jelek, tidak senada dengan environment Mac OSX. Beberapa referensi di Internet menyarankan untuk menggunakan GTK Theme Clearlooks untuk memperbaiki tampilan Wireshark. Pertama kali memasang Wireshark, hanya ada 1 theme seperti ini :

ttirtawi@macmini:~ $ port installed | egrep "gtk|gnome|theme"
  gnome-common @3.12.0_0 (active)
  gtk-doc @1.20_2+python27 (active)
  gtk2 @2.24.23_0+x11 (active)
  hicolor-icon-theme @0.13_0 (active)
ttirtawi@macmini:~ $ 

GTK Theme Clearlooks tersedia dalam port gnome-themes. Supaya bisa mengganti-ganti GTK Themes saya perlu memasang port gtk-theme-switch juga. Berikut adalah langkah-langkahnya :

ttirtawi@macmini:~ $ port -v install gtk-theme-switch
ttirtawi@macmini:~ $ launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist
ttirtawi@macmini:~ $ port -v install gnome-themes
ttirtawi@macmini:~ $ port installed | egrep "gtk|gnome|theme"
  gnome-common @3.12.0_0 (active)
  gnome-icon-theme @3.12.0_0 (active)
  gnome-themes @2.32.1_0 (active)
  gtk-doc @1.20_2+python27 (active)
  gtk-engines2 @2.20.2_3 (active)
  gtk-theme-switch @2.0.4_2 (active)
  gtk2 @2.24.23_0+x11 (active)
  gtk3 @3.12.2_0+x11 (active)
  hicolor-icon-theme @0.13_0 (active)
ttirtawi@macmini:~ $ 

Setelah itu saya bisa menjalankan perintah switch2 untuk mengaktifkan GTK Theme yang saya inginkan :

Switch2 Untuk Memilih GTK Theme

Setelah menggunakan theme Clearlooks, sekarang tampilan Wiresharknya jadi lebih enak untuk dilihat :

Wireshark Dengan Clearlook GTK+

Sekilas Tentang MacPorts

MacPorts adalah sistem manajemen paket aplikasi-aplikasi open source untuk Mac OSX. Dalam konteks MacPort, aplikasi dapat disamakan penyebutannya dengan istilah port. Di Linux saya biasa menyebut aplikasi (software) sebagai paket (package). Awalnya saya bingung memahami apa bedanya port dengan sistem manajemen paketnya Linux. Misalnya di RedHat Linux saya gunakan perintah rpm -qa untuk menampilkan semua package yang terpasang :

ttirtawi@centosdev01:~$ rpm -qa | grep vim
vim-common-7.2.411-1.8.el6.x86_64
vim-enhanced-7.2.411-1.8.el6.x86_64
vim-minimal-7.2.411-1.8.el6.x86_64
ttirtawi@centosdev01:~$ 

atau di Ubuntu/Debian saya gunakan dpkg -l.

ttirtawi@gbt733:~$ dpkg -l |  grep vim
ii  vim                                  2:7.3.547-4ubuntu1.1                      i386         Vi IMproved - enhanced vi editor
ii  vim-common                           2:7.3.547-4ubuntu1.1                      i386         Vi IMproved - Common files
ii  vim-runtime                          2:7.3.547-4ubuntu1.1                      all          Vi IMproved - Runtime files
ii  vim-tiny                             2:7.3.547-4ubuntu1.1                      i386         Vi IMproved - enhanced vi editor - compact version
ttirtawi@gbt733:~$ 

Bandingkan dengan perintah port bawaan MacPorts seperti contoh berikut ini :

ttirtawi@macmini:~ $ port installed | grep vim
  vim @7.4.258_0+huge (active)
ttirtawi@macmini:~ $ 

MacPorts menggunakan prinsip yang mirip dengan Ports yang dimiliki oleh FreeBSD. Kebingungan tadi memicu saya belajar lagi tentang FreeBSD Port. Setelah mencoba mempelajari FreeBSD Ports, saya makin bingung. Hmm mungkin lebih tepatnya saya menjadi tertarik memahami sistem kerja Port di FreeBSD. Di lingkungan OS FreeBSD ada perbedaan antara “port” & “package”. Definisi package adalah pre-compiled binary (aplikasi yang sudah “jadi” , sudah di-compile, tinggal pakai). Sementara port adalah kumpulan berkas Portfile, Makefile (atau berkas cmake) & patch yang digunakan untuk menghasilkan sebuah aplikasi melalui proses kompilasi source code. Kode sumber (source code) aplikasinya sendiri bisa saja diambil dari tempat lain. Misalnya aplikasi editor vim, source code-nya sendiri diambil dari website-nya vim. Ini bisa dilihat dari isi berkas Portfile-nya :

ttirtawi@macmini:MacPorts $ more /Users/ttirtawi/MacPorts/var/macports/sources/rsync.macports.org/release/tarballs/ports/editors/vim/Portfile 
# $Id: Portfile 119295 2014-04-22 15:35:47Z raimue@macports.org $

PortSystem          1.0

name                vim
set vim_version     7.4
set vim_patchlevel  258
version             ${vim_version}.${vim_patchlevel}
categories          editors
platforms           darwin freebsd
license             Vim GPL-2+
maintainers         raimue
description         Vi \"workalike\" with many additional features
long_description \
    Vim is an advanced text editor that seeks to provide the power of the   \
    de-facto Unix editor 'Vi', with a more complete feature set.

homepage            http://www.vim.org/

master_sites        http://ftp.vim.org/pub/vim/unix/
patch_sites         http://ftp.vim.org/pub/vim/patches/${vim_version}
distname            vim-${vim_version}
use_bzip2           yes
dist_subdir         vim/${vim_version}
worksrcdir          vim[strsed ${vim_version} {g/\.//}]
extract.only        vim-${vim_version}${extract.suffix}
...
...
...
ttirtawi@macmini:MacPorts $ 

Ketika saya memasang port/aplikasi tertentu, MacPorts akan mengunduh source code aplikasi tersebut., menambahkan patch yang diperlukan, melakukan kompilasi kode, memasang aplikasi hasilnya (executable binaries), serta memasang beserta aplikasi dependensinya. Karena ada proses kompilasi, memasang port terasa jauh lebih lama daripada memasang package di Linux. Sejauh ini kesimpulan saya baik port maupun package dapat diartikan sebagai aplikasi. Bedanya port memerlukan proses kompilasi sendiri. Ada lagi bedanya, kita bisa punya beberapa versi port aplikasi tertentu. Meskipun hanya 1 yang bisa aktif. Di Linux setahu hanya 1 versi package yang bisa dipasang. Bila ingin menggunakan versi lain, saya harus lakukan upgrade atau membuang dulu paket yang sudah ada.

Ok balik lagi ke MacPorts. MacPorts memerlukan aplikasi XCode & XCode Command Line Tools, keduanya tersedia di Mac App Store. Kita bisa memasang MacPorts menggunakan Mac instaler (*.pkg) atau memasangnya secara manual (melakukan kompilasi source code-nya).

Instalasi MacPorts Dengan pkg installer

Ini adalah catatan saya memasang MacPorts pada OSX Mavericks (10.9.2) secara manual. Saya lebih memilih cara ini karena lebih leluasa menentukan beberapa detail proses instalasi. Pertama saya perlu mengambil source code MacPorts dari websitenya MacPorts.

ttirtawi@macmini:~ $ curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.2.1.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  830k  100  830k    0     0   122k      0  0:00:06  0:00:06 --:--:--  189k
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ tar jxf MacPorts-2.2.1.tar.bz2 
ttirtawi@macmini:~ $ cd MacPorts-2.2.1
ttirtawi@macmini:MacPorts-2.2.1 $ 

Setelah diekstrak saya bisa mulai memasang MacPorts dengan 3 langkah kompilasi berikut ini :

ttirtawi@macmini:MacPorts-2.2.1 $ ./configure  --prefix=/Users/ttirtawi/MacPorts/   --with-no-root-privileges
ttirtawi@macmini:MacPorts-2.2.1 $ make
ttirtawi@macmini:MacPorts-2.2.1 $ make install

MacPort secara default akan terpasang pada /opt/local. Saya memilih untuk menyimpan aplikasi MacPorts di home, caranya dengan menggunakan opsi --prefix= saat menjalankan berkas configure. Saya memilih untuk memasang MacPorts tanpa hak akses root dengan menggunakan opsi --with-no-root-privileges. Tanpa opsi --with-no-root-privileges semua perintah MacPorts akan dimiliki oleh root seperti contoh berikut ini :

ttirtawi@macmini:MacPorts-2.2.1 $ ls -trl /Users/ttirtawi/MacPorts/bin/
total 448
-r-xr-xr-x  1 root  admin    2574 May 22 18:03 portmirror
-r-xr-xr-x  1 root  admin   10095 May 22 18:03 portindex
lrwxr-xr-x  1 root  admin       4 May 22 18:03 portf -> port
-r-xr-xr-x  1 root  admin  167464 May 22 18:03 port
-r-xr-xr-x  1 root  admin   37412 May 22 18:03 daemondo
ttirtawi@macmini:MacPorts-2.2.1 $ 

Ini artinya saya perlu menggunakan sudo tiap kali menjalankan perintah port. Dengan opsi --with-no-root-privileges, saya tidak perlu lagi menggunakan sudo :

ttirtawi@macmini:~ $ ls -tlr /Users/ttirtawi/MacPorts/bin/
total 448
-r-xr-xr-x  1 ttirtawi  staff    2574 May 22 18:06 portmirror
-r-xr-xr-x  1 ttirtawi  staff   10095 May 22 18:06 portindex
lrwxr-xr-x  1 ttirtawi  staff       4 May 22 18:06 portf -> port
-r-xr-xr-x  1 ttirtawi  staff  167464 May 22 18:06 port
-r-xr-xr-x  1 ttirtawi  staff   37412 May 22 18:06 daemondo
ttirtawi@macmini:~ $ 

Setelah MacPorts sukses terpasang, saya perlu memperbaharui daftar aplikasi (port tree) dengan menggunakan perintah di bawah ini :

ttirtawi@macmini:MacPorts-2.2.1 $ port -v selfupdate
--->  Updating MacPorts base sources using rsync
receiving file list ... done
base.tar

sent 58 bytes  received 1218655 bytes  162495.07 bytes/sec
total size is 4925440  speedup is 4.04
receiving file list ... done
base.tar.rmd160

sent 58 bytes  received 635 bytes  277.20 bytes/sec
total size is 512  speedup is 0.74
MacPorts base version 2.2.1 installed,
MacPorts base version 2.2.1 downloaded.
--->  Updating the ports tree
Synchronizing local ports tree from rsync://rsync.macports.org/release/tarballs/ports.tar
receiving file list ... done
ports.tar

sent 58 bytes  received 12289008 bytes  630208.51 bytes/sec
total size is 60989440  speedup is 4.96
receiving file list ... done
ports.tar.rmd160

sent 58 bytes  received 636 bytes  277.60 bytes/sec
total size is 512  speedup is 0.74
receiving file list ... done
PortIndex

sent 58 bytes  received 1490546 bytes  175365.18 bytes/sec
total size is 10589055  speedup is 7.10
receiving file list ... done
PortIndex.rmd160

sent 58 bytes  received 636 bytes  277.60 bytes/sec
total size is 512  speedup is 0.74
--->  MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
  port upgrade outdated
ttirtawi@macmini:MacPorts-2.2.1 $ 

Untuk melihat aplikasi yang terpasang melalui MacPorts saya bisa gunakan perintah berikut ini :

ttirtawi@macmini:MacPorts-2.2.1 $ port installed
No ports are installed.
ttirtawi@macmini:MacPorts-2.2.1 $ 

Tentu tidak ada hasilnya karena saya baru saja memasang MacPorts.

Sebagai contoh saya akan memasang aplikasi Wireshark, saya bisa melakukannya dengan menggunakan perintah berikut ini (saya tidak menampilkan semua log instalasi) :

ttirtawi@macmini:MacPorts-2.2.1 $ port install wireshark

--->  Computing dependencies for wireshark
--->  Dependencies to be installed: adns glib2 gettext expat libiconv gperf ncurses libffi perl5 perl5.16 gdbm xz zlib gnutls autoconf m4 automake gmp libidn libtasn1 libtool nettle p11-kit curl-ca-bundle desktop-file-utils pkgconfig popt libxslt libxml2 gtk2 atk gobject-introspection cairo fontconfig freetype bzip2 libpng libpixman xorg-libXext xorg-libX11 xorg-bigreqsproto xorg-inputproto xorg-kbproto xorg-libXau xorg-xproto xorg-libXdmcp xorg-libxcb python27 db46 db_select libedit openssl python_select sqlite3 xorg-libpthread-stubs xorg-xcb-proto xorg-util-macros xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-xcb-util xrender xorg-renderproto gdk-pixbuf2 jasper jpeg tiff gtk-doc docbook-xml docbook-xml-4.1.2 docbook-xml-4.2 xmlcatmgr docbook-xml-4.3 docbook-xml-4.4 docbook-xml-4.5 docbook-xml-5.0 docbook-xsl fop itstool gawk readline py27-libxml2 openjade opensp hicolor-icon-theme pango Xft2 harfbuzz graphite2 cmake shared-mime-info intltool gnome-common p5.16-getopt-long p5.16-pathtools p5.16-scalar-list-utils p5.16-xml-parser xorg-libXcomposite xorg-compositeproto xorg-libXfixes xorg-fixesproto xorg-libXcursor xorg-libXdamage xorg-damageproto xorg-libXi xorg-libXinerama xorg-xineramaproto xorg-libXrandr xorg-randrproto kerberos5 libcomerr libgcrypt libgpg-error libgeoip libpcap libsmi lua portaudio
--->  Fetching distfiles for adns
--->  Attempting to fetch adns-1.4.tar.gz from http://jog.id.distfiles.macports.org/macports/mpdistfiles/adns
--->  Verifying checksums for adns
--->  Extracting adns
--->  Applying patches to adns
...
...
...
...
--->  Fetching distfiles for wireshark
--->  Verifying checksums for wireshark
--->  Extracting wireshark
--->  Applying patches to wireshark
--->  Configuring wireshark
--->  Building wireshark
--->  Staging wireshark into destroot
--->  Installing wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Activating wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
--->  Cleaning wireshark
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.
ttirtawi@macmini:MacPorts-2.2.1 $ 

Setelah wireshark sukses terpasang, saya bisa melihat wireshark sudah ada dalam daftar port tadi :

ttirtawi@macmini:MacPorts-2.2.1 $ port installed | grep wireshark
  wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11 (active)
ttirtawi@macmini:MacPorts-2.2.1 $ 

Saya juga bisa melihat informasi lengkap tentang wireshark (berikut dependensinya) dengan menggunakan perintah berikut ini :

ttirtawi@macmini:~ $ port info wireshark
wireshark @1.10.7 (net)
Variants:             [+]adns, [+]geoip, [+]gnutls, [+]ipv6, [+]libgcrypt, [+]libsmi, [+]lua, [+]rtp, [+]ssl, universal, [+]x11

Description:          A network analyzer that lets you capture and interactively browse Ethernet frames. Packet data can be read from a file, or live from a
                      local network interface.
Homepage:             http://wireshark.org/

Build Dependencies:   pkgconfig
Library Dependencies: glib2, libpcap, kerberos5, zlib, adns, gnutls, libgcrypt, lua, libsmi, libgeoip, portaudio, openssl, gtk2
Conflicts with:       wireshark-devel
Platforms:            darwin
License:              GPL-2 GPL-3
Maintainers:          opendarwin.org@darkart.com
ttirtawi@macmini:~ $ 

Informasi tentang dependensi aplikasi juga bisa dilihat dengan perintah berikut ini :

ttirtawi@macmini:~ $ port deps wireshark
Full Name: wireshark @1.10.7_0+adns+geoip+gnutls+ipv6+libgcrypt+libsmi+lua+rtp+ssl+x11
Build Dependencies:   pkgconfig
Library Dependencies: glib2, libpcap, kerberos5, zlib, adns, gnutls, libgcrypt, lua, libsmi, libgeoip, portaudio, openssl, gtk2
ttirtawi@macmini:~ $ 

Untuk melihat berkas binary hasil port wireshark , saya bisa gunakan perintah berikut ini :

ttirtawi@macmini:~ $ port content wireshark
Port wireshark contains:
  /Users/ttirtawi/MacPorts/bin/capinfos
  /Users/ttirtawi/MacPorts/bin/dftest
  /Users/ttirtawi/MacPorts/bin/dumpcap
  /Users/ttirtawi/MacPorts/bin/editcap
  /Users/ttirtawi/MacPorts/bin/mergecap
  /Users/ttirtawi/MacPorts/bin/randpkt
  /Users/ttirtawi/MacPorts/bin/rawshark
  /Users/ttirtawi/MacPorts/bin/reordercap
  /Users/ttirtawi/MacPorts/bin/text2pcap
  /Users/ttirtawi/MacPorts/bin/tshark
  /Users/ttirtawi/MacPorts/bin/wireshark
  ....
  ....
  ....
  /Users/ttirtawi/MacPorts/share/wireshark/smi_modules
  /Users/ttirtawi/MacPorts/share/wireshark/text2pcap.html
  /Users/ttirtawi/MacPorts/share/wireshark/tpncp/tpncp.dat
  /Users/ttirtawi/MacPorts/share/wireshark/tshark.html
  /Users/ttirtawi/MacPorts/share/wireshark/wimaxasncp/dictionary.dtd
  /Users/ttirtawi/MacPorts/share/wireshark/wimaxasncp/dictionary.xml
  /Users/ttirtawi/MacPorts/share/wireshark/wireshark-filter.html
  /Users/ttirtawi/MacPorts/share/wireshark/wireshark.html
  /Users/ttirtawi/MacPorts/share/wireshark/ws.css
ttirtawi@macmini:~ $ 

Perintah di atas mirip dengan perintah “rpm -ql wireshark” di RedHat Linux atau perintah “dpkg -L wireshark” di Debian Linux.

Karena saya meletakkan MacPort di lokasi tersendiri (bukan di /opt/local), maka saya perlu memodifikasi .bash_profile seperti ini :

ttirtawi@macmini:~ $ cat .bash_profile 
export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8
export PATH="${PATH}:/Users/ttirtawi/MacPorts/bin:$PATH"
[[ -s ~/.bashrc ]] && source ~/.bashrc
ttirtawi@macmini:~ $ 

Ini supaya saya bisa mengakses aplikasi langsung tanpa perlu mengetikkan full path. Tanpa modifikasi $PATH saya akan mendapati error seperti ini :

ttirtawi@macmini:~ $ wireshark
-bash: wireshark: command not found
ttirtawi@macmini:~ $ 

Tanpa modifikasi $PATH saya akan direpotkan karena tiap kali memanggil aplikasi tersebut saya harus menggunakan full path-nya seperti ini :

ttirtawi@macmini:~ $ /Users/ttirtawi/MacPorts/bin/wireshark -v
wireshark 1.10.7 (Git Rev Unknown from unknown)

Copyright 1998-2014 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GTK+ 2.24.23, with Cairo 1.12.16, with Pango 1.36.3, with
GLib 2.40.0, with libpcap, with libz 1.2.8, without POSIX capabilities, without
libnl, with SMI 0.4.8, without c-ares, with ADNS, with Lua 5.2, without Python,
with GnuTLS 3.1.22, with Gcrypt 1.5.3, with MIT Kerberos, with GeoIP, with
PortAudio V19-devel (built May 21 2014 12:11:57), with AirPcap.

Running on Mac OS X 10.9.3, build 13D65 (Darwin 13.2.0), with locale
en_US.UTF-8, with libpcap version 1.5.3, with libz 1.2.8, GnuTLS 3.1.22, Gcrypt
1.5.3, without AirPcap.
       Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz

Built using clang 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40).
ttirtawi@macmini:~ $ 

Sekadar tambahan, Wireshark untuk Mac OSX bisa dipasang via MacPorts seperti contoh tadi atau lewat versi pre-compiled yang tersedia di websitenya Wireshark.