Thursday, September 28, 2006

Wget : Potensi yang Terabaikan

Wget : Potensi yang Terabaikan

Surfing di dunia maya atau dengan kata lain berinternet-ria sudah menjadi kehidupan sehari-hari sebagian orang. Rata-rata dari mereka melakukannya untuk refreshing atau bahkan untuk keperluan studi mereka. Browser yang sangat popular bagi mereka biasanya Netscape atau Internet Explorer, browser ini bagi mereka memungkinkan untuk browsing dengan interaktif. Tapi terkadang kita perlu juga mendownload sebuah situs, berikut dengan sub-direktori dan file-file yang ada di dalamnya. Untuk orang yang terbiasa memakai sistem operasi Windows, ada tools khusus untuk hal ini, yaitu Teleport atau Webzip. Tapi untuk sistem operasi Unix, ada tool dengan lisensi GPL (GNU Public License), yaitu wget. Mungkin sudah banyak para pembaca yang mengetahui tentang wget tapi banyak yang belum mengetahui bahwa sebenarnya ada ‘potensi’ besar yang belum kita manfaatkan. Wget memiliki beberapa kelebihan, di antaranya:

    Gratis. Seperti juga software dengan lisensi GPL lainnya, wget dapat didapatkan secara gratis.Non interaktif. Wget merupakan tool non interaktif, berarti anda bisa melakukan browsing tanpa perlu interaksi terus menerus dengan wget.

    Mirroring. Wget dapat melakukan mirror terhadap situs tertentu.

    Resume. Wget dapat melakukan resume download, sehingga sangat berguna untuk koneksi internet yang tidak stabil atau lambat.

    Dukungan ekstensi file. Dapat mendownload file-file jenis tertentu. Contoh file *.jpg.

Dan masih banyak lagi. Tapi dengan kelebihan-kelebihan inipun, wget sudah cukup powerful.Untuk menjalankannya anda perlu mengetikkan:

wget [OPTIONS] [URL]

dengan OPTIONS merupakan pilihan-pilihan yang bisa kita atur sesuai yang kita inginkan dan URL adalah lokasi file/situs yang ingin kita download. Seperti perintah-perintah pada Unix lainnya, anda bisa mencari manual online mengenai wget dengan mengetikkan ‘man wget‘ atau gunakan ‘wget -h‘ , anda bisa melihat detail mengenai wget lengkap dengan keterangan mengenai option-nya. Sekarang kita lihat contoh-contoh penggunaannya, dan akan lebih baik jika pembaca langsung mencobanya di komputer anda.

wget www.w3c.org

Anda akan mendapatkan output kira-kira seperti:

wget www.w3c.org
--11:25:19-- http://www.w3c.org:80/
=> `index.html'
Connecting to www.w3c.org:80... connected!
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.w3.org/ [following]
--11:25:42-- http://www.w3.org:80/
=> `index.html'
Connecting to www.w3.org:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 12,014 [text/html]

0K -> .......... . [100%]

11:26:00 (2.59 KB/s) - `index.html' saved [12014/12014]
    Tapi jika koneksinya lambat atau filenya besar ukurannya, kita coba yang ini:
wget -t 45 www.gnu.org

Ini akan mendownload dengan 45 kali try, atau kita juga bisa mengaturnya menjadi tak terhingga dengan:

wget -t inf www.opensource.org
    Untuk memudahkan, anda mungkin ingin mendownload di background:
wget www.linux.org &

Karakter & akan membuat wget bekerja di background, yang berarti setelah perintah tersebut, anda bisa keluar dari sistem.

    Sekarang untuk protokol ftp:
wget ftp://ftp.cdrom.com

wget seperti browser lain akan mengatur user dan password.Dan isi direktorinya akan disimpan dalam bentuk html, sehingga kita bisa melihatnya.

wget ftp://ftp.cdrom.com
--11:39:39-- ftp://ftp.cdrom.com:21/
=> `.listing'
Connecting to ftp.cdrom.com:21... connected!
Logging in as anonymous ... Logged in!
==> TYPE I ... done. ==> CWD not needed.
==> PORT ... done. ==> LIST ... done.

0K ->

11:40:02 (6.02 KB/s) - `.listing' saved [450]

Removed `.listing'.
Wrote HTML-ized index to `index.html.1' [908].
    Anda ingin melihat daftar URL dari sebuah file:
wget -i namafile

    Sekarang anda ingin membuat mirror dari situs teman anda:

wget -r www.ee.itb.ac.id

Atau mirror untuk layer pertama saja:

wget -r -l1 www.itb.ac.id
    Sekarang kita hanya ingin melihat informasi file-nya (header) saja tanpa mendownload situs tersebut:
wget -S www.sajadah.net
    Anda ingin display di layar disimpan di file tertentu:
wget -o coba.txt www.nurulfikri.com
    Sekarang, yang cukup menarik, jika anda ingin mendownload semua file gambar (jpg) di situs WWF untuk koleksi gambar anda. Tapi anda tidak bisa melakukannya dengan:
wget www.wwf.org/*.jpg

Ini tidak akan berguna sama sekali, kita harus gunakan:

wget -r -A.jpg www.wwf.org
    Sekarang anda ingin agar wget tidak mendownload file yang sudah ada di direktori lokal kita:
wget -nc www.internet.com

Atau justru sebaliknya anda ingin mengganti file di direktori lokal dengan yang baru:

wget -c www.linuxapps.com
    Sekarang anda ingin agar situs mirror anda tetap diupdate:
wget --mirror www.setia.cjb.net

atau menggunakan option -r dan -N (keduanya sama dengan –mirror) . Begitulah contoh-contoh penggunaan wget, masih banyak option-option lain yang dapat digunakan tetapi akan terlalu banyak jika semuanya diungkapkan disini.

Instalasi Apache, support PHP dan MYSQL --V2

Instalasi Apache, support PHP dan MYSQL

Tutorial kali ini saya akan coba jelaskan, bagaimana menginstall sebuah webserver. Webserver yang akan kita buat menggunakan sistem operasi FreeBSD, untuk basis unix lainnya, cara ini pun dapat juga di jalankan. Ada tiga bagian dalam Tutorial ini yaitu, instalasi Apache sebagai webservernya, PHP sebagai core languagenya dan MYSQL sebagai databasenya.

1. Instalasi Apache Webserver

  • Download Source Porgram di situs apache

#wget http://apache.the.net.id/httpd/httpd-2.0.54.tar.gz

  • Ekstraklah file source code tersebut

#tar -zxvf httpd-2.0.54.tar.gz

  • Setelah selesai di ekstrak, pindah ke direktori hasil ekstraksi source code tersebut

#cd httpd-2.0.54

  • Install program apache

#./configure –prefix=/usr/local/apache2 –enable-mods-shared=most

perintah di atas artinya, menginstall apache di direktori /usr/local/apache2, denga semua modul di install

#make

#make install

Tunggulah proses instalasi sampai selesai, jika tidak terjadi kesalahan, lanjutkan pada langkah di bawah.

  • Edit konfigurasi file apache

#ee /usr/local/apache2/conf/httpd.conf

cari baris di bawah ini dan rubah seperti berikut :

DirectoryIndex index.html index.html.var index.php //supaya support php

Tambahkan baris di bawah ini

AddType application/x-httpd-php .php //supaya support php

setelah selesai simpanlah file tersebut.

  • Jalankan Webserver

#/usr/local/apache2/bin/apachectl start

  • Test Webserver

Bukalah browser di client, kemudian anda buka alamat ip address dimana apache di installkan, atau jika sudah mempunyai domain, bukalah dengan nama domain. Jika bisa terbuka halaman test page dari Apache maka proses instalati telah berjalan dengan baik.

2. Instalasi MYSQL

Langkah kedua adalah menginstallkan MYSQL database server. Pada contoh di sini MYSQL yang digunakan adalah versi 4.0.24. Ok langsung ke pokok bahasan.

  • Download Source code MYSQL

#wget http://mysql.cbn.net.id/Downloads/MySQL-4.0/mysql-4.0.24.tar.gz

  • Ekstrak hasil download

#tar -zxvf mysql-4.0.24.tar.gz

  • Pindah ke direktori hasil ekstrak source code

#cd mysql-4.0.24

  • Installkan MYSQL

#./configure –prefix=/usr/local/mysql –localstatedir=/usr/local/mysql/data

–disable-maintainer-mode –with-mysqld-user=mysql –enable-large-files-without-debug

#make

#make install

  • Buatlah sebuah group dan user dengan nama mysql

#pw add group mysql

#pw add user mysql -g mysql

  • Installkan File Database Bawaan MYSQL

#./scripts/mysql_install_db

  • Rubah kepemilikan dari folder dibawah ini

#chown -R root:mysql /usr/local/mysql

#chown -R mysql:mysql /usr/local/mysql/data

  • Tambahkan sebuah file

# ee /etc/ld.so.conf

dengan isi sebagai berikut :

/usr/local/mysql/lib/mysql

  • Jalankan MYSQL

#/usr/local/mysql/bin/mysqld_safe –user=mysql &

  • Test MYSQL

#/usr/local/mysql/bin/mysql

jika sudah jalan, maka mysql akan terhubung.

3. Instalasi PHP

Langkah ke 3 instalasi PHP. Langsung aja deh.

  • Download Source Code di :

#wget http://id.php.net/distributions/php-4.3.11.tar.gz

  • Ekstrak hasil download

#tar -zxvf php-4.3.11.tar.gz

  • Pindah ke direktori hasil ekstraksi

#cd php-4.3.11

  • Installkan PHP

#./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/apxs

–with-mysql=/usr/local/mysql

#make

#make install

  • Kopi file konfigurasi bawaan dari php

#cp php.ini-recommended /usr/local/php/lib/php.ini

  • Editlah file tersebut dan lakukan sedikit perubahan seperti di bawah ini

#ee /usr/local/php/lib/php.ini

cari dan rubah baris di bawah ini menjadi seperti berikut :

doc_root= “/usr/local/apache2/htdocs/”

simpan file.

  • Test hasil instalasi

Untuk mencoba apakah PHP sudah di kenali oleh apache, restartlah apache webserver

#/usr/local/apache2/bin/apachectl restart

kemudian buat sebuah file, pada contoh ini dengan nama test.php di direktori /usr/local/apache2/htdocs

#ee /usr/local/apache2/htdocs/test.php

dengan isi sebagai berikut :

phpinfo();

?>

simpan file tersebut.

Bukalah situs untuk menchek apakah php sudah terpasang atau belum

http://192.168.0.1/test.php

Jika muncul informasi mengenai PHP berarti instalasi sukses di lakukan.

bikin-DNS

Insatalasi DNS

Apa dan bagaimana cara kerja suatu DNS tidak akan saya bahas, disini saya akan jelaskan bagaimana membuat suatu server DNS menggunakan aplikasi BIND pada mesin FreeBSD.

Instalasi yang di lakukan disini menggunakan instalasi Otomatis menggunakan PORTS pada freebsd, syarat utamanya ketika kita menginstall harus terhubung ke internet.

1. Proses Instalasi

  • Masuk ke direktori instalasi

#cd /usr/ports/dns/bind9

  • Installkan BIND

#make install

tunggu proses berlangsung. Jika tidak terdapat error maka proses instalasi akan selesai dan siap di konfigurasikan.

2. Proses Konfigurasi BIND

Setelah proses instalasi selesai langkah selanjutnya adalah mengkonfigurasikan DNS.

  • Konfigurasikan named.conf

File inti dari konfigurasi BIND adalah di named.conf, editlah file tersebut

#cd /etc/namedb

#ee named.conf

Rubahlah baris-baris di bawah ini :

forward only, menjadi forward first

forwarders {..........}, isilah dengan ip DNS dari ISP

hapuslah semua konfigurasi yang menggunakan IPv6

  • Download File named.root dari Internic

Sebelum mendownload, ganti nama named.root yang asli menjadi nama lain

#mv named.root named.root.asli

Download file terbaru

#wget ftp://internic.net/domain/named.root

  • Buatlah file untuk zona localhost

#sh make-localhost

  • Edit file zona localhost

#cd master

#ee localhost.rev

sehingga isinya kurang lebih seperti di bawah ini

$TTL 3600

@IN SOA localhost. root.localhost. (

20060807 ; serial ( tanggal )

3600 ; refresh

900 ; retry

36000000 ; expire

3600 ;minimun

IN NS localhost.

1 IN PTR localhost.

Simpan file tersebut.

  • Buat Zona Localhost

Untuk membuat zona localhost, kita kopikan saja file localhost.rev menjadi db.localhost, kemudian rubah seperti dibawah ini :

#cp localhost.rev db.localhost

#ee db.localhost

dan rubah menjadi seperti berikut :

$TTL 3600

@IN SOA localhost. root.localhost. (

20060807 ; serial ( tanggal )

3600 ; refresh

900 ; retry

36000000 ; expire

3600 ;minimun

IN NS localhost.

IN A 127.0.0.1

Simpan file tersebut dan ikuti langkah selanjutnya.

  • Masukan zona localhost di file named.conf

#cd /etc/namedb

#ee named.conf

tambahkan baris dibawah ini :

zone "localhost" IN {

type master;

file "master/db.localhost";

};

  • Buat file rndc.conf

Langkah selanjutnya membuat file rndc.conf, dengan memberikan perintah rndc-confgen, hasil dari perintah ini akan berbeda dengan yang anda lakukan.

#rndc-confgen

dan menghasilkan seperti di bawah ini :

# start of rndc.conf

key “rndc-key” {

algorithm hmac-md5;

secret “68p7glMULOP2NWn9oBOPSg= =”;

};

options {

default-key “rndc-key”;

default-server 127.0.0.1;

default-port 953;

};

# end of rndc.conf

# key “rndc-key” {

# algorithm hmac-md5;

# secret “68p7glMULOP2NWn9oBOPSg= =”;

# };

#

# controls {

# inet 127.0.0.1 port 953

# allow { 127.0.0.1; } keys { “rndc-key”; };

# };


Sesudah muncul seperti di atas, buatlah sebuah file dengan nama rndc.conf

#ee rndc.conf

kemudian masukan hasil dari conf-gen diatas dimulai dari

key “rndc-key” {

algorithm hmac-md5;

secret “68p7glMULOP2NWn9oBOPSg= =”;

};

options {

default-key “rndc-key”;

default-server 127.0.0.1;

default-port 953;

};

Setelah itu edit file named.conf

#ee named.conf

dan masukan

key “rndc-key” {

algorithm hmac-md5;

secret “68p7glMULOP2NWn9oBOPSg= =”;

};

controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { “rndc-key”; };

};
  • Setelah selesai simpanlah file tersebut dan jalankan BIND

#/usr/local/bin/named

  • Test apakah sudah jalan dengan baik

Sebelum melakukan test, rubah lah terlebih dahulu IP dns pada mesin kita

#ee /etc/resolv.conf

kemudian masukan

nameserver 127.0.0.1

Test 1 :

#host localhost
localhost has address 127.0.0.1

#host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost

Jika muncul seperti di atas, maka DNS server telah berhasil jalan dengan baik.

2. Pembuatan Zone Domain

Misalkan kita telah memiliki sebuah domain dengan nama bohongan.net, dengan pendelegasian DNS ada pada kita, maka langkah selanjutnya adalah :

Edit file named.conf dan tambahkan zona untuk domain tersebut

#ee named.conf

tambahkan seperti berikut :

zone "bohongan.net" {
type master;
file "master/db.bohongan";
};

Buat file db.bohongan di direktori master

#ee master/db.bohongan

dengan isi seperti berikut

$TTL 3600

@ IN SOA ns1.bohongan.net. admin.bohongan.net.(
20060205 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ns1.bohongan.net.
IN NS ns2.bohongan.net.
IN MX 10 mail.bohongan.net.
IN A 200.200.200.200 ===> isikan dengan ip yang anda miliki

ns1 IN A 200.200.200.200

ns2 IN A 200.200.200.200

www IN A 200.200.200.200

Simpan dan restart ulang DNS kit

#rndc reload

Test Domain

router# dig -t ns bohongan.net

; <<>> DiG 9.3.0 <<>> -t ns bohongan.net
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38978
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;bohongan.net. IN NS

;; ANSWER SECTION:
bohongan.net. 3269 IN NS ns2.bohongan.net.
bohongan.net. 3269 IN NS ns1.bohongan.net.

;; Query time: 16 msec
;; SERVER: 202.134.0.155#53(202.134.0.155)
;; WHEN: Fri Aug 11 21:22:23 2006
;; MSG SIZE rcvd: 79

Jika muncul seperti di atas maka Domain yang kita seting sudah jalan dan dapat dikenali di internet.

bikin virtual-host

Apa sih virtual host ?, berdasarkan dokumentasi dari apache.org, virtual host adalah, adanya beberapa website dalam satu komputer. Virtual host dapat berdasarkan basis IP, yang artinya, dalam satu komputer terdapat beberapa IP yang menunjukan ke masing-masing website. Dan virtual host berbasis nama domain, yang artinya beberapa nama domain menunjuk ke satu IP address.
Langsung ke materi bahasan. Misalkan kita mempunyai sebuah apache webserver dengan IP address 192.168.0.1 ( contoh di sini menggunakan ip private ) dengan domain dan subdomain sebagai contoh, www.example.com, www.dummy.com, mail.example.com.
  • Langkah pertama yang harus kita lakukan adalah merubah file konfigurasi apache

#ee /usr/local/apache2/conf/httpd.conf

kemudian carilah baris-baris untuk membuat virtual host, dan tambahkan seperti berikut :

#NameVirtualHost 192.168.0.1:80

Kemudian buatlah konfigurasi untuk website dengan domain di atas seperti berikut :

#Untuk website www.exampple.com :


#ServerAdmin webmaster@example.comAlamat e-mail ini telah diblok oleh spam bots, Anda membutuhkan Javascript untuk melihatnya
#DocumentRoot /home/example/www
#ServerName www.example.com
#ServerAlias example.com
#ErrorLog logs/www.example.com-error_log
#CustomLog logs/www.example.com-access_log common


#Untuk website subdomain mail.example.com


#ServerAdmin webmaster@example.comAlamat e-mail ini telah diblok oleh spam bots, Anda membutuhkan Javascript untuk melihatnya
#DocumentRoot /home/example/mail
#ServerName mail.example.com
#ErrorLog logs/mail.example.com-error_log

#CustomLog logs/mail.example.com-access_log common


Untuk website domain www.dummy.com


#ServerAdmin webmaster@dummy.comAlamat e-mail ini telah diblok oleh spam bots, Anda membutuhkan Javascript untuk melihatnya
#DocumentRoot /home/dummy/www
#ServerName www.dummy.com
#ServerAlis dummy.com
#ErrorLog logs/www.example.com-error_log
#CustomLog logs/www.example.com-access_log common


Penjelasan :

ServerAdmin = email dari penanggung jawab website
DocumentRoot = Direktori Tempat menyimpan file-file website yang bersangkutan
ServerName = nama website dari domain yang bersangkutan
ServerAlias = nama alias dari website yang bersangkutan
ErrorLog = Tempat menyimpan catatan kesalahan website
CustomLog = Tempat menyimpan catatan yang mengakses situs

Setelah di selesai di rubah simpanlah file tersebut.

Langkah selanjutnya adalah membuat direktori untuk masing-masing domain diatas

#mkdir /home/example
#mkdir /home/example/www
#mkdir /home/example/mail
#mkdir /home/dummy
#mkdir /home/dummy/www

Langkah terakhir adalah me restart server kita

#/usr/local/apache2/bin/apachectl stop
#/usr/local/apache2/bin/apachectl start


Selesai sudah pembuatan virtual host.

Catatan :

Untuk apache versi 2.2 penulisan virtual host terletak di file tersendiri. Yang harus anda rubah pada httpd.conf adalah :

buang tanda # pada baris ini :

#Include conf/extra/httpd-vhosts.conf

Dan baris-baris konfigurasi diatas dimasukan pada file httpd-vhosts.conf

#ee /usr/local/apache2/conf/extra/httpd-vhost.conf

Wednesday, September 27, 2006

freebsd-bridging

Tulisan diambil dari berbagai sumber terutama dari FreeBSD Handbook dan manual ditambah dengan dokumentasi percobaan yang dilakukan penulis plus informasi lain yang penulis pikir masih berhubungan dengan topik ini. Anda juga diasumsikan sudah bisa melakukan recompile kernel. Selain itu, jangan pernah malas membaca manual dan handbook plus tutorial yang tersedia banyak di Internet.

Kenapa harus Bridge?

Kenapa harus memakai bridge? Kenapa nggak pakai router aja sekalian? Apakah router lebih baik dari Bridge? Kira-kira begitulah pertanyaan yang sempat muncul di benak penulis sewaktu mempelajari bridge (maklumlah, penulis cuma lulusan fakultas sastra, dan masih bego soal komputer, apalagi networking). Kenapa harus memakai bridge? Pertama, bila trafik di suatu segmen jaringan sudah tinggi, dan kita ingin memperbesar kapasitas bandwidth dengan membagi segmen tersebut menjadi beberapa segmen lagi tanpa repot-repot membuat subnet baru (apalagi bila IP address anda terbatas). Dan kedua, bila kita juga ingin security jaringan yang lebih baik.

Kenapa nggak pakai router saja? Seperti yang sudah diterangkan di atas, menggunakan router berarti membuat subnet baru, dan ini akan menjadi masalah bila IP legal kita sangat terbatas. Selain itu, delay pun akan semakin tinggi karena router melakukan routing berdasarkan informasi layer 3 dan menggunakan algoritma routing yang lebih kompleks. Selain itu, akan terdapat masalah pada aplikasi yang menggunakan non-routed protocol seperti Net-BEUI. Apakah router lebih baik daripada bridge? Tidak ada yang lebih baik. Kedua tidak bisa dibanding, karena memang mempunyai fungsi dan cara kerja yang berbeda. Router bekerja berdasarkan informasi layer 3 sedang bridge berdasarkan layer 2.

Catatan:
Beberapa orang mempertanyakan kenapa setelah menggunakan FastEthernet, bridge/switch, melakukan microsegmentation, dan full-duplex, file server mereka tetap lambat diakses terutama untuk file-file image yang berukuran besar. Harap diperhatikan bahwa menggunakan bridge tidak otomatis mempercepat akses. Dalam beberapa hal, menggunakan bridge cenderung memperlambat akses. Bridge digunakan untuk memperbesar bandwidth disuatu segmen dan meningkatkan security. Terjadinya delay dalam akses melalui bridge dikarenakan bridge melakukan "perhitungan" terlebih dahulu terhadap frame-frame yang lewat (berdasarkan informasi layer 2).

Bagaimana suatu Jaringan Ethernet Bekerja?

Sekarang bayangkan, anda mempunyai sepuluh server internet yang super sibuk dan satu sama lain terhubung melalui sebuah hub. Kira-kira ilustrasinya seperti ini:

Sekarang anggaplah ilustrasi di atas menggunakan Ethernet 100BaseT. Berarti kira-kira bandwithnya 100MBps. Karena terdapat 10 server, maka kira-kira secara statistik, tiap server harus berbagi bandwidth yang ada sehingga rata-rata tiap server hanya mendapatkan jatah 10 MBps. Lho, kok bisa?

Mari kita lihat bagaimana jaringan ethernet bekerja. Teknologi yang digunakan adalah CSMA/CD (Carrier Sense Multiple Access/Collision Detection). Ini artinya setiap host punya akses ke media dan sebelum sebuah host mengakses media tersebut, ia harus mendengarkan dahulu (carrier sense) untuk meyakinkan bahwa tidak ada host lain yang sedang menggunakannya. Jika sedang ada host lain yang sedang menggunakan, maka host yang hendak menggunakan media harus antri dahulu. Jika ternyata terdapat 2 atau lebih host yang menggunakan media pada saat yang bersamaan, maka akan terjadi collision. Makin banyak host yang tergabung dalam suatu segmen jaringan, maka kemungkinan terjadinya collision akan semakin besar. Ini alasannya, dari ilustrasi di atas, 10 host pada jaringan 100BaseT rata-rata akan mendapat jatah bandwidth sebesar 10MBps.

Bagaimana Bridge Berfungsi Meningkatkan Bandwidth?

Sekarang kita lihat ilustrasi yang lain:

INTERNET
|
|
-----------------
| R O U T E R |
-----------------
|
|
----------------------------------------------------------------------
| BRIDGE |
----------------------------------------------------------------------
| | | | |
| | | | |
--------- --------- --------- --------- ---------
| HUB | | HUB | | HUB | | HUB | | HUB |
--------- --------- --------- --------- ---------
| | | | | | | | | |
| | | | | | | | | |
------ ------ ------ ------ ------ ------ ------ ------ ------ -------
|srv1| |srv2| |srv3| |srv4| |srv5| |srv6| |srv7| |srv8| |srv9| |srv10|
------ ------ ------ ------ ------ ------ ------ ------ ------ -------

Sekarang segmen jaringannya telah dipecah menjadi 5 collision domain.

Bagaimana kerjanya bridge?

Bridge bekerja berdasarkan informasi layer 2 (MAC address). Sebuah bridge mendengarkan setiap frame yang lewat dan mempelajari source address serta terletak di segmen mana address tersebut. Bridge menyimpan semua informasi ini di memori (forwarding table). Proses yang dilakukan bridge ketika menerima sebuah frame:

* Melihat apakah alamat yang dituju terletak pada segmen yang sama. Jika iya, maka bridge tidak akan menerukan ke segmen lain (filtering).

* Jika tujuan terletak pada segmen yang berbeda, maka frame akan diteruskan ke segmen yang tepat.

* Jika bridge tidak mengetahui pada segmen manakah alamat yang dituju, maka bridge akan meneruskannya ke semua segmen (flooding).

Selain mengurangi terjadinya collision, bridge juga meningkatkan kepastian suatu frame mencapai tujuannya. Caranya dengan menyimpan sementara frame di memori bila ternyata segmen yang dituju sedang sibuk.

Mahal nggak Sih harga sebuah Bridge?

Ada 2 jenis bridge, pertama hardware-based, kedua software-based.

Hardware-based bridge sering disebut juga dengan dedicated bridge atau sering disebut dengan Switch. Contoh produknya seperti Cisco Catalyst. Pada jenis ini, fungsi-fungsi bridging sebagian besar sudah ditanamkan ke hardware.

Akibatnya apa?

Pertama: jauh lebih reliable. Bila terkait dengan tugas-tugas bisnis yang mission-critical, menggunakan dedicated bridge sangat dianjurkan. Kedua, harganya mahal sekali (terutama bagi mahasiswa). Pada software-based bridge, implementasi fungsi bridging dilakukan dalam tataran software, sehingga PC biasa pun bisa difungsikan menjadi bridge. Kelebihannya, murah. Kekurangannya, tidak terlalu reliable untuk load yang tinggi.

Dalam tulisan ini, kita akan coba membuat software-based bridge menggunakan OS FreeBSD.

Pemilihan NIC

Sebuah bridge mensyaratkan minimal ada 2 NIC. Dan belum semua NIC yang dikenal FreeBSD mendukung bridge. Yang sudah mendukung bridge antara lain:

* Western Digital and SMC 80xx; Novell NE1000 and NE2000; 3Com 3C503 (ed)
* DEC/Intel DC21x4x (de)
* 3Com 3C509 (ep)
* Fujitsu MB86960A/MB86965A Ethernet (fe)
* Intel EtherExpress PRO/100B (82557, 82558) (fxp)
* Lance/PCnet cards (Isolan, Novell NE2100, NE32-VL, AMD Am7990 & Am79C960) (lnc)
* Macronix 98713/98715/98725 (``PMAC'') (mx)
* SMC 9432TX (83c170 ``EPIC'') (tx)
* 3Com 3c90x (``Boomerang'', ``Cyclone'') (xl)

Kompilasi Kernel

Supaya kernel mendukung fungsi bridging, tambahkan:

options BRIDGE

dan rebuild kernel.
Dukungan Firewall

Jika kita ingin menambahkan fitur security dengan firewall, maka kita perlu menambahkan:

options IPFIREWALL

Bila kita menambahkan fitur ini, maka secara default semua paket di tolak kecuali yang diizinkan. Jangan lupa pula, secara default IPFIREWALL hanya berlaku untuk paket IP, sedangkan paket non-IP akan ditolak. Untuk beberapa model jaringan ini akan menjadi masalah. Misalnya Address REsolution Protocol yang digunakan suatu host untuk mengetahui MAC Address host lain. Karena itu IPFW Rule (nomor 65535) harus diset supaya membolehkan paket non-IP lewat.

Solusi lain, tambahkan:

options IPFIREWALL_DEFAULT_TO_ACCEPT

supaya firewall secara defalut menerima semua paket.

Harus diperhatikan, menambahkan fitur security, berarti kita menambah delay paket ketika melalui bridge. Karena bridge harus menaikkan frame ke layer 3, dan mencocokkan paket berdasarkan rules-rules firewall.

Menjadikan Bridge

Pada direktori /etc, su ke root, dan buka file sysctl.conf (buat file tersebut jika ternyata belum ada). Tambahkan:

net.link.ether.bridge=1

Bila kita juga menggunakan firewall pada bridge, tambahkan juga:

net.link.ether.bridge_ipfw=1

Hal-hal yang Harus Diperhatikan

Mengaktifkan bridging, setiap interface dalam promiscuous mode. Dan bisa menyebabkan load tinggi pada sistem untuk menerima dan memfilter trafik yang tidak diinginkan.

Dalam sebuah topologi bridge yang kompleks, selalu ada kemungkinan terjadi routing loop. FreeBSD masih menggunakan cara manual mengatasi routing loop yaitu dengan menon-aktifkan interface yang dideteksi menyebakan routing loop. FreeBSD masih belum menggunakan Daemon khusus yang menjalankan algoritma Spanning Tree yang menangani pertukaran informasi routing antar bridge dan memdeteksi routing loop.

Ujicoba

Penulis melakukan percobaan menggunakan komputer Pentium 133 RAM 64M dengan 3 NIC 3Com 905 (xl). Ketika booting, dikenali sebagai xl0, xl1, dan xl2. Dan muncul pesan kira-kira seperti dibawah ini:

BRIDGE 990810, have 11 interfaces
-- index 1 type 6 phy 0 addrl 6 addr 00.60.08.45.e0.0e
-- index 2 type 6 phy 0 addrl 6 addr 00.60.08.45.dc.e6
-- index 3 type 6 phy 0 addrl 6 addr 00.60.08.45.dd.5a
ad0: 4120MB [8930/15/63] at ata0-master using WDMA2
acd0: CDROM <> at ata1-slave using PIO4
Mounting root from ufs:/dev/ad0s1a
xl0: promiscuous mode enabled
>> now xl0 promisc ON if_flags 0xffff8943 bdg_flags 0x5
xl1: promiscuous mode enabled
>> now xl1 promisc ON if_flags 0xffff8943 bdg_flags 0x5
xl2: promiscuous mode enabled
>> now xl2 promisc ON if_flags 0xffff8943 bdg_flags 0x5

Sedangkan pada ifconfig message nya nggak jauh berbeda:

xl0: flags=8943 mtu 1500
ether 00:60:08:45:e0:0e
media: autoselect (10baseT/UTP) status: active
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX
xl1: flags=8943 mtu 1500
ether 00:60:08:45:dc:e6
media: autoselect (none) status: no carrier
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX
xl2: flags=8943 mtu 1500
ether 00:60:08:45:dd:5a
media: autoselect (none) status: no carrier
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX
lp0: flags=8810 mtu 1500
ppp0: flags=8010 mtu 1500
lo0: flags=8049 mtu 16384
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010 mtu 1280
gif1: flags=8010 mtu 1280
gif2: flags=8010 mtu 1280
gif3: flags=8010 mtu 1280
faith0: flags=8000 mtu 1500
xl0: flags=8943 mtu 1500
ether 00:60:08:45:e0:0e
media: autoselect (10baseT/UTP) status: active
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX
xl1: flags=8943 mtu 1500
ether 00:60:08:45:dc:e6
media: autoselect (none) status: no carrier
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX
xl2: flags=8943 mtu 1500
ether 00:60:08:45:dd:5a
media: autoselect (none) status: no carrier
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX
lp0: flags=8810 mtu 1500
ppp0: flags=8010 mtu 1500
lo0: flags=8049 mtu 16384
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010 mtu 1280
gif1: flags=8010 mtu 1280
gif2: flags=8010 mtu 1280
gif3: flags=8010 mtu 1280
faith0: flags=8000 mtu 1500

Kemudian penulis melakukan ujicoba dengan topologi seperti dibawah ini:

(Karena hanya menggunakan 3 komputer, maka satu interface (xl2) tidak dapat digunakan.)

-----------------------
| FreeBSD Box Bridge |
-----------------------
|(xl0) |(xl1)
| |
------- -------
| HUB | | HUB |
------- -------
| |
| |
----------------- -----------------
| Linux Box | | Linux Box |
| (192.168.2.1) | | (192.168.2.2) |
----------------- -----------------

Tes yang dilakukan sederhana, yaitu ping dari 192.168.2.1 ke 192.168.2.2, dan ternyata berjalan dengan baik.

Anda juga dapat mengubungkan workstation (Linux Box) ke Bridge (FreeBSD) menggunakan kabel CrossOver untuk membuat suatu microsegmentation.

Hal-hal lain yang perlu diperhatikan

1. Belum teruji dalam suatu lingkungan dengan load yang tinggi.
2. Belum diujicoba apakah mendukung fitur Full-Duplex (meskipun NIC yang digunakan mendukung untuk FD).
3. Belum dikembangkan untuk clustering (ini mah tugasnya Luigi Rizzo).
Last Updated ( Friday, 06 January 2006 )

script ipfw

firewall_script="/etc/ipfw.rules"


tahap selanjut nya adalah membuat firewall rules

#pico /etc/ipfw.rules
#!/bin/sh
cmd="ipfw -q add"

skip="skipto 500"

pif=rl0

ks="keep-state"

good_tcpo="22,25,37,43,53,80,443,110,119,5050,5051,5100"

ipfw -q -f flush

$cmd 002 allow all from any to any via xl0 # exclude LAN traffic

$cmd 003 allow all from any to any via lo0 # exclude loopback traffic

$cmd 100 divert natd ip from any to any in via $pif

$cmd 101 check-state

# Authorized outbound packets

$cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks

$cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks

$cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks

$cmd 130 $skip icmp from any to any out via $pif $ks

$cmd 135 $skip udp from any to any 123 out via $pif $ks

# Deny all inbound traffic from non-routable reserved address spaces

$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP

$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP

$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP

$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback

$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback

$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config

$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs

$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster

$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast

# Authorized inbound packets

$cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1

$cmd 450 deny log ip from any to any

# This is skipto location for outbound stateful rules

$cmd 500 divert natd ip from any to any out via $pif

$cmd 510 allow ip from any to any

contoh squid.conf

Contoh untuk squid.conf

http_port 8080
icp_port 3130
cache_mem 8 MB
maximum_object_size 4096 KB
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none
client_netmask 255.255.255.0
dns_nameservers 202.146.255.3 202.146.255.5
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl local src 192.168.0.0/24
acl server dst 192.168.0.7/255.255.255.255
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 8080 # Port umum (proxy)
acl CONNECT method CONNECT
http_access allow local
http_access allow server
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow all
icp_access deny all
miss_access allow all
cache_effective_user squid
cache_effective_group squid
httpd_accel_host server.contoh.com
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
forwarded_for on
error_directory /usr/local/etc/squid/errors
visible_hostname www.contoh.com

firewall-ipfw

freebsd $ cd /etc/

freebsd $ cp rc.firewall rc.firewall.old

sekarang kita buat file /etc/ipfw.rules

freebsd $ ee /etc/ipfw.rules

contoh sederhana untuk lebih jelasnya silahkan untuk ke
http://people.freebsd.org/~jkb



add divert natd all from any to any via tun0
add 400 pass all from any to any via rl0
add 500 pass all from any to any via tun0
add 600 pass tcp from any to any out xmit tun0 setup
add 700 pass tcp from any to any via tun0 established
add 800 pass tcp from any to any 80 setup
add 900 pass tcp from any to any 21 setup
add 900 pass tcp from any to any 22 setup
add 1000 pass tcp from any to any 25 setup
add 1100 pass tcp from any to any 110 setup
add 1100 pass tcp from any to any 113 setup
add 1200 pass tcp from any to any 53 setup
add 1300 pass udp from any to any 53 out xmit tun0
add 1400 pass udp from any 53 to any in recv tun0
add 2000 divert 32000 ip from any to any via rl0
add allow all from any to any via rl0
add allow all from me to any

freebsd $ chmod 400 ipfw.rules

freebsd $ cp /usr/src/sbin/natd/samples/natd.cf.samples

/usr/local/etc/natd.cf

edit pada bagian /usr/local/etc/natd.cf

freebsd $ ee /usr/local/etc/natd.cf

use_socket yes
same_socket yes
interface tun0
dynamic yes

freebsd $



sekarang kita edit atau tambahkan pada /etc/rc.conf

freebsd $ ee /etc/rc.conf

ifconfig_lo0="inet 127.0.0.1"

ifconfig_tun0="" 'untuk dinamic biarkan kosong'

network_interfaces="rl0 tun0 lo0"

firewall_enable="YES"

firewall_script="/etc/rc.firewall"

firewall_type="/etc/ipfw.rules"

natd_enable="YES"

natd_interface="tun0"

natd_flags="-f /usr/local/etc/natd.cf

ppp_enable="YES"

ppp_mode="auto"

ppp_nat="YES"

ppp_profile="demand"

sekarang kita coba restart komputer kita

freebsd $ shutdown -r now

pastikan tidak terjadi error bila terjadi error catat baik-baik errornya

catatan lagi tentang firewall:

allow tcp from [ x ] to any [port² antara 0-1023 yg dibolehin di tuju]
deny tcp from [ x ] to any 0-1023

deny tcp from [ x ] to any [port² antara 1024 - 65535 yg di blokir]
allow tcp from [ x ] to any

Sunday, May 28, 2006

bikin webserver support php n MySQL

Rincian file source-nya adalah:

apache_1.3.34.tar.gz (untuk versi terbaru, bisa didownload di www.apache.org)
mysql-5.0.16.tar.gz (untuk versi terbaru, bisa didownload di www.mysql.com)
php-5.1.1.tar.bz2 (untuk versi terbaru, bisa didownload di www.php.net)
phpMyAdmin.zip versi 2.7.0 (Untuk melakukan pengujian. Versi terbaru, bisa didownload di www.phpmyadmin.net)

Pertama-tama, login sebagai root, letakan/copykan semua file ke sebuah direktori yang sama, misalnya di /usr/src, perintahnya sebagai berikut:
# cp apache_1.3.34.tar.gz /usr/src
# cp mysql-5.0.16.tar.gz /usr/src
# cp php-5.1.1.tar.bz2 /usr/src
# cp phpMyAdmin.zip /usr/src

Masuk ke direktori /usr/src dan ekstraklah semua file dengan perintah:
# cd /usr/src
# tar -zxvf apache_1.3.34.tar.gz
# tar -zxvf mysql-5.0.16.tar.gz
# tar -zxvf cp php-5.1.1.tar.bz2
# unzip phpMyAdmin.zip


-----------------
APACHE WEB SERVER
-----------------

Buatlah group dan user dengan nama www :
# pw groupadd www
# pw adduser www -g www -d /nonexistent -s /usr/sbin/nologin

Masuk ke direktori source Apache:
# cd apache_1.3.34

Lakukan konfigurasi, dalam contoh ini, hasil instalasi Apache akan berada di /www:
# ./configure --prefix=/www --server-uid=www --server-gid=www --enable-module=most --enable-module=auth_db --enable-module=mmap_static --disable-module=auth_dbm --enable-shared=max

Karakter “\” digunakan untuk ganti baris tetapi perintah dianggap diketikkan dalam satu baris, untuk penjelasan paramaeter-parameter configure diatas, bisa dilihat di manual Apache (www.apache.org) atau dengan menjalankan perintah :
# ./configure --help

Lakukan compilasi dan instalasi dengan perintah :
# make
# make install

Perintah tersebut bisa anda satukan sehingga menjadi :
# make && make install

Untuk menjalankan Apache:
# /www/bin/apachectl start

Outputnya seperti berikut:
/bin/apachectl start: httpd started

Misalnya IP komputer yang menjalankan Apache Web Server adalah 192.168.0.166, maka untuk pengetesan bisa dilakukan melalui browser (Opera, Firefox, Internet Explorer) dengan alamat http://192.168.0.166 atau bisa melalui perintah:
# sockstat | grep 80

Apabila outputnya kurang lebih seperti dibawah ini, berarti Apache Web Server sudah berjalan dengan baik.
www httpd 47994 16 tcp4 192.168.0.166:80 *:*
www httpd 47993 16 tcp4 192.168.0.166:80 *:*
www httpd 47992 16 tcp4 192.168.0.166:80 *:*
www httpd 47991 16 tcp4 192.168.0.166:80 *:*
www httpd 47990 16 tcp4 192.168.0.166:80 *:*
root httpd 47989 16 tcp4 192.168.0.166:80 *:*

Untuk selanjutnya, kita akan menginstall MySQL server terlebih dahulu, karena, instalasi PHP supaya dapat berkomunikasi dengan MySQL server memerlukan library dari hasil instalasi MySQL.


---------------------
MYSQL DATABASE SERVER
---------------------

Buatlah group dan user dengan nama mysql :
# pw groupadd mysql
# pw adduser mysql -g mysql -d /nonexistent -s \ /usr/sbin/nologin

Setelah selesai menginstall Apache, pindahlah ke direktori MySQL:
# cd ../mysql-5.0.16

Seperti biasa, lakukan konfigurasi terlebih dahulu, untuk opsi yang lainnya, bisa dilihat dengan melakukan perintah ./configure --help :
# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-mysqld-ldflags=-all-static

Compile source dan install source:
# make && make install

Lama kompilasi tergantung spesifikasi komputer anda, dengan processor AMD Barton 2500++ yang di OC menjadi 3200++, RAM 128MB, waktu yang dihabiskan komputer penulis untuk compilasi adalah sekitar 24 menit.
Untuk konfigurasi awal dan instalasi mysql:
# /usr/local/mysql/bin/mysql_install_db
# chown -R mysql:mysql /usr/local/mysql/
# /usr/local/mysql/bin/mysqld_safe --bind-address=127.0.0.1 &
# /usr/local/mysql/bin/mysqladmin -u root password paswordanda
# /usr/local/mysql/bin/mysqladmin -u root -h localhost password paswordanda -p
Enter password: (dalam hal ini ketikan paswordanda lalu tekan enter)

Parameter “--bind-address=127.0.0.1” pada perintah baris ke-3 supaya MySQL listening di localhost (tidak bisa diakses dari jaringan, hanya bisa diakses dari komputer dimana MySQL Server dijalankan, hilangkan saja opsi tersebut apabila ingin MySQL bisa diakses dari jaringan), sedangkan “&” supaya MySQL Server berjalan di background.
Untuk melihat apakah MySQL Server berjalan atau tidak, jalankan perintah berikut:
# sockstat | grep mysql

Apabila ada output seperti berikut, maka MySQL server sudah berjalan dengan sukses.
mysql mysqld 6994 8 tcp4 127.0.0.1:3306 *:*
mysql mysqld 6994 10 stream /tmp/mysql.sock


---
PHP
---

Masuk ke direktori PHP:
# cd ../php-5.1.1

Seperti biasa, jalankan ./configure --help untuk melihat parameter-parameter yang tersedia, berikut adalah konfigurasi beserta parameter-parameternya yang penulis gunakan, hasil instalasi akan berada di /usr/local/php:
# ./configure --prefix=/usr/local/php --enable-versioning --enable-memory-limit --with-layout=GNU --with-config-file-scan-dir=/usr/local/etc/php --enable-libxml --enable-spl --with-regex=php --with-apxs=/www/bin/apxs --disable-ipv6 --enable-zend-multibyte --with-mysqli=/usr/local/mysql/bin/mysql_config
--with-regex=php --with-apxs=/www/bin/apxs --disable-ipv6 --enable-zend-multibyte --with-mysqli=/usr/local/mysql/bin/mysql_config --with-zlib --with-bz2 --enable-ftp --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --enable-mbstring i386-yagami-freebsd6.0

Periksalah file /www/conf/httpd.conf, apabila tidak ada entry seperti berikut ini, maka tambahkanlah pada file tersebut entry berikut ini:
LoadModule php5_module libexec/libphp5.so
AddModule mod_php5.c

DirectoryIndex index.html index.php

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Untuk mengetesnya, ketikan baris-baris berikut (harus sama persis, “#” tidak perlu diketik):

# cat > /www/htdocs/about.php
phpinfo();
?>

Lalu tekan tombol Ctrl+C pada keyboard, dan jalankan Apache apabila belum dijalankan:

# /www/bin/apachectl start

Karena IP komputer dimana Apache dijalankan adalah 192.168.0.166, maka akseslah melalui browser URL http://192.168.0.166/about.php, apabila semua langkah sebelumnya sudah benar maka pada browser tersebut akan tampil konfigurasi PHP.

Pengujian dengan PHPMyAdmin versi 2.7.0

Masuklah ke direktori phpMyAdmin-2.7.0:
# cd ../ phpMyAdmin-2.7.0

Copy file config.default.php menjadi config.inc.php
# cp config.default.php config.inc.php

Edit file config.inc.php, gunakan text editor favorit anda (vi, pico, emacs, joe, dll) dalam hal ini penulis memakai ee (easy editor) yang merupakan text editor bawaan FreeBSD:
#ee config.inc.php


Cari entry $cfg['PmaAbsoluteUri'] = ''; dan ubah menjadi:
$cfg['PmaAbsoluteUri'] = 'http://192.168.0.166/pma/';

Cari entry $cfg['Servers'][$i]['host'] = 'localhost'; ganti localhost dengan IP dimana MySQL Server listening, dalam parameter menalankan MySQL Server sebelumnya kita memakai 127.0.0.1 yang merupakan IP localhost:
$cfg['Servers'][$i]['host'] = '127.0.0.1';

Ubah entry $cfg['Servers'][$i]['extension'] = 'mysql'; menjadi:
$cfg['Servers'][$i]['extension'] = 'mysqli';

Pada entry $cfg['Servers'][$i]['auth_type'] = 'config'; ubahlah menjadi:
$cfg['Servers'][$i]['auth_type'] = 'http';

Kosongkan entry $cfg['Servers'][$i]['user'] = 'root'; sehingga menjadi:
$cfg['Servers'][$i]['user'] = ''; //sebelum titik koma adalah tanda kutip satu ' dua buah.

Simpanlah file config.inc.php tersebut, lalu buatlah link ke folder phpMyAdmin dari /www/htdocs/pma dengan perintah:
# ln -s /usr/src/phpMyAdmin-2.7.0 /www/htdocs/pma

Akseslah dari browser URL berikut ini: http://192.168.0.166/pma/, anda akan diminta Username dan Password, isikan root untuk Username dan paswordanda untuk Password (lihat kembali pada saat konfigurasi MySQL Server).

Setelah berhasil login, maka akan tampil halam utama dari phpMyAdmin.

Friday, May 12, 2006

bikin router freebsd

Router dengan freeBSD
#############################################

Router dengan freeBSD ( freeBSD.4.9-RELEASE )

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


Note
: Sebelum install mending buat netscafe dolo, idupin TV atau mp3 :P


1. Install freeBSD melalui CDRoom/Ftp/DOS.
( saya gunakan freeBSD.4.9-RELEASE )


2. setelah tahap install selesai, lalu isikan ip address untuk Routernya.

ketik command :

/stand/sysinstall --> Configure --> Networking --> Interfaces --> rl0/rl1

Note :

rl0 ==> dalam hal ini di artikan eth0 jika di linux.
rl1 ==> dapat di artikan eth1 di linux


3. OK sekarang untuk membuat Router dan Squid kita coba lakukan Kompile kernel
dengan option pendukung :

cd /usr/src/sys/i386/conf

cp GENERIC ROUTER ---> copy kernel asli jika kemudian terjadi masalah
bisa kembali ke awal :P


a. OK lalu masukan option-optin di bawah ini :


ident ROUTER #pastikan ident sama dengan nama kernel

options IPDIVERT #option untuk NAT
#option untuk firewall dan forward
options IPFILTER
options IPFILTER_LOG
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPFIREWALL_DEFAULT_TO_ACCEPT
options HZ=1000
options DUMMYNET


b. kemudian kita kompile kernelnya :


config ROUTER
cd ../../compile/ROUTER
make depend && make && make install


( setelah selesai coba reboot dengan single User mode ).




4. Lanjutkan dengan Installasi Squid :
( saya menggunakan squid-2.5.STABLE7.tar.gz )

Download file squid versi squid-2.5.STABLE7.tar.gz dari google :P


fetch http://hostname/squid-2.5.STABLE7.tar.gz ----> fetch = wget

tar -zxvf squid-2.5.STABLE7.tar.gz

./configure --prefix=/usr/local/squid --exec-prefix=/usr/local/squid --enable-delay-pools --enable-cache-diggests --enable-poll --disable-ident-lookups --enable-snmp
--enable-storeio=diskd,ufs
--enable-ipf-transparent
--enable-removal-policies

make
make install



5. setelah selesai lanjutkan ke bagian konfigurasi squid nya :

ee /usr/local/squid/etc/squid.conf ---> edit squid.conf


#dibawah ini contoh penggalan isi dari squid.conf

#direktory cache dan log
cache_dir ufs /usr/local/squid/var/cache 512 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

#group dan user squid
cache_effective_user squid
cache_effective_group squid


6. Lanjutkan ke bagian user group dan dir untuk cache dan logs nya :


mkdir /usr/local/squid/var/cache -----> bikin dir cache dan logs (kalau belum ada).

mkdir /usr/local/squid/var/logs
chmod 777 /usr/local/squid/var/*

pw groupadd squid -----> buat group squid



pw useradd squid -g squid -d dev/null -s etc/shells -----> buat user squid


chown -R squid:squid /usr/local/squid/var/cache ---> rubah permisions untuk cache lognya

chown -R squid:squid /usr/local/squid/var/logs


/usr/local/squid/sbin/squid -z -----> jalankan command ini untuk membuat swap dir.



7. Ok setelah semuah konfigurasi selesai coba jalankan squidnya :


/usr/local/squid/sbin/squid -D -f /usr/local/squid/etc/squid.conf

ps ax|grep squid ---> ketikan command ini untuk memastikan squidnya jalan.


setelah itu coba cek apa squid benar-benar OK :

tail -f /var/log/messages

tail -f /var/log/squid/cache.log



8. Untuk mempermudah gunakan script ini sebagai alat bantu :P


ee /usr/sbin/squid.sh ---> buat file shell.

chmod 755 squid.sh ---> lakukan perubahan permision file.

----------------------- Cut di sini ---------------------------------

#!/bin/sh
echo -n ' Squid '
case "$1" in
start)
/usr/local/squid/sbin/squid -D -f /usr/local/squid/etc/squid.conf
;;
stop)
/usr/local/squid/sbin/squid -k shutdown
;;
restart)
/usr/local/squid/sbin/squid -k reconfigure
;;
*)
echo "Usage: `basename $0` {start|stop|restart}"
;;
esac


----------------------- Cut di sini ---------------------------------



Nah... jadi jika ingin men stop atau me-run kan squid tinggal gunakan command :


/usr/sbin/squid.sh start ---> ( gunakan start, stop atau restart ).



9. OK squid sudah beres sekarang masuk ke konfigurasi ip forward nya :P


ee /etc/sysctl.conf ----> edit file sysctl.conf

net.inet.ip.forwarding=1 ---> masukan option forward.


sekarang pastikan command di bawah ini pada file rc.conf anda :

ee /etc/rc.conf -----> edit file rc.conf

gateway_enable=YES
firewall_enable=YES
firewall_type=OPEN

natd_enable=YES
natd_interface="rl0"
inetd_enable=YES

router_enable=YES
named_enable=YES
sshd_enable=YES

ifconfig_rl1="inet ip_local netmask local_mask"
ifconfig_rl0="inet ip_public netmask public_mask"




10. Langkah terakhir rule untuk ip forwardnya agar lebih aman masukan langsung rule nya
ke file rc.local .. so sewaktu server di reboot bisa di bacanya hehehe....
btw sekalian squidnya jugak boleh jadi coba pastekan aja langsung file di bawah ke rc.local :

ee /etc/rc.local ---> edit file rc.local


/sbin/ipfw -f flush
/sbin/ipfw add divert natd all from any to any via rl0
/sbin/ipfw add pass all from any to any
/sbin/ipfw add 00050 fwd 192.168.0.254,3128 tcp from any to any 80 via rl1

/usr/sbin/squid.sh start