Versi OS di Ubuntu/Debian, Solaris 10, & OSX

Untuk melihat versi sistem operasi Ubuntu saya biasa gunakan perintah lsb_release -a seperti berikut ini :

ttirtawi@gbt733:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 12.10
Release:	12.10
Codename:	quantal
ttirtawi@gbt733:~$

Atau bisa tinggal lihat berkas /etc/lsb-release :

ttirtawi@gbt733:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.10
DISTRIB_CODENAME=quantal
DISTRIB_DESCRIPTION="Ubuntu 12.10"
ttirtawi@gbt733:~$

Perintah yang sama bisa dipakai di distribusi Debian :

pasific:~# lsb_release -a
LSB Version:	core-2.0-ia32:core-2.0-noarch:core-3.0-ia32:core-3.0-noarch:core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:cxx-3.0-ia32:cxx-3.0-noarch:cxx-3.1-ia32:cxx-3.1-noarch:cxx-3.2-ia32:cxx-3.2-noarch:desktop-3.1-ia32:desktop-3.1-noarch:desktop-3.2-ia32:desktop-3.2-noarch:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch:graphics-3.1-ia32:graphics-3.1-noarch:graphics-3.2-ia32:graphics-3.2-noarch:qt4-3.1-ia32:qt4-3.1-noarch
Distributor ID:	Debian
Description:	Debian GNU/Linux 5.0 (lenny)
Release:	5.0
Codename:	lenny
pasific:~#

Di Debian 7 informasi yang sama bisa diliat di berkas /etc/os-release seperti berikut ini :

ttirtawi@debian7:~$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="http://bugs.debian.org/"
ttirtawi@debian7:~$

Sementara di Solaris 10, versi OSnya bisa dilihat di berkas /etc/release seperti berikut ini :

$ cat /etc/release
                   Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC
     Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
                            Assembled 11 August 2010
$ 

Agak sedikit berbeda di Mac OSX Mountain Lion, saya baru tahu 2 perintah berikut ini untuk melihat versi OS dari command line. Yang pertama adalah sw_vers :

ttirtawi@macmini:~$ sw_vers 
ProductName:	Mac OS X
ProductVersion:	10.8.4
BuildVersion:	12E55
ttirtawi@macmini:~$

Sementara yang kedua adalah system_profiler :

ttirtawi@macmini:~$ system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: OS X 10.8.4 (12E55)
      Kernel Version: Darwin 12.4.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: macmini
      User Name: Tedy Tirtawidjaja (ttirtawi)
      Secure Virtual Memory: Enabled
      Time since boot: 2 days 4:36

ttirtawi@macmini:~$

FTP Server Di OSX Mountain Lion

Sebagai turunan dari Unix, Mac OSX sudah dilengkapi dengan FTP server. Hanya saja secara default, service FTP server ini tidak diaktifkan.

Ini contoh tampilan saat saya ingin mencoba mengakses FTP ke Mac Mini yang menggunakan OSX Mountain Lion :

ttirtawi@gbt733:~$ ftp 192.168.10.13
ftp: connect: Connection refused
ftp> quit
ttirtawi@gbt733:~$

Untuk mengaktifkan FTP server di OSX Mountain Lion, saya cukup menggunakan 1 perintah berikut ini :

ttirtawi@macmini:~$ sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist 
Password:
ttirtawi@macmini:~$

Untuk memastikan FTP sudah aktif saya bisa cek dengan perintah netstat seperti berikut ini :

ttirtawi@macmini:~$ netstat -a | egrep ".*ftp.*LISTEN"
tcp6       0      0  *.ftp                  *.*                    LISTEN     
tcp4       0      0  *.ftp                  *.*                    LISTEN     
ttirtawi@macmini:~$

Barulah saya bisa akses Mac Mini ini via FTP :

ttirtawi@gbt733:~$ ftp 192.168.10.13
Connected to 192.168.10.13.
220 192.168.10.13 FTP server (tnftpd 20100324+GSSAPI) ready.
Name (192.168.10.13:ttirtawi): ttirtawi
331 User ttirtawi accepted, provide password.
Password:
230 User ttirtawi logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/Users/ttirtawi" is the current directory.
ftp>

Untuk mematikan service FTP server tadi saya tinggal gunakan perintah berikut ini :

ttirtawi@macmini:~$ sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist 
Password:
ttirtawi@macmini:~$

Berbagi ZFS Dataset Lewat NFS

Saya baru mencoba membagi ZFS dataset di Solaris 10 melalui NFS (Network File System). Beberapa hal yang perlu saya siapkan adalah :

  1. Dataset mana yang akan saya bagi?
  2. Server mana saja yang akan saya ijinkan mengakses dataset tadi? Siapa NFS client-nya? Berapa IP NFS client tersebut?
  3. Apakah permission yang akan diberikan? read only? read write?

Sebagai contoh misalnya saya punya sebuah server berisi Solaris 10 (hostname-nya nfs-server), lalu saya ingin membagi sebuah ZFS dataset dengan komputer lainnya. Saya akan membuat ZFS dataset baru rpool/testnfsrpool/testnfs akan saya mount di direktori /sharenfs. Berikut perintah yang saya gunakan untuk membuat ZFS dataset tadi :

root@nfs-server:/# zfs create -o mountpoint=/sharenfs rpool/testnfs

Untuk memeriksa ZFS dataset yang sudah baru saja dibuat saya gunakan perintah ini :

root@nfs-server:/# df -h | grep sharenfs
rpool/testnfs          134G    31K    83G     1%    /sharenfs
root@nfs-server:/#

Untuk dapat berbagi ZFS dataset tadi, saya perlu mengaktifkan service NFS Server terlebih dahulu. Untuk memeriksa apakah NFS server sudah aktif saya gunakan perintah berikut ini :

root@nfs-server:/# svcs | grep nfs
online         Jun_25   svc:/network/nfs/rquota:default
offline        Jun_25   svc:/network/nfs/status:default
offline        Jun_25   svc:/network/nfs/nlockmgr:default
offline        Jun_25   svc:/network/nfs/cbd:default
offline        Jun_25   svc:/network/nfs/mapid:default
offline        Jun_25   svc:/network/nfs/client:default
offline        16:59:36 svc:/network/nfs/server:default
root@nfs-server:/#

Ternyata service NFS (network/nfs/server) belum aktif, saya perlu mengaktifkannya dengan perintah berikut ini :

root@nfs-server:/# svcadm  -v enable -r network/nfs/server
svc:/network/nfs/server:default enabled.
svc:/milestone/network enabled.
svc:/network/loopback enabled.
svc:/network/physical enabled.
svc:/network/nfs/nlockmgr enabled.
svc:/network/rpc/bind enabled.
svc:/system/filesystem/minimal enabled.
svc:/system/filesystem/usr enabled.
svc:/system/boot-archive enabled.
svc:/system/filesystem/root enabled.
svc:/system/device/local enabled.
svc:/system/identity:node enabled.
svc:/system/sysidtool:net enabled.
svc:/milestone/single-user:default enabled.
svc:/milestone/devices enabled.
svc:/system/device/fc-fabric enabled.
svc:/system/sysevent enabled.
svc:/system/manifest-import enabled.
svc:/system/filesystem/local:default enabled.
svc:/milestone/single-user enabled.
svc:/system/filesystem/minimal:default enabled.
svc:/system/identity:domain enabled.
svc:/network/nfs/status enabled.
svc:/system/filesystem/local enabled.
root@nfs-server:/#

Sekarang service NFS sudah aktif :

root@nfs-server:/# svcs | grep nfs
online         Jun_25   svc:/network/nfs/rquota:default
online         17:05:00 svc:/network/nfs/status:default
online         17:05:01 svc:/network/nfs/cbd:default
online         17:05:01 svc:/network/nfs/mapid:default
online         17:05:01 svc:/network/nfs/nlockmgr:default
online         17:05:01 svc:/network/nfs/client:default
online         17:05:02 svc:/network/nfs/server:default
root@nfs-server:/#

Langkah berikutnya adalah membagi dataset rpool/testnfs (dengan kata lain membagi direktori /sharenfs), caranya dengan menggunakan perintah berikut ini :

root@nfs-server:/# zfs set sharenfs='rw=10.22.237.113,root=10.22.237.113' rpool/testnfs

Pada perintah di atas, saya menyertakan juga opsi untuk memberi akses kepada komputer lain yang akan menjadi NFS client. Komputer dengan IP 10.22.237.113 akan diijinkan untuk mengakses ZFS dataset rpool/testnfs, akses yang diberikan adalah read-write. Dengan kata lain client dapat mengakses data-data di dalam /sharenfs dan juga dapat menyimpan data di direktori tersebut.

Untuk memastikan direktori /sharenfs sudah tersedia, saya gunakan perintah share seperti contoh berikut ini :

root@nfs-server:/# share
-               /sharenfs   sec=sys,rw=10.22.237.113,root=10.22.237.113   ""  
root@nfs-server:/#

Perlu diingat bahwa perintah “zfs set sharenfs” sifatnya tidak permanen (hilang saat restart). Untuk membuat sharing ini permanen, kita perlu mendaftarkan direktori yang akan di-share tersebut ke dalam file /etc/dfs/dfstab. Contohnya seperti berikut ini :

root@nfs-server:/# cat /etc/dfs/dfstab 

share -F nfs -o rw=10.22.237.113,root=10.22.237.113 /sharenfs

root@nfs-server:/# 

Mari beralih ke NFS client (komputer dengan IP 10.22.237.113). Komputer ini akan mengakses ZFS dataset rpool/testnfs dari nfs-server. IP nfs-server adalah 10.22.250.181. Perintah yang saya gunakan adalah seperti berikut ini :

root@client:/# mount -F nfs 10.22.250.181:/sharenfs /nfs

Direktori /sharenfs akan di-mount pada direktori /nfs.

Berikut tampilan yang muncul bila akses NFSnya berfungsi dengan baik :

root@client:/# df -h | grep nfs
10.22.250.181:/sharenfs
                        83G    31K    83G     1%    /nfs
root@client:/#

Dengan demikian si client sekarang bisa mengakses ZFS dataset rpool/testnfs yang dimiliki oleh nfs-server.

Berikut contoh kemungkinan error yang muncul saat mengakses NFS direktori :

root@client:/# mount -F nfs 10.22.250.181:/sharenfs /nfs
nfs mount: 10.22.250.181: : RPC: Program not registered
nfs mount: retrying: /nfs
^C
root@client:/#

Bila muncul error seperti di atas, kemungkinan besar NFS service di server belum diaktifkan (lihat kembali contoh perintah untuk mengaktifkan NFS service dengan perintah svcadm ).

Contoh error lain saat mencoba mengakses NFS direktori adalah seperti berikut :

root@client:/# mount -F nfs 10.22.250.181:/sharenfs /nfs
nfs mount: mount: /nfs: I/O error
root@client:/# 

Bila muncul error seperti di atas, dapat dipastikan proses sharing di NFS server-nya tidak berhasil. Silakan cek kembali NFS server-nya dengan perintah share (seperti yang sudah dicontohkan sebelumnya).

Setup Wi-Fi Ubuntu Dari Command Line

Di Linux desktop yang sudah memiliki Network Manager, mengatur koneksi wireless tidak terlalu sulit. GUI untuk wireless sudah cukup mudah untuk dipakai. Tapi bagaimana bila saya tidak punya tampilan GUI hanya console terminal saja? Saya belum pernah sebelumnya mengatur koneksi wireless tanpa bantuan Network Manager. Tadi saya belajar cara mengatur koneksi WiFi di Ubuntu 12.04 lewat command line. Tentu saja saya harus mematikan Network Manager (menu GUI) terlebih dulu.

root@x220:~# /etc/init.d/network-manager stop

Bila access point yang dipakai menggunakan autentikasi (WPA,WPA2) maka untuk mengatur koneksi wireless-nya kita perlu aplikasi wpa_supplicant. Install dulu dengan perintah berikut :

root@x220:~# apt-get install wpasupplicant
root@x220:~# dpkg -l | grep wpasupplicant
ii  wpasupplicant                             0.7.3-6ubuntu2                          client support for WPA and WPA2 (IEEE 802.11i)
root@x220:~#

Di laptop saya wireless adapter-nya dikenali sebagai wlan0, maka saya perlu mendaftarkannya dulu ke dalam file /etc/network/interfaces :

root@x220:~# cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto wlan0
	iface wlan0 inet dhcp
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

root@x220:~#

Untuk masalah autentikasi password, saya perlu mengatur file wpa_supplicant.conf seperti berikut ini :

root@x220:~# cat /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
network={
        ssid="GBT733"
        scan_ssid=1
        proto=WPA RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
        psk=da5d79195468cf3f7cb498731beac2136e8b9fccd11d90182a8d668ddbd660bb
}
root@x220:~#

Beberapa detil yang perlu dipahami dari konfigurasi di atas adalah :

  • ssid : nama access point.
  • proto : tipe wireless security yang dipakai oleh access point. Bisa WPA (Wi-Fi Protected Access) atau RSN (Robust Security Network). RSN ini juga dikenal sebagai WPA2 (Wi-Fi Protected Access II).
  • key_mgmt : menentukan tipe enkripsi dari wireless password-nya. WPA-PSK (WPA Pre-shared Key). Kenapa WPA-PSK karena access point saya menggunakan mode sekuriti WPA2-Personal.
  • pairwise & group : mengatur tipe algoritma enkripsi dari password Wi-Fi.
  • psk : pre shared key hasil enkripsi dari ASCII password

PSK didapat dari hasil enkripsi password Wi-Fi yang berupa text (password Wi-Fi yang kita kenal sehari-hari). Misalnya access point saya menggunakan nama SSID GBT733 dan password-nya adalah ‘testingpassword‘, untuk mendapat WPA PSK saya gunakan perintah berikut ini :

root@x220:~# wpa_passphrase GBT733 testingpassword
network={
	ssid="GBT733"
	#psk="testingpassword"
	psk=da5d79195468cf3f7cb498731beac2136e8b9fccd11d90182a8d668ddbd660bb
}
root@x220:~#

Setelah semua sudah diset, tinggal restart network service-nya dengan perintah :

root@x220:~# /etc/init.d/networking restart
 * Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces
 * Reconfiguring network interfaces...                                                                                                                                                           ssh stop/waiting
ssh start/running, process 13925
                                                                                                                                                                                          [ OK ]
root@x220:~# 

Di syslog saya bisa lihat DHCP client mencoba mengakses access point & meminta IP address :

root@x220:~# tail -f /var/log/messages
Feb 26 10:53:27 x220 kernel: [273753.765617] iwlwifi 0000:03:00.0: L1 Enabled; Disabling L0S
Feb 26 10:53:27 x220 kernel: [273753.765806] iwlwifi 0000:03:00.0: Radio type=0x1-0x2-0x0
Feb 26 10:53:27 x220 kernel: [273753.894034] ADDRCONF(NETDEV_UP): wlan0: link is not ready
Feb 26 10:53:27 x220 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3
Feb 26 10:53:30 x220 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
Feb 26 10:53:31 x220 wpa_supplicant[13818]: Trying to authenticate with 90:f6:52:43:82:44 (SSID='GBT733' freq=2437 MHz)
Feb 26 10:53:31 x220 wpa_supplicant[13818]: Trying to associate with 90:f6:52:43:82:44 (SSID='GBT733' freq=2437 MHz)
Feb 26 10:53:31 x220 kernel: [273757.284480] wlan0: authenticate with 90:f6:52:43:82:44 (try 1)
Feb 26 10:53:31 x220 kernel: [273757.287179] wlan0: authenticated
Feb 26 10:53:31 x220 kernel: [273757.287454] wlan0: associate with 90:f6:52:43:82:44 (try 1)
Feb 26 10:53:31 x220 kernel: [273757.291546] wlan0: RX AssocResp from 90:f6:52:43:82:44 (capab=0x431 status=0 aid=2)
Feb 26 10:53:31 x220 kernel: [273757.291550] wlan0: associated
Feb 26 10:53:31 x220 wpa_supplicant[13818]: Associated with 90:f6:52:43:82:44
Feb 26 10:53:31 x220 kernel: [273757.299586] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Feb 26 10:53:31 x220 wpa_supplicant[13818]: WPA: Key negotiation completed with 90:f6:52:43:82:44 [PTK=CCMP GTK=TKIP]
Feb 26 10:53:31 x220 wpa_supplicant[13818]: CTRL-EVENT-CONNECTED - Connection to 90:f6:52:43:82:44 completed (auth) [id=0 id_str=]
Feb 26 10:53:31 x220 kernel: [273757.358903] wlan0: Wrong control channel in association response: configured center-freq: 2437 hti-cfreq: 2417  hti->control_chan: 2 band: 0.  Disabling HT.
Feb 26 10:53:34 x220 dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 9
Feb 26 10:53:34 x220 dhclient: DHCPREQUEST of 192.168.1.112 on wlan0 to 255.255.255.255 port 67
Feb 26 10:53:34 x220 dhclient: DHCPOFFER of 192.168.1.112 from 192.168.1.1
Feb 26 10:53:34 x220 dhclient: DHCPACK of 192.168.1.112 from 192.168.1.1
Feb 26 10:53:34 x220 dhclient: bound to 192.168.1.112 -- renewal in 36185 seconds.

Terlihat proses autentikasi sukses & wireless adapter saya mendapat IP 192.168.1.112.

root@x220:~# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 10:0b:a9:a1:f5:b8  
          inet addr:192.168.1.112  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::120b:a9ff:fea1:f5b8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:556117 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1859518 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:96155942 (96.1 MB)  TX bytes:2764438662 (2.7 GB)

root@x220:~# 

IPMP Pada Solaris 11

IPMP adalah singkatan dari IP Multi Path. Penjelasan sederhananya, IPMP menggabungkan beberapa network interface untuk mendapatkan redundansi IP. Misalnya kita punya server yang memiliki port e1000g0 & e1000g1; e1000g0 berada di system board sementara e1000g1 adalah port tambahan yang berada di PCI card. Kita bisa menggunakan 2 port tersebut untuk membuat sebuah virtual IP. Virtual IP inilah yang akan dikenal oleh dunia luar, dengan kata lain user yang ingin mengakses server ini cukup tahu virtual IP-nya.

Untuk memudahkan penamaan kita bisa mengubah nama data link masing-masing interface tersebut. Saya pernah tulis tentang fitur Solaris 11 yang bisa mengganti memisahkan interface fisik & data link di tulisan sebelumnya.

root@solaris11:~# dladm rename-link net0 onboard0
root@solaris11:~# dladm rename-link net1 pci0

Pada tulisan ini saya akan berbagi bagaimana caranya membuat IPMP interface dengan menggunakan interface onboard0pci0 tadi.

root@solaris11:~# dladm show-phys
LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
pci0              Ethernet             unknown    0      unknown   e1000g1
net2              Ethernet             unknown    0      unknown   e1000g2
onboard0          Ethernet             unknown    0      unknown   e1000g0
net3              Ethernet             up         1000   full      e1000g3
root@solaris11:~#
root@solaris11:~# dladm show-phys -P | egrep "e1000g0|e1000g1"
pci0              e1000g1      Ethernet             -----
onboard0          e1000g0      Ethernet             -----
root@solaris11:~#

Misalkan kita ingin memiliki “virtual IP” 172.16.103.100 untuk IPMP interface tadi. Masing-masing interface yang membentuk IPMP interface juga akan memiliki IP; IP yang dipakai oleh interface onboard0 & pci0 akan dikenal sebagai test address. Dalam contoh ini interface onboard0 akan menggunakan test address 172.16.103.101 & interface pci0 akan menggunakan IP 172.16.103.102.

Test address digunakan oleh masing-masing interface untuk memastikan konektifitas server dengan dunia luar. Masing-masing interface akan menggunakan test address untuk memastikan koneksi ke target address 172.16.103.1. Target address yang paling mudah diset adalah IP gateway. Untuk memastikan konektifitas masing-masing interface akan mengirimkan paket ICMP menuju target address. ICMP ini sama dengan yang dipakai oleh perintah ping. Jadi bisa juga dikatakan masing-masing interface akan melakukan ping pada target address. Bila hasil testnya tidak mendapatkan jawaban, maka interface tersebut akan memberi tahu IPMP bahwa dirinya tidak punya koneksi ke dunia luar & harap jangan menggunakan dirinya untuk sementara waktu. IPMP tidak akan menggunakan interface yang bersangkutan untuk berkomunikasi dengan dunia luar. Bila kedua interface gagal mendapatkan reply, maka IPMP akan down sehingga server ini terputus koneksinya dengan dunia luar. Pada saat itu, semua user tidak bisa mengakses server ini.

Langkah pertama membuat IPMP adalah dengan membuat IPMP group; misalkan kita sebut grupnya “oam0“. Grup ini yang akan menyatukan interface onboard0 & pci0. Perintahnya untuk membuat IPMP group adalah seperti berikut ini :

root@solaris11:~# ipadm create-ipmp oam0

Lalu kita buat IP interface pada masing-masing data link (onboard0 & pci0) dengan perintah seperti berikut :

root@solaris11:~# ipadm create-ip onboard0
root@solaris11:~# ipadm create-ip pci0

Setelah masing-masing link sudah memiliki IP interface, kita perlu mendaftarkannya ke dalam IPMP group oam0 :

root@solaris11:~# ipadm add-ipmp -i onboard0 -i pci0 oam0
root@solaris11:~# ipmpstat -g
GROUP       GROUPNAME   STATE     FDT       INTERFACES
oam0        oam0        ok        --        pci0 onboard0
root@solaris11:~#

Langkah berikutnya adalah mengaktifkan virtual IP 172.16.103.100 pada interface IPMP :

root@solaris11:~# ipadm create-addr -T static -a 172.16.103.100/24 oam0/v4

Kita bisa memeriksa status interface oam0 tersebut dengan salah satu perintah berikut ini :

root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        onboard0    pci0 onboard0
root@solaris11:~# 
root@solaris11:~# ifconfig oam0
oam0: flags=8001000843 mtu 1500 index 5
        inet 172.16.103.100 netmask ffffff00 broadcast 172.16.103.255
        groupname oam0
root@solaris11:~# 
root@solaris11:~# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net3/v4static     static   ok           172.16.103.10/24
oam0/v4           static   ok           172.16.103.100/24
lo0/v6            static   ok           ::1/128
onboard0/_a       static   ok           fe80::250:56ff:fe36:7c7c/10
pci0/_a           static   ok           fe80::20c:29ff:fe94:8526/10
root@solaris11:~#

Pada langkah ini bisa diliat virtual IP oam0 172.16.103.100 sudah aktif. IPMP hanya menggunakan interface onboard0 untuk menerima data (INBOUND) & menggunakan kedua interface fisik untuk mengirimkan data keluar (OUTBOUND).

root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        onboard0    pci0 onboard0
root@solaris11:~#

Sampai saat ini sebenarnya IPMP sudah selesai dibuat hanya saja masih menggunakan link-based failure detection. Maksudnya IPMP hanya akan menganggap suatu interface gagal bila koneksi fisiknya putus (misalnya bila kabelnya dicabut).

Solaris 11 menggunakan link-based failure detection sebagai default. Selain link-based failure detection, kita bisa memilih untuk menggunakan probe-based failure detection. Dengan probe-based failure detection, masing-masing interface (onboard0 & pci0) secara aktif memeriksa konektifitasnya dengan dunia luar. Jadi bisa saja meskipun kabelnya tidak terputus/tercabut, gateway IPnya tidak bisa diakses sehingga interface tersebut menginformasikan gagal koneksi kepada IPMP Group.

Berikut adalah cara untuk memberi alamat IP (test address) pada masing-masing interface :

root@solaris11:~# ipadm create-addr -T static -a 172.16.103.101/24 onboard0/v4
root@solaris11:~# ipadm create-addr -T static -a 172.16.103.102/24 pci0/v4

Untuk memeriksa masing-masing interface & test address-nya kita bisa menggunakan perintah berikut ini :

root@solaris11:~# ipmpstat -tn
INTERFACE   MODE       TESTADDR            TARGETS
pci0        routes     172.16.103.102      172.16.103.1
onboard0    routes     172.16.103.101      172.16.103.1
root@solaris11:~#

Mari kita periksa sekali lagi semua IP yang sudah kita aktifkan :

root@solaris11:~# ifconfig onboard0
onboard0: flags=9040843 mtu 1500 index 6
        inet 172.16.103.101 netmask ffffff00 broadcast 172.16.103.255
        groupname oam0
        ether 0:50:56:36:7c:7c 
root@solaris11:~# ifconfig pci0
pci0: flags=9040843 mtu 1500 index 7
        inet 172.16.103.102 netmask ffffff00 broadcast 172.16.103.255
        groupname oam0
        ether 0:c:29:94:85:26 
root@solaris11:~# 
root@solaris11:~# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net3/v4static     static   ok           172.16.103.10/24
oam0/v4           static   ok           172.16.103.100/24
onboard0/v4       static   ok           172.16.103.101/24
pci0/v4           static   ok           172.16.103.102/24
lo0/v6            static   ok           ::1/128
onboard0/_a       static   ok           fe80::250:56ff:fe36:7c7c/10
pci0/_a           static   ok           fe80::20c:29ff:fe94:8526/10
root@solaris11:~#

Untuk mengetahui bagaimana masing-masing test address memeriksa konektivitas dengan dunia luar, kita bisa gunakan perintah berikut ini :

root@solaris11:~# ipmpstat -p
TIME      INTERFACE   PROBE  NETRTT    RTT       RTTAVG    TARGET
0.87s     onboard0    i145   0.56ms    0.82ms    0.51ms    172.16.103.1
1.07s     pci0        i137   0.32ms    0.41ms    0.42ms    172.16.103.1
1.65s     onboard0    i146   0.34ms    0.43ms    0.50ms    172.16.103.1
1.95s     pci0        i138   0.35ms    0.45ms    0.42ms    172.16.103.1
3.02s     onboard0    i147   0.33ms    0.43ms    0.49ms    172.16.103.1
3.48s     pci0        i139   0.33ms    0.42ms    0.42ms    172.16.103.1
4.72s     onboard0    i148   0.33ms    0.42ms    0.48ms    172.16.103.1
4.81s     pci0        i140   0.31ms    0.40ms    0.42ms    172.16.103.1
6.28s     onboard0    i149   0.29ms    0.38ms    0.47ms    172.16.103.1
6.76s     pci0        i141   0.41ms    0.73ms    0.46ms    172.16.103.1
^C
root@solaris11:~#

Terlihat bahwa masing-masing test address secara aktif mengirimkan paket ICP ke target address.

Dengan pengaturan seperti di atas, IPMP akan menggunakan masing-masing interface/test address dalam konfigurasi aktif-aktif.

root@solaris11:~# ipmpstat -i
INTERFACE   ACTIVE  GROUP       FLAGS     LINK      PROBE     STATE
pci0        yes     oam0        -------   up        ok        ok
onboard0    yes     oam0        --mbM--   up        ok        ok
root@solaris11:~#

Seperti dijelaskan di atas, IPMP Group akan menggunakan menggunakan kedua interface untuk mengirimkan data.

root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        onboard0    pci0 onboard0
root@solaris11:~#

Kita punya opsi untuk mengatur hanya salah satu interface yang dipakai & menjadikan interface lainnya dalam posisi standby. Misalnya kita ingin mengatur test address pci0 sebagai standby interface, maka perintahnya seperti berikut ini :

root@solaris11:~# ipadm set-ifprop -p standby=on -m ip pci0

Dengan perintah tersebut maka IPMP Group hanya akan menggunakan interface onboard0 untuk menerima & mengirimkan data.

root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        onboard0    onboard0
root@solaris11:~#

Sekarang mari kita coba untuk mencabut kabel pada interface onboard0 & melihat apa yang terjadi pada IPMP Group.

root@solaris11:~# tail -0f /var/adm/messages 

Feb  4 22:54:24 solaris11 mac: [ID 486395 kern.info] NOTICE: onboard0 link down
Feb  4 22:54:24 solaris11 in.mpathd[155]: [ID 215189 daemon.error] The link has gone down on onboard0
Feb  4 22:54:24 solaris11 in.mpathd[155]: [ID 968981 daemon.error] IP interface failure detected on onboard0 of group oam0

^C
root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        pci0        pci0
root@solaris11:~#

Ketika IPMP mendeteksi putusnya koneksi pada interface onboard0, maka secara otomatis IPMP akan mengalihkan koneksi ke interface pci0.

Saat kita menyambungkan kembali kabel pada interface onboard0, IPMP akan mengembalikan koneksi seperti kondisi semula. Lihat contoh log yang muncul & bagaimana IPMP mengembalikan koneksi ke interface onboard0.

root@solaris11:~# tail -0f /var/adm/messages 
Feb  4 22:55:39 solaris11 mac: [ID 435574 kern.info] NOTICE: onboard0 link up, 1000 Mbps, full duplex
Feb  4 22:55:39 solaris11 in.mpathd[155]: [ID 820239 daemon.error] The link has come up on onboard0
Feb  4 22:55:54 solaris11 in.mpathd[155]: [ID 341557 daemon.error] IP interface repair detected on onboard0 of group oam0
^C
root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        onboard0    onboard0
root@solaris11:~#

Butuh waktu sekitar 15 detik bagi IPMP untuk menyadari bahwa koneksi pada interface onboard0 sudah kembali normal.

Lalu bagaimana bila pada suatu waktu kabel pada standby interface (pci0) terputus? Meskipun IPMP tidak sedang menggunakan pci0, tapi IPMP tetap mendeteksi gagalnya koneksi pada pci0 sehingga IPMP tahu bahwa dia tidak lagi memiliki backup.

root@solaris11:~# tail -0f /var/adm/messages 

Feb  4 23:01:42 solaris11 mac: [ID 486395 kern.info] NOTICE: pci0 link down
Feb  4 23:01:42 solaris11 in.mpathd[155]: [ID 215189 daemon.error] The link has gone down on pci0
Feb  4 23:01:42 solaris11 in.mpathd[155]: [ID 968981 daemon.error] IP interface failure detected on pci0 of group oam0
^C
root@solaris11:~# ipadm show-if
IFNAME     CLASS    STATE    ACTIVE OVER
lo0        loopback ok       yes    --
net3       ip       ok       yes    --
oam0       ipmp     ok       yes    onboard0 pci0
onboard0   ip       ok       yes    --
pci0       ip       failed   no     --
root@solaris11:~#

Bisa dilihat bahwa koneksi in & out tetap aktif melalui interface onboard0.

root@solaris11:~# ipmpstat -an
ADDRESS                   STATE  GROUP       INBOUND     OUTBOUND
::                        down   oam0        --          --
172.16.103.100            up     oam0        onboard0    onboard0
root@solaris11:~#

Tapi IPMP Group menyadari bahwa dia sudah kehilangan backup interface & menyatakan status dirinya DEGRADED :

We can see that the IPMP group marked as degraded :
root@solaris11:~# ipmpstat -g
GROUP       GROUPNAME   STATE     FDT       INTERFACES
dodol2      dodol2      failed    --        --
oam0        oam0        degraded  10.00s    onboard0 [pci0]
root@solaris11:~#

Bila koneksi kabel pada interface pci0 sudah disambungkan kembali, IPMP akan mendeteksinya juga seperti terlihat pada contoh log berikut ini :

root@solaris11:~# tail -0f /var/adm/messages 

Feb  4 23:02:22 solaris11 mac: [ID 435574 kern.info] NOTICE: pci0 link up, 1000 Mbps, full duplex
Feb  4 23:02:23 solaris11 in.mpathd[155]: [ID 820239 daemon.error] The link has come up on pci0
Feb  4 23:02:38 solaris11 in.mpathd[155]: [ID 341557 daemon.error] IP interface repair detected on pci0 of group oam0
^C
root@solaris11:~# ipadm show-if
IFNAME     CLASS    STATE    ACTIVE OVER
lo0        loopback ok       yes    --
net3       ip       ok       yes    --
oam0       ipmp     ok       yes    onboard0 pci0
onboard0   ip       ok       yes    --
pci0       ip       ok       no     --
root@solaris11:~#

Jadi bisa disimpulkan bahwa IPMP sangat berguna untuk mendapatkan koneksi yang lebih handal (reliable). Semua user sedang mengakses server ini tidak akan mendapat gangguan bila salah satu interface gagal beroperasi, atau bila salah satu kabel terputus.

UPDATE : semua perintah di atas akan langsung tersimpan secara permanen, artinya konfigurasinya tidak akan berubah meskipun kita reboot servernya.