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.

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? 😀 ).

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.

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.