DNS untuk Intranet

July 28, 2006

Domain Name Service (DNS) adalah layanan untuk memetakan nama domain (misal jawa.vnet) ke alamat IP (misal 10.0.0.1) dan sebaliknya. Ini komponen penting yang harus anda pasang pertama kali Intranet berdiri. Berikut ini cara pemasangannya di Linux Redhat.

Membuat DNS gampang-gampang susah. Kalau mau enteng, pakai program configurator seperti webmin. Redhat juga punya DNS configurator yang mudah dipakai. Namun pengalaman membuktikan, edit langsung file konfigurasinya adalah cara yang paling fleksibel, andal dan terpercaya.Buat belajar, mari kita coba dengan contoh sederhana.

  1. Hanya untuk Intranet.
  2. Hanya bisa jawab nama domain dan IP yang tercantum di konfigurasi. Tidak bisa menjawab nama Internet misalnya www.yahoo.com.
  3. Tidak pakai sekuritas

Untuk mengkonfigurasi DNS, langkah intinya adalah:

  1. Desain nama domain/IP anda
  2. Siapkan komputer server
  3. Pasang paket DNS (bind)
  4. Edit file konfigurasi utama (/etc/named.conf)
  5. Edit file zone DNS. Ini berisi peta nama-domain –> alamat-IP
  6. Edit file addr DNS. Ini sebaliknya berisi peta alamat-IP –> nama-domain.
  7. Aktifkan DNS daemon
  8. Uji Coba

DESAIN NAMA DOMAIN / IP

Untuk intranet, anda bebas mau pakai nama domain apa saja, dan tidak perlu daftar/beli ke InterNIC (pengelola nama domain Internasional). Sementara itu untuk alamat IP, anda bisa pilih salah satu ruas IP Internal:

    10.x.y.z
    172.16-31.y.z
    192.168.y.z

Misalkan desain kita adalah sbb:

    jawa.vnet       = 10.0.0.1
    sumatera.vnet   = 10.0.0.2
    kalimantan.vnet = 10.0.0.3
    sulawesi.vnet   = 10.0.0.4
    papua.vnet      = 10.0.0.5
    pc01.vnet       = 10.0.0.101


Contoh Jaringan Intranet. Papua adalah DNS server, sekaligus www, mail dan samba server. Si pc01 adalah workstation biasa.SIAPKAN SERVER

Satu DNS sudah cukup untuk melayani seluruh jaringan anda dan biasanya dipasang di server internal. DNS sendiri tidak perlu komputer kencang. Tapi kalau si server sekaligus melayani e-mail, WWWP, FTP, SAMBA dll., anda perlu komputer terbaik yang anda bisa beli. Distro yang cocok dipakai adalah Redhat, Debian atau Slackware.

Pada contoh ini, DNS dipasang di server (papua, 10.0.0.5) dengan distro Redhat 9.0. File konfigurasi akan kita edit langsung. Yang mungkin jadi masalah, Redhat menyediakan konfigurator yang suka bingung kalau kofigurasinya di edit langsung. Well, percaya saya. Edit langsung lebih enak dan pasti jalan di semua distro. Lupakan saja konfigurator.

PASANG PAKET DNS

Paket DNS namanya bind (terakhir versi 9.x), dan karena pentingnya, pasti sudah tersedia di distro. Anda bisa langsung pasang saat instalasi. Kalau belum, gunakan rpm dari konsole/terminal.

    # pasang di redhat
    mount /dev/cdrom
    rpm -i bind /mnt/cdrom/Redhat/RPMS/bind-x.y.x.rpm
    
    # periksa apakah sudah terpasang
    rpm -qa | grep bind

EDIT FILE KONFIGURASI UTAMA

File konfigurasi utama adalah /etc/named.conf. Anda bisa edit sebagai root dengan editor teks (vim, emacs, joe, pico, dll). Redhat sudah menyediakan contoh named.conf, namun kali ini tidak kita pakai. Sebaiknya anda selamatkan dulu, lalu buat baru

    # Selamatkan named.conf lama
    # Selamatkan juga rndc.conf (pengontrol bind)
    cd /etc
    mv named.conf named.conf-save
    mv rndc.conf rndc.conf-save
    
    # Edit baru
    vi named.conf

Isi named.conf paling sederhana adalah sebagai berikut:

__________________________________________________________
// /etc/named.conf - configuration for bind
//
options {
    directory "/var/named/";
    listen-on {10.0.0.5;};
};

// File untuk pemetaan nama-domain --> IP
zone  "vnet" {
   type master;
   file  "vnet.zone";
   allow-update {none;};
};

// File untuk pemetaan IP --> nama-domain
zone  "10.addr" {
   type master;
   file  "10.addr";
   allow-update {none;};
};
__________________________________________________________

EDIT FILE ZONE

File zone biasanya diberi name sesuai nama-domain terbalik dari belakang. Misalnya com.bogus.zone atau id.co.bogus.zone. Untuk kasus kita namanya vnet.zone. Posisi file ini adalah di /var/named, sesuai options directory di named.conf. Di direktori tersebut juga ada beberapa file bawaan Redhat. Biarkan saja, jangan diotak-atik.

__________________________________________________________
; /var/named/vnet.zone - zone mapping

; Block kepala
; Salin saja apa adanya, kecuali ubah .vnet jadi domain anda
; Dan nomor serial sesuai tanggal pembuatan
$TTL    3600
;$ORIGIN vnet.
@       IN      SOA     ns1.vnet.       root.vnet.      (
                2003082701      ;serial
                3600            ;refresh
                900             ;retry
                3600000 ;expire
                3600            ;minimum
                )
; Blok server
; Bagian ini menyatakan server-server penting di vnet (DNS dan mail)
        IN      NS      ns1.vnet.
        IN      MX      10 mail.vnet.

; Blok Pemetaan
jawa            A       10.0.0.1
sumatera        A       10.0.0.2
kalimantan      A       10.0.0.3
sulawesi        A       10.0.0.4
papua           A       10.0.0.5
pc01            A       10.0.0.101

; Blok Nama alias
; Dengan nama alias, komputer tertentu bisa dipanggil dengan nama lain
; Misalnya saja papua befungsi sebagai DNS, Mail dan WWW Server
ns1             CNAME   papua
mail            CNAME   papua
www             CNAME   papua
__________________________________________________________

EDIT FILE ADDR

File addr biasanya diberi nama sesuai alamat-ip terbalik dari belakang misalnya 10.addr, 16.172.addr, atau 1.168.192.addr. Posisi file ini juga di direktori /var/named. Berikut ini contohnya.

__________________________________________________________
; /var/named/10.addr - IP addr mapping

; Blok kepala
; Sesuaikan alamat network (di sini 10) dan domain (vnet)
; Dan ganti nomor serial sesuai tanggal pembuatan
$TTL 3600
10.in-addr.arpa.        IN      SOA     ns1.vnet. root.vnet. (
                2003082701      ;serial
                10800           ;refresh
                3600            ;retry
                3600000         ;expire
                86400           ;default_ttl
                )
; Blok server
; Bagian ini menyatakan server-server penting di vnet (DNS)
        IN      NS      ns1.vnet.

; Blok Pemetaan
; Perhatikan alamat ditulis terbalik dan ada titik di akhir nama domain
1.0.0   PTR     jawa.vnet.
2.0.0   PTR     sumatera.vnet.
3.0.0   PTR     kalimantan.vnet.
4.0.0   PTR     sulawesi.vnet.
5.0.0   PTR     papua.vnet.
101.0.0 PTR     pc01.vnet.
__________________________________________________________

AKTIFKAN DNS DAEMON

Di Redhat, anda bisa gunakan GUI service configurator atau TUI setup.

  • Dari terminal jalankan program setup.
  • Pilih menu System Services
  • Hidupkan [*] named pada list.

Kalau mau cara CLI (Command Line Interface), dari terminal:

    # Hidupkan
    root@papua# chkconfig named on
    
    # Periksa apakah sudah ON
    root@papua# chkconfig --list named
    named           0:off   1:off   2:on    3:on    4:on    5:on    6:off
    
    # Sekarang jalankan (start / restart)
    root@papua# service named start
    
    # Periksa
    root@papua# service named status
    
    # kalau anda mengubah konfigurasi, harus reload
    root@papua# service named reload

UJI COBA

Sekarang DNS Server anda mestinya sudah siap. mari di coba:

    ### Periksa apakah bind sudah jalan dan file terbaca dengan baik
    ### Perhatikan adanya baris listening on IPv4,
    ### zone vnet dan zone 10.in-addr.arpa loaded
    ### dan terakhir running
    ### kalau ada kegagalan, biasanya karena konfigurasi salah tulis
    root@papua:# tail -n 30 /var/log/messages | grep named
    Aug 27 05:03:41 papua named[1870]: starting BIND 9.2.2
    Aug 27 05:03:41 papua named[1870]: using 1 CPU
    Aug 27 05:03:41 papua named[1870]: loading configuration from '/etc/named.conf'
    Aug 27 05:03:41 papua named[1870]: no IPv6 interfaces found
    Aug 27 05:03:41 papua named[1870]: listening on IPv4 interface eth0, 10.0.0.5#53
    Aug 27 05:03:41 papua named[1870]: command channel listening on 127.0.0.1#953
    Aug 27 05:03:41 papua named[1870]: zone vnet/IN: loaded serial 2003082701
    Aug 27 05:03:41 papua named[1870]: zone 10.in-addr.arpa/IN: loaded serial 2003082701
    Aug 27 05:03:41 papua named[1870]: running
    
    ### Kalau memang jalan, periksa apakah port 53 open sebagai domain
    ### Kalau belum anda salah konfigurasi (periksa options listen-on)
    root@papua:# nmap 10.0.0.5
    Interesting ports on 10.0.0.5
    (The 1516 ports scanned but not shown below are in state: closed)
    Port       State       Service
    22/tcp     open        ssh
    25/tcp     open        smtp
    53/tcp     open        domain
    80/tcp     open        http 
    
    ### Test zone lookup jawa.vnet
    ### ANSWER SECTION harus dapat IP yang benar 10.0.0.1
    ### Kalau gagal, ada kesalahan di file zone
    root@papua:# dig @10.0.0.5 jawa.vnet
    
    ; DiG 9.2.2 @10.0.0.5 jawa.vnet
    ;; global options:  printcmd
    ;; Got answer:
    ;; -HEADER- opcode: QUERY, status: NOERROR, id: 4278
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;jawa.vnet.                     IN      A
    
    ;; ANSWER SECTION:
    jawa.vnet.              3600    IN      A       10.0.0.1
    
    ;; AUTHORITY SECTION:
    vnet.                   3600    IN      NS      ns1.vnet.
    
    ;; Query time: 0 msec
    ;; SERVER: 10.0.0.5#53(10.0.0.5)
    ;; WHEN: Wed Aug 27 05:16:59 2003
    ;; MSG SIZE  rcvd: 77
    
    ### Test reverse lookup 10.0.0.1
    ### ANSWER SECTION harus dapat jawa.vnet
    ### Kalau gagal, ada kesalahan di file addr
    root@papua:# dig @10.0.0.5 -x 10.0.0.1
    
    ; DiG 9.2.2 @10.0.0.5 -x 10.0.0.1
    ;; global options:  printcmd
    ;; Got answer:
    ;; -HEADER- opcode: QUERY, status: NOERROR, id: 40608
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;1.0.0.10.in-addr.arpa.         IN      PTR
    
    ;; ANSWER SECTION:
    1.0.0.10.in-addr.arpa.  3600    IN      PTR     jawa.vnet.
    
    ;; AUTHORITY SECTION:
    10.in-addr.arpa.        3600    IN      NS      ns1.vnet.
    
    ;; Query time: 0 msec
    ;; SERVER: 10.0.0.5#53(10.0.0.5)
    ;; WHEN: Wed Aug 27 05:24:55 2003
    ;; MSG SIZE  rcvd: 80

Kalau testing berhasil, anda bisa tarik napas lega. DNS Jalan !!!
Sekarang tinggal pastikan bahwa semua komputer di jaringan pakai DNS 10.0.0.5.Artikel Terkait

Copyleft Kocil, 2003 under GNU FDL


DNS Intranet/Internet

July 28, 2006

DNS buat Intranet/Internet harus dapat menjawab nama domain resmi di Internet, dan sekaligus nama domain tak resmi Intranet. Ini cara settingnya.

Ada tiga teknik yang membantu DNS Intranet/Internet.

  1. Root hints. Kita beri petunjuk pada DNS server agar bertanya pada DNS server root (induk), yaitu pengelola nama paling dasar (.com, .org, dll). Nanti DNS server root tersebut akan mencarikan nama cabangnya (yahoo.com, kernel.org, dll).
  2. Forwarding. Dengan teknik ini DNS server kita akan bertanya ke DNS server lain, tidak langsung ke root. Teknik ini lebih efisien, dan kita bisa manfaatkan DNS server internet provider (kalau langganan pasti dikasih).
  3. Caching. DNS server kita akan menyimpan sementara peta nama-domain/alamat IP. Jadi saat client minta lagi, bisa langsung dijawab tanpa harus cari-cari lagi ke DNS server lain.

Jika anda sudah pasang DNS server Intranet. Maka menambahkan kemampuan Internet tidak begitu susah. Anda hanya perlu:

  1. Siapkan informasi DNS yang mau jadi forwarder. Tinggal tanya provider.
  2. Siapkan file /var/named/root.hints
  3. Edit file /etc/named.conf
  4. Reload DNS server
  5. Uji Coba

SIAPKAN FILE ROOT.HINTS
Paket DNS di distro anda biasanya sudah menyertakan root.hints standar. Tapi root.hints itu bisa kedaluwarsa (karena DNS server root mungkin mati atau tambah). Anda dianjurkan untuk mengupdatenya sebulan sekali, misalnya dari: ftp://dns.vrx.net/pub/db.root

Download saja, lalu taruh sebagai /var/named/root.hints. Jangan lupa chown jadi named:named.

EDIT FILE NAMED.CONF
Trik penting disini, Jika network anda punya koneksi tetap ke Internet, forwarding, root hints dan caching semuanya aktif. Jika pakai dial-up, saat tersambung forwarding dan caching aktif, saat putus semua harus tidak aktif.

Dari setting sebelumnya, hanya perlu tambah setting untuk forwarding di options, dan satu zone root untuk caching maupun root-hints. Edit saja pakai vim (biar kelihatan syntax highlight-nya).

options {
    directory "/var/named";
    listen-on {10.0.0.5; };        // sesuai IP server ini
    forwarders {123.123.123.123;}; // sesuai IP DNS provider
    //forward first;                 // kalau koneksi statik
    forward only;                  // kalau koneksi dial-up
    query-source address * port 53; // supaya bisa lewat firewall
};

// Root HINTS (sekaligus chaching)
zone "." IN {
    type hint;
    file "root.hints";
};

// Zone intranet.
// Kalau anda tidak perlu nama domain intranet,
// buang saja dua blok ini
zone "vnet" {
    type master;
    file "vnet.zone";
    allow-update { none; };
};
zone "0.10.in-addr.arpa" IN {
    type master;
    file "10.addr";
    allow-update { none; };
};

RELOAD
Wohoo selesai. Tinggal reload. Jadi dari awal, total perintah yang kita perlu adalah:

root@papua# cd /var/named
root@papua# wget ftp://dns.vrx.net/pub/db.root
root@papua# cp db.root root.hints
root@papua# chown named:named root.hints
root@papua# vi /etc/named.conf
root@papua# rndc reload

Cuma enam jurus :) Gampang kan ???TESTING
Coba saja dari client. Pastikan DNS-nya sudah di set ke server.

tux@jawa$ nslookup -sil papua.vnet
tux@jawa$ ping papua.vnet
tux@jawa$ nslookup -sil www.yahoo.com
tux@jawa$ ping www.yahoo.com

Mestinya semua akan terjawab.BATASAN

Setting ini hanya untuk topologi Intranet/Internet. Jalan tapi tidak aman untuk Intranet/Internet dengan server Publik. Sementara itu sama sekali tidak mendukung Ektranet.

Jika anda pakai dial-up, saat terputus anda akan mengalami:

  1. nslookup dapat nama domain (dari caching), tapi anda tidak bisa ping (kan terputus).
  2. nslookup tidak jawab nama domain (tidak ada di caching), mungkin pakai delay yang lama.

Kondisi yang sempurna, kalau putus DNS server langsung bisa bilang kalau nama domain tidak dikenal (tanpa delay). Solusi ini perlu trik yang rada njlimet. Silahkan cari di Internet :) LIHAT JUGA

Copyleft : Kocil, 2003
License : GNU FDL
Tested on : Redhat 9.0, Bind 9
Written on: Vector Linux 4.0, Bluefish 0.11


Internet Sharing : IP Masquerading

July 28, 2006

Kalau gateway anda sudah siap dengan dua interface, tinggal pasang IP Masquerading dan voila … Internet Sharing anda jalan.

IPTABLES

IPTABLES itu pengatur komunikasi TCP/IP di Linux kernel 2.4 ke atas. IPTABLES jalan bersama kernel. Kita mengatur kerja IPTABLES dengan memberi rules (hukum). Nah untuk ini kita bisa pakai a.l:

  1. Script manual.
  2. Konfigurator high level seperti guarddog (KDE), lokkit (Redhat), portsentry (VL) dll.

Perhatikan bahwa semua cara tersebut cuma mengirim hukum ke si IPTABLES. Jadi kalau anda pakai beberapa cara, tentu saja hukum-hukumnya akan campur aduk. Makanya lebih baik hanya pakai salah satu cara. Di sini kita akan coba cara skrip manual yang generik (kapan ya si Kocil mau pakai cara GUI ?).PERSIAPAN DI REDHAT

Sistem firewall di Redhat punya lokkit dan service iptables. Buat latihan ini, matikan saja semuanya !

root@gateway # lookkit --disabled
root@gateway # service iptables stop
root@gateway # chkconfig iptables off

Nanti kalau mau menghidupkan lagi ..

root@gateway # lookkit --high
root@gateway # chkconfig iptables on
root@gateway # service iptables start

PERSIAPAN DI VL

Jalankan vasm, pilih menu SRVMENU, lalu matikan portsentry.

IPTABLES GENERIK

Nah, untuk membuat skrip manual sederhana, edit file /etc/rc.d/rc.local. Isinya cukup:

#!/bin/sh
# Setting IPTABLES paling sederhana untuk masquerading
######################################################

# Konstanta
IPT="/sbin/iptables"
LOAD="/sbin/modprobe" 

# Interface
# Kalau pakai modem, ganti RED=ppp0
RED=eth1
GREEN=eth0
RED_IP=10.0.0.15
GREEN_NET=192.168.0.0/24

#--------------------------------
# Inisialisasi IPTABLES
$LOAD ip_tables
$LOAD iptable_filter
$LOAD iptable_nat
$LOAD ip_conntrack
$LOAD ip_conntrack_ftp
$LOAD ip_nat_ftp
$LOAD ip_conntrack_irc
$LOAD ip_nat_irc 

#--------------------------------
# Kosongkan rumus-rumus IPTABLES
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X 

#--------------------------------
# Rumus default
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT 

#--------------------------------
# Rumus masquerading, IP statik
$IPT -t nat -A POSTROUTING -o $RED -j SNAT --to-source $RED_IP

# Rumus masquerading, lebih komplit
$IPT -t nat -A POSTROUTING -s $GREEN_NET -o $RED -j SNAT --to-source $RED_IP

# Kalau RED anda IP dinamik (ppp0), gunakan
# $IPT -t nat -A POSTROUTING -o $RED -j MASQUERADE

#--------------------------------
# Rumus forward, hanya dari dalam atau luar related
$IPT -A FORWARD -i $GREEN -o $RED -j ACCEPT
$IPT -A FORWARD -i $RED -o $GREEN -m state --state ESTABLISHED,RELATED -j ACCEPT 

#--------------------------------
# Rumus INPUT, hanya terima dari dalam atau luar yang related
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $GREEN -j ACCEPT
$IPT -A INPUT -i $RED -m state --state ESTABLISHED,RELATED -j ACCEPT

#--------------------------------
# Hidupkan forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward 

###############################################################

Nah, tinggal jalankan skrip tersebut atau reboot komputer anda.

root@gateway # chmod 700 /etc/rc.d/rc.local
root@gateway # /etc/rc.d/rc.local

TEST DARI CLIENT

Pastikan network client anda sudah benar,

IP=192,168.0.x
Netmask=255.255.255.0
Gateway=192.168.0.1
DNS= DNS si ISP

Coba dari client …

# Ping sisi internal gateway.
# Kalau gagal, koneksi client ke gateway tidak beres
# atau network sisi internal gateway belum benar
tux@client$ ping 192.168.0.1

# Ping sisi eksternal gateway.
# Kalau gagal, network sisi eksternal gateway belum benar
tux@client$ ping 10.0.0.15

# Ping gateway si ISP
# Kalau gagal, masquerading belum benar
tux@client$ ping 10.0.0.1

Copyleft : Kocil, 2003
License : GNU FDL
Posted to: www.benpinter.net, 6 Dec 2003.
Testbed : Redhat 9.0, Vector Linux 4.0
Writepad : Bluefish


Internet Sharing : Topologi

July 28, 2006

JENIS-JENIS KONEKSI INTERNET

Sebelum mulai, langkah pertama tentu saja memahami koneksi Internet anda. Secara umum ada 4 karakteristik koneksi internet.

  • Koneksi fisik, misalnya ethernet, fiber-optik, modem, ADSL, wave-LAN, satelit, dan masih banyak lagi. Dari segi konfigurasi, koneksi ini cukup dilihat sebagai:
    1. Point to point: koneksi dari ISP harus masuk langsung ke SATU komputer, router atau gateway.
    2. Multipoint: koneksi dari ISP masuk dulu ke konverter/hub ethernet. Dari hub anda bisa tarik kabel ke BEBERAPA komputer.
  • Koneksi logikal. Secara gampang, subnet adalah kelas IP yang diberi ISP buat anda. Ada tiga kemungkinan:
    1. Node: Anda hanya diberi 1 IP, bisa langsung dipakai oleh satu komputer.
    2. Subnet: Anda diberi beberapa IP yang bisa langsung dipakai oleh beberapa komputer. Walau terpisah, secara logikal network anda masih satu segment dengan network ISP sehingga netmask anda ikut netmask ISP. Misalnya, anda diberi 4 IP, tapi netmask = 255.255.255.0 (buat 256 node).
    3. Segment: Anda diberi 1 IP koneksi, dan 1 (sub) segment IP. Segment anda punya netmask sendiri, misal sub segment 16 IP netmask 255.255.255.224, atau full segment kelas C 256 IP netmask 255.255.255.0. Koneksi ini harus masuk dulu ke router/gateway sebelum disebar ke beberapa komputer.

    Perhatikan bahwa koneksi logikal node dan segment biasanya pakai koneksi fisik point to point. Kalau pakai koneksi multipoint, bisa sekali tapi agak mubzir. Koneksi fisik multipoint afdol-nya berjodoh dengan koneksi logikal subnet.

  • IP external/internal. IP eksternal adalah IP yang sah dipakai untuk berkomunikasi di jaringan Internet sedunia. Sementara itu IP internal hanya boleh dipakai di Intranet. Ada tiga segment IP internal:
    1. 10.x.y.z
    2. 172.16-31.y.z
    3. 192.168.0-255.z

    Kalau tidak masuk kelompok itu, IP anda adalah eksternal. ISP yang bonafid seharusnya memberi IP eksternal. Tapi ISP yang murah meriah hanya akan memberi anda IP internal. Koneksi IP internal hanya bisa buat browsing, downloading atau chatting. Tidak bisa buat server atau main game.

  • IP dinamik/statik. Jika pakai dinamik, IP komputer anda akan diberi oleh ISP melalui DHCP, dan secara periodik akan berubah. Sebaliknya IP statik bersifat tetap, anda isikan saat mengkonfigurasi network. IP dinamik biasanya hanya untuk koneksi satu node, dial-up point-to-point.

INTERNET SHARING

Internet sharing adalah teknik untuk menambah komputer lebih banyak dari IP yang diberi ISP supaya yang pakai bisa lebih banyak. Anda cukup pasang satu gateway yang pakai satu IP dari ISP, lalu disambung ke intranet yang berisi banyak client. Semua client akan bisa akses ke Internet. Ekonomis kan ? Gambar-gambar berikut melukiskan topologi yang umum.

  • Sharing Internet satu node. Pada model ini koneksi dari ISP langsung masuk ke gateway. Koneksi ini akan memakai satu IP yang diberi oleh ISP. Dari gateway koneksi ini disebar melalui hub ke beberapa komputer client. Tiap client memakai IP internal yang anda desain sendiri.
  • Sharing Internet subnet. Kalau anda punya subnet, ambil salah satu IP dari ISP masukkan ke gateway. Dari gateway koneksi ini disebar ke beberapa komputer client di intranet pakai IP internal. Sisa IP dari ISP bisa ada pakai buat server, atau client external. Client external bisa bebas buat main game multiplayer di Internet. Client internal terbatas, tidak semua game bisa, dan perlu trik di gateway.
  • Sharing Internet segment bertumpuk. Jika anda punya segment eksternal sendiri, ada dua pilihan topologi untuk menambah segment intranet. Yang pertama model bertumpuk. Koneksi ISP masuk ke router, lalu disebar ke ekstranet yang pakai segment IP pemberian ISP. Salah satu IP dari ISP ini lalu dipakai buat gateway yang akan menyebar koneksi ke client iintranet, pakai IP internal anda sendiri.
  • Sharing Internet segment bercagak. Model kedua, koneksi ISP langsung masuk ke gateway. Dari gateway tarik dua kabel. Satu ke segment ekstranet, lainnya ke segment intranet. Model ini lebih hemat dibanding model bertumpuk, namum setting gatewaynya akan lebih ruwet.

PASANG GATEWAY

Anda lihat, beda koneksi akan membuat berbagai kembangan pada topologi yang bikin pusing. Namun lepas dari itu, pasang gateway tahap-tahapnya generik sebagai berikut:

  • Sambung koneksi ISP ke gateway, konfigurasi networknya pakai IP dari ISP.
  • Tarik kabel ethernet dari hub intranet ke gateway, konfigurasi networknya pakai IP internal pilihan anda sendiri.
  • Tarik koneksi dari hub ke beberapa komputer client intranet. Masing-masing client dikonfigurasi networknya pakai IP internal.
  • Kembali ke gateway, konfigurasi IP-masquerading di gateway.
  • Optional, di gateway anda bisa pasang DHCP server, DNS caching, filter, dan proxy server.

Dari lima pekerjaan itu, saya kira hanya dua terakhir yang tidak awam. Kita akan bahas pada artikel-artikel selanjutnya. Copyleft : Kocil, 2003
License : GNU FDL
Posted to: www.benpinter.net, 4 Dec 2003.


Internet Sharing di Linux

July 28, 2006

Duh, banyak sekali yang nanya-nanya cara internet sharing pakai Suse, Mandrake, Fedora, dll,dll. Ini cara sapu jagad yang pasti jalan di semua Linux.Level: wannabees

Singkat saja ya, pasang Linux anda jadi gateway

{INTERNET}-----------[LINUX]----------------{LAN}

Lalu di Linux itu, cari file namanya rc.local (biasanya di /etc/rc.d/rc.local atau /etc/init.d/rc.local) lalu tambahkan 6 baris berikut (tidak termasuk comment)

# Ganti device pakai sambungan Internet: ppp0, eth0 atau eth1
DEVICE=ppp0

# Ini jalur INTERNAL ke INTERNET
iptables -A FORWARD -o $DEVICE -i ! $DEVICE -j ACCEPT

# In jalur balik dari INTERNET
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -f  -j ACCEPT

# Ini rahasianya internet sharing
iptables -t nat -A POSTROUTING -o $DEVICE -j MASQUERADE

# dan ini pembuka gateway-nya.
echo "1" > /proc/sys/net/ipv4/ip_forward

Kalau sudah, reboot si Linux, hidupkan modemnya (kalau pakai). Terus semua komputer di LAN, diset supaya GETEWAY=IP-DALAM nya si Linux. Sementara itu DNS masih tetap DNS dari ISP. Met nyoba.


Trouble Shooting TCP/IP

July 28, 2006

Misalkan komputer Linux anda mestinya tersambung ke network, tapi kok tidak jalan. Bagaimana mencari tahu salahnya, sekaligus membetulkan ? Level: Wannabee

Pertama, bayangkan bahwa kalau anda kirim paket network, urut-urutan jalannya adalah sebagai berikut:

  1. Aplikasi
  2. Protocol TCP/IP
  3. Driver Kernal
  4. Card network
  5. Kabel network
  6. Komputer lain (gateway)
  7. Internet

Secara singkat, algoritma trouble shooting adalah sbb:

  1. TEST DEVICE. Kalau benar loncat ke TEST TCP/IP. Kalau salah SET DEVICE lalu coba lagi. Kalau masih salah juga, periksa CARD dan DRIVER kernel Linux anda.
  2. TEST TCP/IP. Kalau benar loncat ke TEST PING, kalau salah ke SET TCP/IP lalu coba lagi.
  3. TEST PING-GATEWAY. Kalau benar loncat ke TEST PING, kalau salah PERIKSA KABEL.
  4. TEST PING-INTERNET. Kalau benar ya sudah, selesai. Kalau salah, set routing lalu coba lagi. Kalau masih salah juga, tamat riwayat dah. Sambungan Internet anda pasti sedang putus.

Sekarang detailnya. Untuk trouble shooting kita pakai CLI (command line interface) saja. Jadi luncurkan terminal dan su jadi root, atau login di console sebagai root.TEST DEVICE

Pertama, coba test device network anda memang sudah ada. Caranya …

root@engrob4:# cat /proc/net/dev
Inter-|   Receive           |  Transmit
 face | (dipotong biar tidak kepanjangan)
    lo:   83505     .............
  eth0: 650720962 ........

Yang penting di sini, lihat kalau sudah ada baris eth0:. Kalau ada, artinya device eth0 anda sudah UP. Silahkan lanjut ke TEST TCP/IP. Kalau belum, siap-siap kerja berat :) Agar device eth0 UP, Linux anda mesti memuat driver yang sesuai dengan network card anda. Biasanya, hal ini otomatis di autodetect oleh distro anda. Di Vector Linux, coba:

root:# vlautosetup

Kalau tidak bisa autodetect, cilaka deh. Coba cara manual, edit file /etc/modules.conf. Anda mesti tambah baris seperti ini:

## Untuk ethernet card Intel Express 100
alias eth0 e100
## Ini buat NE200 compatible
# alias eth0 ne2k-pci
## Ini buat realtek
# alias eth0 8139too

Secara teknis, baris itu memberi tahu untuk memuat driver yang tepat bagi device eth0. Jadi … ya anda mesti tahu benar apa tipe network card anda, dan apa driver yang diperlukan. Driver yang disediakan kernal anda bisa dilihat di

## ganti versi sesuai kernel anda
root:# ls /lib/modules/2.4.26/kernel/drivers/net/

Duh, sorry kalau terlalu low level. Habis mau bagaimana lagi. Jadi … berdoa saja supaya autodetect-nya jalan ;-) Usaha terakhir, anda bisa coba ganti network card (barangkali rusak) atau kompile ulang kernal (barangkali driver belum ada).

TEST PROTOCOL

Ok, asumsi device sudah UP. Mari test apakah protokol TCP/IP anda sudah jalan

root:# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:A0:C9:5F:1E:DF
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1963997 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1883860 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:650565316 (620.4 Mb)  TX bytes:645290505 (615.3 Mb)
          Interrupt:5 Base address:0xd800 Memory:e0100000-e0100038 

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:756 errors:0 dropped:0 overruns:0 frame:0
          TX packets:756 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:83505 (81.5 Kb)  TX bytes:83505 (81.5 Kb)

Lihat kalau eth0 sudah ada dan benar IP-nya. Kalau iya, anda bisa langsung loncat ke TEST PING.Kalau belum seperti itu, anda perlu set ulang TCP/IP. Di Slackware atau Vector Linux, jalankan ‘netconfig’, atau edit file /etc/rc.d/rc.inet1. Distro lain pasti ada juga menunya, coba dicari. Kalau nggak ketemu, ini cara klasik.

## ganti 10.0.0.100 dan 255.255.255.0 sesuai network anda
root:# ifconfig eth0 10.0.0.100 netmask 255.255.255.0 up

## Coba test lagi
root:# ifconfig eth0

Mestinya network anda akan jalan. Kalau sampai nggak jalan, kernel anda tidak support TCP/IP. Rasanya nggak mungkin deh.TEST PING GATEWAY

Sampai tahap ini, network internal di komputer anda sudah beres. Kita akan coba koneksi keluarnya. Untuk itu anda harus tahu alamat IP gateway di network anda.

## ganti 10.0.0.254 dengan alamat gateway anda
root:# ping -c 3 10.0.0.254
PING 10.0.0.254 (84) bytes of data.
64 bytes from 10.0.0.254: icmp_seq=1 ttl=255 time=4.61 ms
64 bytes from 10.0.0.254: icmp_seq=2 ttl=255 time=1.10 ms
64 bytes from 10.0.0.254: icmp_seq=3 ttl=255 time=1.05 ms

--- 110.0.0.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2023ms
rtt min/avg/max/mdev = 1.051/2.255/4.614/1.668 ms

Kalau keluarannya seperti di atas, lega. Itu artinya koneksi keluar beres. Kalau sampai timeout tidak ada balasan, coba periksa kabel dan hub ethernet anda. Atau barangkali juga si gateway-nya sedang down.TEST PING INTERNET

Nah, sekarang coba ping salah satu komputer di Internet. Biasanya, yang aman buat di-ping adalah DNS server si ISP (Internet service provider).

## Ganti 123.123.123.123 dengan alamat IP Internet yang anda tahu
root:# ping 123.123.123.123

Kalau tidak terbalas, coba lihat tabel routing. Mestinya mirip-mirip seperti ini

root:# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.0.0.254   0.0.0.0         UG    0      0        0 eth0

Perhatikan baris terakhir, destination 0.0.0.0 artinya ke semua network, dan kolom gateway-nya harus seauai dengan IP gateway anda. Konfigurator seperti netconfig mestinya sudah men-set ini buat anda. Kalau belum, coba pakai cara manual:

root:# route add default gw 10.0.0.254

Kalau default gateway sudah betul tapi ping internet masih belum bisa juga, ada beberapa kemungkinan: komputer anda di blok oleh si-gateway, setting firewall digateway salah, koneksi gateway ke ISP putus, dll. Buat tahu putusnya dimana, coba

root:# traceroute 123.123.123.123

Tapi biar sudah tahu, biasanya anda tidak bisa berbuat apa-apa, selain menunggu koneksi pulih kembali.Segitu dulu. Kesempatan depan kita bahas trouble shooting DNS.

Copyleft : Kocil, 2004
License : GNU FDL
Testbed : Vector Linux
Writepad : Vector Linux, Bluefish


Mengenal Web 2.0

July 28, 2006

Web 2.0 adalah buzzword terbaru di dunia internet. Berbagai inovasi dan fitur-fitur baru yang muncul di dunia web membawa suatu pandangan baru tentang jenis situs web atau aplikasi web yang disebut web 2.0.

Apakah Anda sudah mengetahuinya kalau situs-situs kesayangan Anda mungkin sudah merupakan wujud dari tipe web 2.0.

Istilah web 2.0 disebut-sebut oleh Dale Dougherty dari O’Reilly Media yang melakukan brainstorming dengan Craig Cline dari Media Live untuk menghasilkan ide konferensi di mana mereka menjadi host. Akhirnya pada bukan Oktober 2004 O’Reilly Media, Battele dan MediaLive mlakukan konferensi web 2.0 pertama dan kedua pada bulan Oktober 2005.

Sebelum muncul istilah web 2.0 yang sering digunakan adalah istilah semantic web.

Ada beberapa karakteristik teknis maupun umum yang menggambarkan suatu situs merupakan situs tipe web 2.0

Secara teknis atau teknologi:
- Memanfaatkan CSS, valid XHTML, dan Microformat
- MS ClickOnce
- Teknik Rich Application seperti Ajax
- Java Web Start
- Flex/Lazlo/Flash
- XUL
- Syndikasi data dengan RSS/Atom
- Agregasi dari RSS/Atom
- URL yang bersih dan berarti
- Mendukung posting ke weblog
- Menggunakan API REST (Representational State Transfer) atau XML Web Service
- aspek jaringan sosial

Umum:
- Mudah untuk memasukkan data atau mengambil data dari sistem
- Pengguna memiliki datanya sendiri pada situs
- Berbasis web murni

Bila dibandingkan antara web 1.0 dengan web 2.0 secara contoh:

Web 1.0 Web 2.0
DoubleClick -> Google AdSense
Ofoto -> Flickr
Akamai -> BitTorrent
mp3.com -> Napster
Britannica Online -> Wikipedia
Personal Websites -> Blogging
evite -> Upcoming.org dan EVDB
spekulasi nama domain -> Optimasi Search Engine
page view -> Cost per click
screen scraping -> Web services
publishing -> Participation
content management system -> Wikis
direktori (taksonomi) -> Tagging(“folksonomy”)
stickiness -> Syndication

Dapat dikatakan bahwa web 2.0 menyajikan suatu layanan web yang berpusat pada user di mana user dimudahkan untuk menggunakan berbagai layanan yang ada. Misalkan dalam hal user interface suatu situs web yang menggunakan teknologi flex (aplikasi rich internet berbasis flash dari macromedia yang sekarang adobe), lazlo(platform aplikasi flash open source) atau menggunakan ajax secara intensif seperti gmail atau google map maka situs itu bisa dikatakan merupakan situs tipe web 2.0.
Anda bisa mencoba aplikasi-aplikasi ajax atau Rich Internet Application berbasis flash pada situs-situs berikut:
http://www.gmail.com
http://www.lazlomail.com
http://map.google.com
http://mail.yahoo.com (Anda harus daftar dulu di link yang ada pada What’s New untuk mencoba versi user interface terbarunya yang sudah memanfaatkan Ajax)

Perlu anda ketahui bahwa Ajax adalah kependekan dari Asynchronous Java Script yang memungkinkan aplikasi web yang lebih interaktif dan kaya fitur sehingga menyerupai kemampuan aplikasi desktop.

Lalu pemanfaatan tag untuk pengkategorian data yang disubmit oleh user sendiri sehingga user lain dapat mencari atau menemukannya menggunakan tag-tag juga merupakan salah satu karateristik jenis web 2.0.
Contoh situs yang memanfaatkan tag-tag untuk contentnya adalah:
http://del.icio.us
http://wwww.technorati.com
http://www.digg.com
http://www.standpoint.com
http://www.askeet.com

Desentralisasi seperti Napster atau pun Bittorrent juga merupakan bagian dari teknologi web 2.0 karena tidak ada server terpusat yang melayani berbagai kebutuhan pengguna tetapi mendayagunakan komputer jaringan pengguna yang ada di dalamnya.

Publikasi artikel, berita yang sebelumnya didominasi situs resmi seperti cnn.com, news.com, atau detik.com, kompas.com untuk Indonesia, sekarang sudah mulai disaingi oleh publikasi non resmi dari perorangan atau lembaga yang tidak ada hubungannya dengan publikasi data media seperti biasanya melalui blog sehingga kadangkala informasi dari blog bisa lebih cepat atau lengkap.
Aplikasi blog ini juga merupakan bagian dari web 2.0.

Dalam aplikasi blog ini juga biasanya disediakan fasilitas sindikasi di mana kita dapat menampilkan judul berita dari sumber lain sehingga kita dapat menampilkan judul content dalam berbagai blog menggunakan aplikasi yang bisa membaca sindikasi itu, baik lewat browser web maupun aplikasi desktop. Ketersediaan sindikasi ini atau pemanfaatan sindikasi untuk menampilkan berita juga merupakan bagian dari teknologi web 2.0.

Pemanfaatan web service serta REST sebagai teknologi pendukung merupakan salah satu karakteristik web 2.0 di mana kita dapat membangun aplikasi web tanpa menyediakan atau membuat fungsi-fungsi pendukung aplikasi sendiri tetapi memanfaatkan fungsi-fungsi aplikasi yang disediakan dari web lain melalui kedua teknologi ini. Jadi misalkan anda ingin menyediakan search engine di situs Anda, maka Anda bisa membuat aplikasi yang memanggil fungsi-fungsi layanan search dari Google atau Yahoo menggunakan REST/Web Service sehingga seakan-akan aplikasi Anda dapat menyediakan layanan ini tanpa membuat fungsi search sendiri.

Pemanfaatan partisipasi user secara menyeluruh juga merupakan bagian karakteristik dari teknologi web 2.0, contohnya adalah Wikipedia di mana content dari wikipedia ini dibuat oleh banyak sekali pengunjung yang langsung dapat mengedit isi dari wikipedia sehingga wikipedia menjadi ensiklopedia dinamis yang terus bertambah isinya setiap saat sehingga dapat mengalahkan kelengkapan isi ensiklopedia lain.

Ebay, Amazon maupun Google juga merupakan situs-situs yang mempelopori web 2.0 di mana mereka memanfaatkan respon user untuk content atau layanan yang mereka sediakan.
PageRank dari Google memanfaatkan klik dari user pada hasil pencarian untuk memberikan penilaian ketepatan hasil pencarian, Ebay memanfaatkan pengguna untuk layanan jual beli melalui internet di mana penjual dapat dinilai oleh pembeli-pembelinya secara online, sedangkan Amazon merupakan situs e-commere yang memanfaatkan respons user untuk menghasilkan pencarian produk yang lebih sesuai serta memberikan informasi produk apa adanya melalui fasilitas review.

Dari berbagai uraian ini, semoga Anda dapat mengerti arti web 2.0 dan membedakan suatu situs adalah situs web 2.0 atau tidak.

Link untuk mengetahui web 2.0 lebih lanjut:
http://www.wikipedia.com/Web2.0
http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html


Penambahan kemampuan dan fasilitas baru pada MySQL 4 dan 4.1

July 28, 2006

Artikel tentang peningkatan fasilitas dan kemampuan database server open source MySQL pada versi 4 dan 4.1

MySQL dikenal cepat tetapi tidak dikenal sebagai database server yang lengkap fasilitasnya. MySQL kalah dibandingkan dengan PostgreSQL dalam kelengkapan fasilitas, tetapi unggul dalam kecepatan sehingga MySQL sangat disukai oleh para web developer yang memerlukan pemrosesan database yang cepat. Pada versi 4 telah ditambahkan fasilitas dan kemampuan baru, begitu juga pada versi selanjutnya. Dan peningkatan pada versi 5 mampu mengubah pandangan bahwa MySQL tidak canggih karena pada MySQL 5 terdapat penambahan fasilitas yang cukup berarti seperti Stored Procedure sehingga bisa dikatakan bahwa MySQL 5 akan menjadi produk database server yang tangguh dan lengkap.

Artikel ini membahas perkembangan fasilitas baru pada MySQL 4 dan 4.1.

Saat penulisan artikel ini, MySQL telah memiliki versi 4.0.16 yang bisa dikatakan merupakan versi yang telah matang dan stabil di mana secara resmi pada Maret 2003 diumumkan bahwa versi 4.0.12 adalah versi produksi yang stabil. Sedangkan versi 4.1 telah mencapai versi alpha 4.1.1 yang berarti Anda dapat menggunakannya pada development software baru karena versi ini telah mendekati versi produksi walau mungkin masih terdapat sejumlah bug pada fasilitas tertentu.

Untuk versi 3, MySQL telah mencapai versi 3.23.58 yang dapat diandalkan karena kestabilan dan kecepatan yang telah terbukti. Tetapi karena keterbatasan fasilitas yang ada pada versi 3, banyak developer lebih menyukai untuk bermigrasi ke versi berikutnya.

Pengembangan dan fasilitas yang ditambahkan pada MySQL versi 4 adalah:

  • Peningkatan kecepatan
    MySQL 4 memiliki cache query yang dapat meningkatkan kecepatan pada aplikasi yang melakukan kueri berulang-ulang. Selain itu juga terdapat peningkatan kecepatan pada INSERT dalam jumlah besar, pencarian pada index yang terpack, pembuatan index FULLTEXT, dan COUNT(DISTINCT).
  • Ada versi Embedded MySQL Server
  • InnoDB storage engine sebagai standar
    InnoDB merupakan engine MySQL yang diperlukan untuk transaksi ACID, foreign key dengan cascading UPDATE dan DELETE, dan row level locking.
  • Fungsi baru
    Properti FULLTEXT memberikan fasilitas indexing FULLTEXT untuk data teks dalam jumlah besar
  • Standards compliance, portabilitas, dan migrasi
    • Fasilitas untuk memudahkan migrasi dari sistem database lain ke MySQL Server, termasuk TRUNCATE TABLE (seperti Oracle)
    • Dukungan terhadap perintah SQL UNION
    • Internasionalisasi set karakter
    • MySQL berjalan native pada Novell Netware 6
  • Peningkatan usabilitas
    • Parameter mysqld dapat diset tanpa perlu shutdown server.
    • Multiple-table DELETE dan UPDATE
    • Dukungan pada MyISAM untuk symbolic linking pada level tabel
      fungsi SQL_CALC_FOUND_ROWS and FOUND_ROWS() untuk mendapatkan jumlah baris dari kueri SELECT yang mengikutkan klausa LIMIT yang akan dikembalikan tanpa mengikutkan klausa tersebut

Fasilitas baru pada versi 4.1

  • Dukungan subkueri dan tabel turunan
    • Subkueri adalah perintah SELECT yang bertingkat (terletak pada perintah SQL lain).
    • Tabel turunan adalah (view yang tidak bernama) subkueri pada klausa FORM dari perintah SQL lain.
  • Peningkatan kecepatan
  • Fungsi baru
    • Perintah CREATE TABLE table_name2 LIKE table_name1 mampu membuat tabel baru dengan struktur sama pada tabel yang sudah ada
    • Dukungan untuk OpenGIS spatial types (data geografikal)
    • Replikasi dapat dilakukan pada koneksi SSL
  • Standards compliance, portabilitas, dan migrasi
    • Protokol client/server baru menambahkan kemampuan untuk menyampaikan banyak peringatan ke client, bukan hanya satu result saja. SHOW WARNINGS menampilkan peringatan untuk perintah terakhir.
  • Internasionalisasi
    • Set karakter dapat didefinisikan per kolom, tabel dan database
  • Peningkatan usabilitas
    • Perintah HELP berbasis server untuk mendapatkan informasi bantuan dari perintah SQL. Informasi ini dapat diakses melalui perintah SQL dan client juga dapat mendapatkan informasi ini.
    • Pada protokol baru ini, banyak perintah/statement dapat disampaikan dalam satu call/pemanggilan
    • Client/server protocol baru juga mendukung kemampuan mendapatkan banyak result set sekaligus.
    • Perintah baru INSERT … ON DUPLICATE KEY UPDATE … syntax telah diimplementasikan. Ini mengizinkan Anda melakukan UPDATE baris yang sudah ada bila INSERT menyebabkan duplikasi pada PRIMARY atau UNIQUE key (index).
    • Fungsi aggregate baru, GROUP_CONCAT() yang menambahkan kemampuan penggabungan kolom dari group baris ke dalam satu hasil string.

Sumber:

MySQL
Rencana kemampuan dan fasilitas MySQL 5

Kemampuan dan fasilitas baru MySQL 4.1
Fasilitas MySQL 4


Tutorial Mengolah Data Tanggal dan Waktu di MySql

July 28, 2006

Setelah Anda menggunakan MySQL tentu sulit untuk meninggalkan database yang “cuepat” dan gratis ini. Memang MySQL sangat cepat dalam melakukan kueri sehingga menjadi database yang paling populer dan sesuai untuk web development. Pada saat pertama kali memasuki dunia MySQL sebagai newbie, Anda mungkin jarang berurusan dengan si “date” dan si “time” tetapi seiring dengan tuntutan pekerjaan atau peningkatan pengetahuan tentang MySQL tentu Anda akan berurusan dengan si “date” dan si “time”.

Artikel ini akan mencoba membantu Anda berkenalan dan bergaul atau “menggauli” si Date dan si Time ini sehingga Anda memiliki hubungan yang lebih intim dengan mereka. Dengan memiliki pengetahuan tentang tipe data Date, Time serta fungsi Date dan Time yang telah disediakan oleh MySQL maka pembuatan aplikasi yang terkait dengan Date dan Time akan lebih cepat dan efektif.

Penulis akan menyajikan dalam beberapa artikel bersambung di situs benpinter.net maupun milis benpinter di yahoogroups.com.

Versi MySQL yang penulis gunakan pada pembahasan ini adalah MySQL 3.23.33, tetapi jangan kuatir karena penulis percaya bahwa penanganan terhadap data tanggal dan waktu pada versi berikutnya hampir sebagian besar masih sama.

Pertama-tama, Anda perlu mengetahui bahwa ada empat tipe data di MySQL yang terkait dengan data tanggal dan waktu, yaitu:

DATETIME, DATE, TIMESTAMP, TIME, dan YEAR

Besar ukuran data dari tiap-tiap tipe data tersebut adalah:
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte

Sesuai sebutannya… DATE digunakan untuk menyimpan data tanggal saja, DATETIME menyimpan data tanggal dan waktu, TIMESTAMP dapat digunakan untuk menyimpan data tanggal dan waktu sesuai pengaturan jumlah kolom untuk TIMESTAMP, TIME untuk menyimpan waktu saja dan YEAR untuk menyimpan data tahun.

Range dan format dari masing-masing tipe data tersebut adalah:

DATE
Range atau kisaran data yang didukung adalah ‘1000-01-01′ sampai ‘9999-12-31′. MySQL menampilkan data tanggal dengan format ‘YYYY-MM-DD’ (tahun-bulan-tanggal) dan mengizinkan Anda mengisinya dengan data string maupun angka.

DATETIME menyimpan data dalam format ‘YYYY-MM-DD HH:MM:SS’ dan juga mengizinkan Anda mengisi data dengan string maupun angka.

TIMESTAMP[(M)]
TIMESTAMP memiliki kisaran data ‘1970-01-01 00:00:00′ sampai tahun 2037. TIMESTAMP dapat ditampilkan dalam format YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, atau format YYMMDD berdasar argumen M yang Anda tentukan. TIMESTAMP sangat berguna untuk menyimpan data operasi INSERT atau UPDATE karena akan diset sesuai tanggal dan waktu operasi terakhir bila Anda tidak memberinya nilai. Anda juga dapat menset pada tanggal dan waktu saat ini dengan memberinya nilai NULL. TIMESTAMP(8) atau TIMESTAMP(14) merupakan data angka sedangkan tipe data kolom TIMESTAMP(X) yang lain adalah string. TIMESTAMP di MySQL berbeda dengan TIMESTAMP di UNIX.

TIME
Untuk data waktu. Kisarannya adalah ‘-838:59:59′ sampai ‘838:59:59′. MySQL menampilkan nilai TIME dengan format ‘HH:MM:SS’ dan mengizinkan Anda mengisi nilai ke data kolom TIME menggunakan angka maupun string.

YEAR[(2|4)]
Untuk data tahun baik dengan format 2 digit maupun 4 digit (default). Nilai yang diizinkan adalah 1901-2155, bila menggunakan 4 digit format dan 1970-2069 bila menggunakan 2 digit format. MySQL menampilkan nilai YEAR dalam format YYYY dan mengizinkan Anda mengisinya dengan data string maupun numerik.

Ini adalah akhir artikel bagian pertama dari saya, dan nantikan lanjutan artikel ini di Benpinter.net atau milis benpinter di yahoogroups.com


Keunggulan Stored Procedure dibandingkan dengan adhoc query

July 28, 2006

Keunggulan penggunaan Stored Procedure dibandingkan adhoc query

Dokumen ini membahas keunggulan penggunaan stored procedure pada DBMS pada umumnya dan MS SQL Server 2k pada khususnya ditinjau dari berbagai aspek seperti kinerja, transparansi, keamanan, fleksibilitas terhadap perubahan proses bisnis, scalabilitas dan ekonomi.

• Kinerja

o Execution plan pada stored procedure sudah dibuat pada saat procedure itu dikompilasi jadi hanya terjadi 1 kali. Berbeda dengan adhoc query terutama dengan query tanpa parameter (tanpa simbol @ pada SQL Serverr). Query adhoc dikompilasi (dibuat parse tree dan query tree) secara realtime, terutama jika query tersebut tidak ada di procedure cache.

o Stored procedure dapat dipin(ditandai) di memori. Artinya sebuah sp dapat dipaksa untuk tetap berada di memori fisik meskipun dbms membutuhkan memori tambahan. Akibatnya operasi swaping in & swapping out sp dapat diminimalkan terutama untuk sp yang sering dipakai. Sebagai catatan dengan harga memori yang makin murah (relatif dalam US $) maka opsi pin ini semakin atraktif

o Query select pada SP dapat diatur menggunakan format tertentu sehingga index dapat digunakan untuk query.

o SP dapat digunakan untuk membatasi jumlah record yang dikirim ke client. Hal ini dapat mengurangi beban jaringan. Hal ini akan sangat mempercepat karena bottle neck utama di applikasi database terletak di jaringan.

o SP terletak di DBMS sehingga untuk proses yang membutuhkan data banyak, round trip untuk permintaan data sampai data itu diterima dapat ditiadakan.

• Transparansi dan skalabilitas
Transparansi ekivalen dengan information hiding di konsep pemograman OO.

o Mendukung ANSI model terhadap database. Ansi model adalah sebuah model database yang memodelkan penglihatan user terhadap database menjadi 3 komponen yaitu user view, logical view dan fisikal view. User view ekivalen dengan perintah select. Logical view ekivalen dengan ERD atau LDS (logical data structure) dan fisikal view ekivalen dengan implementasi tabel di database. Dengan adanya sp maka app user view dapat dibuat sesetabil mungkin meskipun tabel penyusunnya berubah. Perubahan terhadap applikasi client dapat dihindari pada kasus kasus di bawah ini :

 Partisi tabel baik secara vertikal , horisontal dan gabungan
Partisi adalah proses pembagian sebuah tabel yang sudah normal menjadi beberapa tabel yang normal. Tabel normal adalah tabel hasil normalisasi.
Misalkan kita punya tabel pelanggan (pelangganid, nama, alamat, kota, propinsi, tanggallahir, jeniskelamin,telepon).
Partisi vertikal ekivalen dengan select pelangganid,nama from pelanggan. Partisi horisontal ekivalen dengan select

* from pelanggan where kota=xxx.
Pertimbangan untuk melakukan partisi dilakukan dengan memperhatikan :

• Frekuensi akses (select) terhadap tabel
Jika user sering mengakses pelangganid,nama dan telepon maka sebaiknya tabel pelanggan dipartisi menjadi 2 yaitu pelanggan_part1 (pelangganid,nama,telepon) dan pelanggan_part2 (pelangganid, alamat, kota, propinsi, tanggallahir, jeniskelamin). Ukuran table pelanggan_part1 akan jauh lebih kecil dibanding dengan tabel pelanggan_part2 dan pelanggan sehingga proses query select akan lebih cepat. Untuk lebih jelasnya dapat dibaca di buku Database system concept karya henry korth bab 12 tentang perhitungan query cost.

• Lokasi user yang mengakses tabel
Misalkan database tersebar dimana user di kota x hanya bisa melihat data pelanggan kota x maka tabel dapat dipartisi secara horisontal

 Transformasi dari single server ke multi server (distributed database)
Sudah dijelaskan pada point transparasi horisontal

 Normalisasi dan denormalisasi tabel
Untuk meningkatkan kinerja atau membenahi struktur tabel maka proses normalisasi dan denormalisasi dapat dilakukan. Selama interface sp yang digunakan untuk mengakses tabel tidak berubah maka applikasi client tidak perlu berubah. Interface sp yang dimaksud adalah nama sp, jumlah parameter sp, urutan parameter dan tipe data parameter.

• Keamanan
o SP mencegah terjadinya SQL injeksion. SQL injeksion adalah sebuah aksi hacking yang dilakukan di applikasi client dengan cara memodifikasi perintah SQL yang ada di memori applikasi client. Untuk melakukan hal ini dapat digunakan progam seperti softice.

o Hak akses sp terhadap data di database bergantung pada hak akses pembuatnya bukan bergantung pada hak akses pengguna sp. Hal ini memungkinkan user applikasi untuk tidak diberi hak akses terhadap semua tabel yang ada namun diberi hak akses untuk menjalankan sp. Akibat penggunaan mekanisme ini adalah enforcement terhadap aktifitas user (select, inser, update, delete) tersentralisasi bahkan untuk applikasi seperti query analyzer tidak akan bisa digunakan untuk mengakses data secara tidak sah

o Penggunaan SP mendukung penggunaan application role. Application role adalah sebuah role di SQL server 2k dimana role ini tidak memiliki pengguna. Mekanisme ini merupakan mekanisme standard yang disarankan oleh Microsoft untuk membuat applikasi database berbasis SQL server 2k. Keunggulan penggunaan application role ini adalah dengan menggunakannya maka hanya app kita yang bisa mengakses database applikasi lain tidak bisa kecuali user memakai login yang berrole sysadmin.

o Perlindungan hak cipta. SP dapat dienkript sehingga proses tidak dapat dibajak orang dengan mudah

o Memungkinkan manual audit yang sangat baik. Manual audit didefinisikan sebagai audit dimana mekanisme pencatatan log dilakukan oleh applikasi bukan dbms. Memang manual audit dapat dilakukan tanpa penggunaan SP namun manual audit dapat dibypass misalkan dengan menggunakan query analyzer. Dengan SP dan fasilitas application role maka mekanisme manual audit dapat dienforce setiap saat.

• Fleksibilitas terhadap proses bisnis
o SP tersimpan di server. Modifikasi jadi mudah dilakukan dan dengan cepat

• Ekonomi
o SP menyediakan 1 pintu masuk untuk proses data entri. Applikasi client tinggal mengaksesnnya. SP dibuat 1 kali dan bisa diakses oleh applikasi client yang berbeda-beda. Efesien dan murah

Referensi :
• Database system concept karya henry korth
• MS SQL Server 2k BOL
• Microsoft SQL Server 2000 Unleashed, 2nd Edition
• Quest SQL Server XpertKnowledge
• Database security karya silvana castano
• Principles Of Distributed Database System