May 282010
 

Ketika menggunakan koneksi internet yang dibatasi besarnya pemakaian per waktu tentu membuat kita suka bertanya-tanya berapa besar pemakaian yang sudah digunakan? Apalagi kalau kita menggunakan koneksi dengan GSM atau CDMA yang terkenal mahal per KB-nya, bisa tekor kalau sering kelebihan kuota :D

Setelah sibuk berkeliling dengan om Google akhirnya mendapat informasi yang tepat dari situsnya forum opensuse. Dari situ saya coba adaptasi dengan kebutuhan saya. Berikut langkah-langkahnya.

  • Tentu kita memerlukan NetworkManager untuk koneksinya, versi 0.8.x adalah NM yang paling OK untuk koneksi menggunakan GSM atau CDMA. Untuk mengoleksi data pemakaian digunakan vnstat, aplikasi command line kecil yang sangat bermanfaat ;-)
  • Kita mulai konfigurasi, yang pertama kita perlu edit adalah file /etc/cron.d/vnstat, file ini digunakan untuk mengatur seberapa sering kita akan mengupdate data koneksi. Punya saya seperti ini:
    MAILTO=root
    # to enable interface monitoring via vnstat remove comment on next line
    */2 * * * *  vnstat /usr/sbin/vnstat.cron

    “*/2″ berarti kita akan mengupdate data setiap 2 menit. vnstat kemudian memakai /usr/sbin/vnstat.cron, yang isinya

    #!/bin/bash
    # this script (/usr/sbin/vnstat.cron) reads /etc/sysconfig/vnstat
    # to start /usr/bin/vnstat.
    # example for /etc/sysconfig/vnstat:
    # VNSTAT_OPTIONS="-u -i eth0"
    # see also: vnstat(1)
    
    VNSTAT_CONF=/etc/sysconfig/vnstat
    
    if [ ! -f  ]; then
     exit 0
    fi
    
    . $VNSTAT_CONF
    
    /usr/bin/vnstat $VNSTAT_OPTIONS

    Hmm…, file ini membaca /etc/sysconfig/vnstat, yg isinya

    # see also: vnstat(1)
    #
    # starting with vnstat-1.6 vnstat can also be
    # configured via /etc/vnstat.conf
    #
    # the following sets vnstat up to monitor ppp0
    VNSTAT_OPTIONS="-u -i ppp0"

    Perhatikan “ppp0″, itu interface yang dibuat NetwokManager ketika koneksi internet terhubung. Sesuaikan dengan interface dari distro anda. Oh ya, file-file setingan tersebut berdasarkan konfigurasi di Fedora, untuk distro lain bisa jadi berbeda, sesuaikan saja ;-)

  • Kemudian bagaimana menghubungkannya dengan NetworkManager? Pada prinsipnya kita hanya ingin menghitung manakali koneksi terjadi dan tidak perlu menghitung manakala tidak ada koneksi. Tetapi vnstat dijalankan dengan cron job dan data akan tidak akurat kalau koneksi tidak ada (ppp0 tidak ada). Ternyata vnstat ada option –disable dan –enable untuk menghindari penghitungan pada interface yang tidak ada. Nah, kita buat file script untuk menjalan vnstat dengan option tersebut dan taruh di /etc/NetworkManager/dispatcher.d/. File-file yang ada di folder tersebut akan dijalan ketika NM membuat atau memutus koneksi. File script saya adalah:
    #!/bin/sh
    
    case "$2" in
     up)
     /usr/bin/vnstat --enable -i ppp0
     ;;
     down)
     /usr/bin/vnstat -r --disable -i ppp0
     ;;
     *)
     exit 0
     ;;
    esac

    Ketika “up” (koneksi terhubung) vnstat dipanggil dengan option –enable yang akan membuat perhitungan untuk ppp0 dibuka. Ketika “down” vnstat dipanggil dengan option –disable yang membuat perhitungan untuk ppp0 ditutup/diabaikan.

Bereslah sudah dan ketika berinternet ria dengan GSM/CDMA kita bisa cek jumlah pemakain kita dengan mengetikkan “vnstat” dari terminal. Option untuk menampilkan data-nya banyak, silahkan baca dari “man vnstat” ;-)

Jul 212009
 

Bila kita mempunyai dua atau lebih kartu jaringan, kadang udev atau mekanisme assigning kartu ke dev secara otomatis tidak seperti yang kita inginkan. Seperti contoh yang saya alami dengan centos, onboard kartu jaringan di-assign sebagai eth1 dan kartu jaringan tambahan sebagai eth0, sementara saya ingin onboard yang eth0. Nah, gimana cara ngerubah ini?

Untuk centos 5.3 yang masih menggunakan udev versi lama, maka ada beberapa file yang harus dirubah. Yang pertama adalah file /etc/modprobe.conf. Sebelumnya adalah:

[root@hb1 ~]# cat /etc/modprobe.conf 
alias eth0 3c59x
alias eth1 e100

e100 adalah driver untuk kartu jaringan onboard dan 3c59x adalah driver untuk kartu tambahan. Yang diinginkan onboar jadi eth0, maka kita rubah menjadi:

[root@hb1 ~]# cat /etc/modprobe.conf 
alias eth0 e100
alias eth1 3c59x

Selanjutnya adalah merubah file-file di /etc/sysconfig/network-scripts/ yaitu ifcfg-eth0 dan ifcfg-eth1 (kalau cuma 2 kartu). Pertama kita swap dulu nama kedua file tersebut dan kemudian adaptasikan perubahannya.

[root@hb1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
# Intel Corporation 82557/8/9/0/1 Ethernet Pro 100
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:e0:18:25:20:dd
ONBOOT=yes
DHCP_HOSTNAME=hb1
TYPE=Ethernet
IPADDR=192.168.0.11
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
USERCTL=no
IPV6INIT=no
PEERDNS=yes

Yang perlu dirubah paling DEVICE, IPADDR dan GATEWAY.

Untuk Fedora 10 keatas (dan turunannya serta Ubuntu yang baru serta turunannya) yang dilakukan lebih sederhana. TInggal rubah satu file saja yaitu file /etc/udev/rules.d/70-persisten-net.rules. Contoh yang satu kartu:

[hansen@hansen ~]$ 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.

# Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:19:21:6e:72:43", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Tinggal sesuaikan pada bagian ‘NAME=”eth0″‘.

Itu saja.

Update:
Ternyata centos mengambil setingan terakhir (eth1) sebagai default route, sementara saya menginginkan eth0 sebagai default route-nya. Untuk merubahnya, tambahkan nilai GATEWAY dari /etc/sysconfig/network-scripts/ifcfg-eth0 kedalam /etc/sysconfig/network dan hapus GATEWAY dari file /etc/sysconfig/network-scripts/ifcfg-eth0 dan /etc/sysconfig/network-scripts/ifcfg-eth1

%d bloggers like this: