SSH Reverse Proxy

VirtualBox menyediakan beberapa tipe network adapter yang bisa dipakai oleh setiap Virtual Machinenya. Salah satu jenis network adapter yang tersedia adalah NAT. Secara default, VM yang menggunakan NAT network adapter dan VM akan otomatis mendapatkan IP 10.0.2.15 (tentu bila VM diset menggunakan DHCP). Dengan IP NAT ini, VM bisa mengakses jaringan lokal & juga Internet melalui gateway IP 10.0.2.2. Akan tetapi kelemahan sistem NAT ini adalah, Host tidak bisa mengakses VM tersebut secara langsung. Misalnya pada Macbook saya punya VM Linux (hostname = svn). Meskipun VM tersebut memiliki SSH Server, saya tidak bisa mengakses SSH server tersebut dari Terminal-nya Mac.

Salah satu alternatif cara yang bisa saya gunakan untuk mengakses Virtual Machine yang menggunakan NAT Adapter adalah dengan Reverse SSH.

Dari dalam VM saya lakukan SSH ke Host dengan perintah berikut ini :

[oracle@svn ~]$ ssh -R 8080:localhost:22 ttirtawi@10.0.2.2
Password:
Last login: Mon Oct 13 11:49:32 2014 from localhost
ttirtawi@macbookpro:~$ 

Opsi -R 8080:localhost:22 dapat dibaca seperti ini : buatlah sebuah “tunnel” dari port 8080 milik Host (10.0.2.2) ke port 22 milik VM ‘SVN’. Dengan adanya tunnel tersebut setiap kali Host membuka koneksi SSH ke port 8080 miliknya sendiri, request SSH tersebut akan diteruskan ke port 22 milik VM ‘SVN’ tersebut. Pemilihan port 8080 sifatnya bebas, selama port tersebut aktif digunakan oleh Host. Sementara 22 adalah port SSH server milik VM.

Nah dari Host, saya tinggal lakukan SSH ke localhost port 8080 seperti contoh berikut ini :

ttirtawi@macbookpro:~$ ssh -p 8080 oracle@localhost
oracle@localhost's password: 
Last login: Mon Oct 13 03:49:03 2014 from localhost
[oracle@svn ~]$ 
[oracle@svn ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:49:df:4e brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    inet6 fe80::a00:27ff:fe49:df4e/64 scope link 
       valid_lft forever preferred_lft forever
[oracle@svn ~]$ 
[oracle@svn ~]$ hostname
svn
[oracle@svn ~]$ 

Otomatis saya akan langsung terhubung ke VM tersebut. Ini tangkapan layar dari langkah-langkah tadi :

Memindahkan Oracle DB File

Salah satu komponen dari Oracle Database adalah “datafile”. Pengertian sederhana dari datafile adalah kumpulan berkas tempat menyimpan semua database object. Contoh database object antara lain adalah tables, indexes, constraints, packages, sequences, dsb. Ada juga yang menyebut datafile sebagai “DB File”. Datafile umumnya menggunakan file extension *.dbf, seperti contoh berikut ini :

[oracle@svn ~]$ ls -tlr /oracle/database/oradata/SVN/*dbf
-rw-r----- 1 oracle oinstall  30416896 Oct 12 02:05 /oracle/database/oradata/SVN/temp01.dbf
-rw-r----- 1 oracle oinstall   5251072 Oct 12 02:06 /oracle/database/oradata/SVN/users01.dbf
-rw-r----- 1 oracle oinstall 104865792 Oct 12 02:06 /oracle/database/oradata/SVN/example01.dbf
-rw-r----- 1 oracle oinstall 713039872 Oct 12 02:07 /oracle/database/oradata/SVN/system01.dbf
-rw-r----- 1 oracle oinstall 104865792 Oct 12 02:07 /oracle/database/oradata/SVN/undotbs01.dbf
-rw-r----- 1 oracle oinstall 524296192 Oct 12 02:07 /oracle/database/oradata/SVN/sysaux01.dbf
[oracle@svn ~]$ 

Meskipun demikian Oracle Database tidak serta merta menulis data ke dalam datafile. Semua datafile tersebut disusun secara logical dalam bentuk tablespace. Sebuah tablespace dapat tersusun dari beberapa datafile sekaligus. Bila tablespace sudah kehabisan ruang kosong, kita bisa menambahkan datafile yang baru untuk memperluas tablespace. Di dalam tablespace inilah semua database object disimpan. Komponen Oracle Database lainnya adalah controlfile. Kalau datafile digunakan untuk menyimpan data, controlfile bertugas menyimpan informasi struktur fisik database. Misalnya database name, lokasi datafile, lokasi dari redolog, dsb.

Selain datafile & controlfile, Oracle Database memiliki komponen penting lainnya yaitu initialization parameters file. Saat pertama kali dihidupkan, Oracle Database akan membaca parameter-parameter yang disimpan oleh initialization parameters file tersebut. Salah satu parameter yang dibaca adalah lokasi tempat controlfile berada. Oracle Database memiliki 2 jenis initialization parameters file : SPFILE atau PFILE. PFILE adalah berkas teks biasa yang bisa dimodifikasi dengan editor teks seperti vi atau Notepad (di Windows). Sementara SPFILE adalah berkas binary yang hanya bisa dimodifikasi oleh Oracle Database melalui perintah SQL. Baik SPFILE maupun PFILE biasanya disimpan dalam direktori $ORACLE_HOME/dbs.

Relasi antara initialization parameters file, datafile, dan controlfile gampangnya seperti ini :

  • Oracle DB membaca SID (System ID) dari environment variable.
  • Oracle DB mencari PFILE/SPFILE yang bersesuaian dengan SID tadi. Biasanya nama berkas PFILE & SPFILE adalah init<SID>.ora atau spfile<SID>.ora (contoh : misalnya SID = ORCL, maka PFILE akan menggunakan nama initORCL.ora).
  • Oracle DB membaca PFILE (atau SPFILE) tersebut untuk mengetahui lokasi controlfile.
  • Oracle DB lalu membaca controlfile untuk mengetahui datafile mana saja yang menyusun database.
  • Barulah Oracle DB bisa mengakses semua datafile dan menyiapkan semua database object.

Berikut ini adalah catatan pribadi saya tentang cara memindahkan datafile & controlfile ke lokasi yang baru :

  1. Pertama saya mencari tahu dulu di mana datafile & controlfile yang digunakan oleh database. Cara paling mudah adalah dengan melihat tabel v$controlfile & v$datafile seperti contoh berikut ini :
    [oracle@svn ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.1.0 Production on Sun Oct 12 02:08:23 2014
    
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> COLUMN NAME FORMAT A60
    SQL> SELECT NAME FROM V$CONTROLFILE;
    
    NAME
    ------------------------------------------------------------
    /oracle/database/oradata/SVN/control01.ctl
    /oracle/database/flash_recovery_area/SVN/control02.ctl
    
    SQL> SELECT NAME FROM V$DATAFILE;
    
    NAME
    ------------------------------------------------------------
    /oracle/database/oradata/SVN/system01.dbf
    /oracle/database/oradata/SVN/sysaux01.dbf
    /oracle/database/oradata/SVN/undotbs01.dbf
    /oracle/database/oradata/SVN/users01.dbf
    /oracle/database/oradata/SVN/example01.dbf
    
    SQL> 
    

    Dari hasil perintah SQL tersebut saya paham ada beberapa berkas pada 3 direktori yang perlu dipindahkan :

    • /oracle/database/oradata/SVN : berisi controlfile #1.
    • /oracle/database/flash_recovery_area/SVN : berisi controlfile #2.
    • /oracle/database/oradata/SVN/ : berisi datafile.
  2. Untuk memeriksa initialization parameters file yang sedang digunakan oleh Oracle Database saya bisa menggunakan perintah berikut ini :
    SQL> SHOW PARAMETER SPFILE
    
    NAME                     TYPE    VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                   string  /oracle/database/11.2.0/server
                             /dbs/spfileSVN.ora
    SQL> 
    

    Dalam contoh ini database saya menggunakan berkas /oracle/database/11.2.0/server/dbs/spfileSVN.ora sebagai initialization file-nya.

  3. Sebelum mulai memindahkan datafile & controlfile saya siapkan dulu direktori baru untuk menyimpan berkas-berkas tadi. Misalnya saya ingin pindahkan semua datafile dan controlfile ke dalam direktori /oracle/database/oradata_NEW/SVN :
    [oracle@svn ~]$ cd /oracle/database
    [oracle@svn ~]$ mkdir -p oradata_NEW/SVN
    [oracle@svn ~]$ chown -R oracle:oinstall oradata_NEW
    [oracle@svn ~]$ 
    
  4. Berikutnya saya perlu mengatur ulang database untuk memindahkan controlfile. Karena database-nya menggunakan SPFILE, saya perlu memodifikasi berkas SPFILE dengan perintah ALTER SYSTEM seperti berikut ini :
    SQL> ALTER SYSTEM SET CONTROL_FILES='/oracle/database/oradata_NEW/SVN/control01.ctl','/oracle/database/oradata_NEW/SVN/control02.ctl' SCOPE=SPFILE;
    
    System altered.
    
    SQL> 
    

    Hal tersebut berbeda bila database menggunakan PFILE. Bila database menggunakan PFILE & kita mencoba mengubah lokasi controlfile dengan perintah di atas akan muncul error seperti ini :

    SQL> ALTER SYSTEM SET CONTROL_FILES='/oracle/database/oradata_NEW/SVN/control01.ctl','/oracle/database/oradata_NEW/SVN/control02.ctl';
    ALTER SYSTEM SET CONTROL_FILES='/oracle/database/oradata_NEW/SVN/control01.ctl','/oracle/database/oradata_NEW/SVN/control02.ctl'
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified
    
    
    SQL> 
    

    Bila database kita menggunakan PFILE, maka cukup edit berkas init.ora untuk memodifikasi parameter control_files seperti contoh berikut ini :

    [oracle@svn dbs]$ grep -i control initSVN.ora
    *.control_files='/oracle/database/oradata_NEW/SVN/control01.ctl','/oracle/database/oradata_NEW/SVN/control02.ctl'
    [oracle@svn dbs]$ 
    
  5. Setelah itu saya perlu mematikan database terlebih dulu :
    SQL> SHUTDOWN IMMEDIATE;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> 
    
  6. Pada tahap ini saya bisa memindahkan semua berkas datafile & controlfile :
    [oracle@svn ~]$ mv /oracle/database/oradata/SVN/control01.ctl /oracle/database/oradata_NEW/SVN/
    [oracle@svn ~]$ mv /oracle/database/flash_recovery_area/SVN/control02.ctl /oracle/database/oradata_NEW/SVN/
    [oracle@svn ~]$ mv /oracle/database/oradata/SVN/*dbf  /oracle/database/oradata_NEW/SVN/
    [oracle@svn ~]$     
    
  7. Setelah semua berkas sukses dipindahkan, berikutnya saya bisa menyalakan kembali database. Pada tahap ini saya harus menyalakan database dengan mode mount saja.
    [oracle@svn ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.1.0 Production on Sun Oct 12 02:19:03 2014
    
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> STARTUP MOUNT;
    ORACLE instance started.
    
    Total System Global Area 1653518336 bytes
    Fixed Size          2213896 bytes
    Variable Size         973080568 bytes
    Database Buffers      671088640 bytes
    Redo Buffers            7135232 bytes
    Database mounted.
    SQL> 
    
  8. Setelah database sudah dalam status mounted, sekarang saya perlu mengatur ulang database untuk mengganti nama setiap datafile dengan perintah “ALTER DATABASE RENAME FILE” seperti contoh berikut ini :
    SQL> ALTER DATABASE RENAME FILE '/oracle/database/oradata/SVN/system01.dbf' TO '/oracle/database/oradata_NEW/SVN/system01.dbf';
    
    Database altered.
    
    SQL> ALTER DATABASE RENAME FILE '/oracle/database/oradata/SVN/sysaux01.dbf' TO '/oracle/database/oradata_NEW/SVN/sysaux01.dbf';
    
    Database altered.
    
    SQL> ALTER DATABASE RENAME FILE '/oracle/database/oradata/SVN/undotbs01.dbf' TO '/oracle/database/oradata_NEW/SVN/undotbs01.dbf';
    
    Database altered.
    
    SQL> ALTER DATABASE RENAME FILE '/oracle/database/oradata/SVN/users01.dbf' TO '/oracle/database/oradata_NEW/SVN/users01.dbf';
    
    Database altered.
    
    SQL> ALTER DATABASE RENAME FILE '/oracle/database/oradata/SVN/example01.dbf' TO '/oracle/database/oradata_NEW/SVN/example01.dbf';
    
    Database altered.
    
    SQL> 
    

    Untuk memastikan semua controlfile & datafile pada lokasi yang baru, saya bisa memeriksanya dengan perintah berikut ini :

    SQL> SELECT NAME FROM V$CONTROLFILE;
    
    NAME
    --------------------------------------------------------------------------------
    /oracle/database/oradata_NEW/SVN/control01.ctl
    /oracle/database/oradata_NEW/SVN/control02.ctl
    
    SQL> SELECT NAME FROM V$DATAFILE;
    
    NAME
    --------------------------------------------------------------------------------
    /oracle/database/oradata_NEW/SVN/system01.dbf
    /oracle/database/oradata_NEW/SVN/sysaux01.dbf
    /oracle/database/oradata_NEW/SVN/undotbs01.dbf
    /oracle/database/oradata_NEW/SVN/users01.dbf
    /oracle/database/oradata_NEW/SVN/example01.dbf
    
    SQL> 
    
  9. Setelah itu barulah kita bisa mengganti mode database ke mode open (mode open maksudnya semua isi datafile bisa diakses kembali oleh user). Untuk memindahkan mode database dari mode mount ke open saya gunakan perintah berikut ini ;
    SQL> ALTER DATABASE OPEN;
    
    Database altered.
    
    SQL> 
    

Begitu kira-kira langkah yang saya gunakan untuk memindahkan datafile dan controlfile Oracle Database. Saya menggunakan Oracle Database 11g (Enterprise Edition Release 11.2.0.1.0) untuk membuat contoh langkah-langkah di atas. Oracle Database tersebut terpasang pada Oracle Linux 6.5. Semoga bermanfaat.

Mengganti Ethernet Instance Number – RHEL 6

Di Linux, network interface card (NIC) Ethernet dikenali dengan simbol eth. Masing-masing interface punya nomor yang unik. Misalnya bila cuma ada 1 interface maka namanya adalah eth0. Bila ada 2, maka kita bisa lihat akan ada 2 interface : eth0 dan eth1. Penomoran ini diatur udev (Dynamic Device Management). Saat proses booting, udev akan mencocokan data perangkat yang aktif dengan aturan yang sudah ada sebelumnya. Misalnya untuk NIC, udev menyimpan aturan (rule) penomoran NIC dalam berkas /etc/udev/rules.d/70-persistent-net.rules seperti contoh berikut ini.

root@rhel6:~# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.


# PCI device 0x8086:0x100e (e1000)


# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:d9:19:33", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:14:05:a7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
root@rhel6:~# 

Pada contoh di atas ada 2 NIC yang terdaftar. Ethernet dengan MAC address “08:00:27:d9:19:33” akan selalu diberi nama eth0 sedangkan NIC dengan MAC Address “08:00:27:14:05:a7” akan diberi nama eth1. Misalnya ada penambahan NIC baru pada komputer, udev akan otomatis menambahkan 1 nomor sehingga NIC tersebut akan dikenali sebagai eth2.

Selain rule untuk perangkat jaringan di atas, udev juga memiliki beberapa berkas lain seperti misalnya :

[root@dummyuim rules.d]# ll
total 36
-rw-r--r--. 1 root root 1652 Nov 20  2010 60-fprint-autosuspend.rules
-rw-r--r--. 1 root root  153 Oct 10  2013 60-ipath.rules
-rw-r--r--. 1 root root 1060 Jul 25  2010 60-pcmcia.rules
-rw-r--r--. 1 root root  316 Oct 12  2013 60-raw.rules
-rw-r--r--. 1 root root  530 Oct  1 22:43 70-persistent-cd.rules
-rw-r--r--. 1 root root  585 Oct  2 07:50 70-persistent-net.rules
-rw-r--r--. 1 root root  320 Dec 20  2012 90-alsa.rules
-rw-r--r--. 1 root root   83 May 21  2011 90-hal.rules
-rw-r--r--. 1 root root  292 Nov 18  2013 98-kexec.rules
[root@dummyuim rules.d]# 

Proses udev akan melakukan scanning pada semua perangkat yang terdeteksi oleh kernel Linux saat proses booting berlangsung. Tidak cuma mengatur penomoran masing-masing perangkat, udev juga bertanggung jawab untuk menjalankan program yang diperlukan untuk mengaktifkan perangkat. Misalnya dengan udev kita bisa menentukan driver module mana yang diperlukan oleh sebuah perangkat (udev akan memanggil program modprobe untuk mengaktifkan driver tersebut).

Kembali ke soal penamaan network interface tadi, biasanya penomoran Ethernet akan relatif statis tidak pernah berubah-ubah. Penomoran Ethernet akan berubah pada kasus tertentu saja; misalnya ada penggantian NIC yang rusak. Tentu hal semacam itu relatif jarang terjadi. Berbeda halnya saat saya menggunakan VirtualBox, saya bisa dengan mudah menggonta-ganti NIC & MAC Address-nya dengan mudah. Gambar berikut adalah contoh cara mengganti MAC Address pada sebuah virtual machine (VirtualBox akan otomatis menghasilkan MAC Address baru):

Misalnya VM RedHat Linux saya awalnya memiliki 1 buah NIC dengan MAC Address “08:00:27:d9:19:33”. NIC tersebut dikenali oleh Linux sebagai eth0. Lalu saya sengaja mengganti MAC Address-nya “08:00:27:14:05:a7”. Karena pada contoh ini saya menggunakan Network Manager & DHCP, Network Manager akan otomatis mengaktifkan NIC tersebut. Akibatnya saya mendapati NIC saya berubah menjadi eth1 seperti contoh berikut ini :

root@rhel6:ttirtawi# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:14:05:a7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.2/24 brd 192.168.56.255 scope global eth1
    inet6 fe80::a00:27ff:fe14:5a7/64 scope link
       valid_lft forever preferred_lft forever
root@rhel6:ttirtawi# 

Bila saya cek udev rule saya mendapati 2 baris yang mengatur Ethernet seperti ini :

root@rhel6:~# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.


# PCI device 0x8086:0x100e (e1000)


# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:d9:19:33", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:14:05:a7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
root@rhel6:~# 

Bila saya ingin mengembalikan nama eth0 pada NIC tersebut saya bisa memodifikasi berkas 70-persistent-net.rules tadi menjadi seperti ini :

root@rhel6:~# vi /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.


# PCI device 0x8086:0x100e (e1000)


# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:14:05:a7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
root@rhel6:~# 

Saya hapus saja baris yang masih mengatur NIC eth0 & MAC Address lama (“08:00:27:d9:19:33”). Lalu saya ubah baris berisi eth1 menjadi eth0 (untuk baris berisi MAC Address “08:00:27:14:05:a7”). Untuk mengaktifkan rule baru tersebut, cara paling mudah adalah dengan me-restart VM ini. Bila saya perlu melakukannya tanpa me-restart mesin, saya bisa menggunakan perintah udevadm.

Jadi setelah mengubah berkas 70-persistent-net.rules tadi, saya perlu menonaktifkan interface eth1 terlebih dulu seperti contoh berikut ini :

root@rhel6:~# ifconfig eth1 down

Barulah saya bisa menggunakan perintah udevadm seperti berikut ini :

root@rhel6:~# udevadm trigger --attr-match=subsystem=net

Perintah tersebut “memaksa” proses udev untuk membaca ulang rules yang dimilikinya & mengatur ulang penomoran Ethernet. Dengan begitu NIC yang awalnya menggunakan nama eth1 sekarang otomatis berubah menjadi eth0.

root@rhel6:~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:14:05:A7 
          inet addr:192.168.56.2  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe14:5a7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KiB)  TX bytes:2482 (2.4 KiB)


lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:757 errors:0 dropped:0 overruns:0 frame:0
          TX packets:757 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:65098 (63.5 KiB)  TX bytes:65098 (63.5 KiB)


root@rhel6:~# 

Kira-kira begitu catatan saya untuk mengubah penamaan network interface Ethernet pada RedHat Linux.

Sekilas Tentang VirtualBox Shared Folder

VirtualBox Shared Folder adalah salah satu fitur VirtualBox yang memungkinkan kita berbagi data antara komputer host dengan setiap VirtualBox guest (virtual machine). Istilah komputer host & guest pernah saya tulis di tulisan sebelumya tentang virtualisasi. Syarat untuk bisa menggunakan VirtualBox Shared Folder ini adalah guest OS harus sudah dilengkapi dengan VirtualBox Guest Addition driver.

Tulisan ini adalah dokumentasi pribadi saya tentang langkah menggunakan VirtualBox Shared Folder (VBox SF) di Mac OSX 10.9. MacMini menjadi komputer sehari-hari saya untuk urusan pekerjaan & pribadi. Semua data saya ada di home directory-nya MacMini. Ada kalanya saya perlu menggunakan VirtualBox untuk menjalankan Linux (Ubuntu). Misalnya saat saya ingin terhubung dengan jaringan VPN kantor tanpa perlu menggangu koneksi LAN & aktivitas internet saya lainnya. Saat menggunakan virtual machine seperti ini, saya perlu juga mengakses data-data saya yang ada di Mac. Di sinilah saya perlu menggunakan VBox SF supaya Ubuntu saya bisa mengakses semua data yang ada di Mac. Ini langkah-langkah yang saya lakukan untuk mengijinkan Ubuntu mengakses folder Mac saya : Continue reading

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.