Wednesday, November 21, 2012

Multi Domain dan Virtual Host



Multi Domain dan Virtual Host



Langkah Praktikum

Setting BIND (/etc/bind/named.conf.local)
$sudo nano /etc/bind/named.conf.local
Tambahkan zona baru untuk domain baru. Dalam contoh ini domain baru yang ditambahkan adalah jarkom1.com sedangkan domain lama adalah jarkom.com, Perhatikan kembali modul DNS Server




# zona domain jarkom.com
zone "jarkom.com" {
type master;
file "/etc/bind/zones/jarkom.com.db";
};

#zona domain jarkom1.com
zone "jarkom1.com" {
type master;
file "/etc/bind/zones/jarkom1.com.db";
};

#zona domain jarkom2.com
zone "jarkom2.com" {
type master;
file "/etc/bind/zones/jarkom2.com.db";
};

#zona domain jarkom.net
zone "jarkom.net" {
type master;
file "/etc/bind/zones/jarkom.net.db";
};

# DNS reverse
zone "0.17.10.in-addr.arpa" {
type master;
file "/etc/bind/zones/jarkom-rev.db";
};

Definisikan kembali zona domain yang baru dibuat dalam hal ini jarkom1.com, jarkom2.com dan jarkom.net
$sudo nano /etc/bind/zones/jarkom1.com.db

$TTL 3D
@ IN SOA ns.jarkom.com. admin.jarkom.com. (
2007062001
28800
3600
604800
38400
);
jarkom1.com IN NS ns.jarkom.com.

@ IN A 10.17.0.198

www IN A 10.17.0.198

TXT "Network Gateway"

Restart Bind
$sudo /etc/init.d/bind9 restart

Lakukan ping dan dig terhadap domain yang baru contoh jarkom.net atau jarkom2.com

Lakukan langkah yang sama untuk beberapa domain baru yang lain

Lakukan browsing ke domain-domain tersebut. Perhatikan bahwa semua domain akan menampilkan hasil yang sama. Agar setiap domain menampilkan tampilan sesuai dengan website masing-masing maka perlu dilakukan setting virtualhost pada apache yang terinstall.

Contoh terdapat 4 domain (jarkom.com, jarkom1.com, jarkom.net dan jarkom2.com). Maka harus ada 4 direktori yang akan menjadi tempat file-file website masing-masing.
jarkom.com terletak pada direktori /var/www
jarkom1.com terletak pada direktori /var/www/jarkom1
jarkom.net terletak pada direktori /var/www/jarkomnet
jarkom2.com terletak pada direktori /var/www/jarkom2
Kemudian buat file index.html dengan isi yang berbeda pada masing-masing direktori

Pembuatan direktori masing-masing domain :
$cd /var/www
$sudo mkdir jarkom1 jarkomnet jarkom2
$ls -l
$sudo chmod 755 jarkom jarkom1 jarkomnet jarkom2

Konfigurasi apache2.conf
$sudo nano /etc/apache2/apache2.conf
Isikan pada baris terakhir
ServerName 127.0.0.1
NameVirtualHost *:80

Buat file berikut dengan nama domain masing-masing pada direktori /etc/apache2/sites-available
$cd /etc/apache2/sites-available
$sudo nano jarkom1.com
Isikan

ServerName jarkom1.com
ServerAlias www.jarkom1.com
DocumentRoot /var/www/jarkom1 #Sesuai direktori yang telah kita tentukan
ErrorLog /var/log/apache2/jarkom1-error.log
CustomLog /var/log/apache2/jarkom1-access.log combined

Save dan Keluar dari teks editor. Lakukan langkah yang sama untuk domain lainnya (jarkom.net dan jarkom2.com)

Disable VirtualHost default dan enable domain yang baru
$sudo a2dissite default
$sudo a2ensite jarkom1.com
$sudo a2ensite jarkom.net
$sudo a2ensite jarkom2.com

Reload apache
$sudo /etc/init.d/apache2 reload

Lakukan browsing menggunakan lynx ke masing-masing domain atau gunakan komputer/laptop lain
lynx /var/www/index.html
lynx /var/www/jarkom1/index.html
lynx /var/www/jarkom2/index.html
lynx /var/www/jarkomnet/index.html
Hasil Praktikum

polsri@polsri:~$ ping jarkom.com
PING jarkom.com (10.17.0.198) 56(84) bytes of data
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=1 ttl=64 time=0.024 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=2 ttl=64 time=0.025 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=3 ttl=64 time=0.019 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=4 ttl=64 time=0.024 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=5 ttl=64 time=0.020 ms
^C
--- jarkom.com ping statistic ---
5 packets transmitted , 5 received, 0% packet loss, time 3997ms
rtt main /avg/max/mdev=0.019/0.022/0.025/0.004 ms
polsri@polsri:~$

polsri@polsri:~$ ping jarkom1.com
PING jarkom1.com (10.17.0.198) 56(84) bytes of data
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=1 ttl=64 time=0.023 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=2 ttl=64 time=0.021 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=3 ttl=64 time=0.020 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=4 ttl=64 time=0.018 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=5 ttl=64 time=0.020 ms
^C
--- jarkom1.com ping statistic ---
5 packets transmitted , 5 received, 0% packet loss, time 4000ms
rtt main /avg/max/mdev=0.018/0.020/0.023/0.004 ms
polsri@polsri:~$

polsri@polsri:~$ ping jarkom2.com
PING jarkom2.com (10.17.0.198) 56(84) bytes of data
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=1 ttl=64 time=0.022 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=2 ttl=64 time=0.024 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=3 ttl=64 time=0.016 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=4 ttl=64 time=0.019 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=5 ttl=64 time=0.017 ms
^C
--- jarkom2.com ping statistic ---
5 packets transmitted , 5 received, 0% packet loss, time 3999ms
rtt main /avg/max/mdev=0.016/0.019/0.024/0.005 ms
polsri@polsri:~$

polsri@polsri:~$ ping jarkom.net
PING jarkom.net (10.17.0.198) 56(84) bytes of data
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=1 ttl=64 time=0.023 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=2 ttl=64 time=0.025 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=3 ttl=64 time=0.026 ms
64 bytes from 5TCB.jarkom.com (10.17.0.198): icmp_reg=4 ttl=64 time=0.017 ms
64 bytes from 5CB.jarkom.com (10.17.0.198): icmp_reg=5 ttl=64 time=0.019 ms
^C
--- jarkom.net ping statistic ---
5 packets transmitted , 5 received, 0% packet loss, time 3999ms
rtt main /avg/max/mdev=0.017/0.022/0.026/0.003 ms

polsri@polsri:~$ dig jarkom.com
; < <> > DIG 9.6.1-P1 < <> > jarkom.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14635
;; flags: qr aa rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;jarkom.com. IN A

;; ANSWER SECTION:
jarkom.com. 259200 IN A 10.17.0.198

;; AUTHORITY SECTION:
jarkom.com. 259200 IN A ns.jarkom.com

;; ADDITIONAL SECTION:
ns.jarkom.com. 259200 IN A 10.17.0.198

;; Query time: 2 msec
;; SERVER: 10.17.0.198#53(10.17.0.198)
;; WHEN : Thu Nov 6 07:41:17 2012
;; msg size rcvd: 77


polsri@polsri:~$ dig jarkom1.com
; < <> > DIG 9.6.1-P1 < <> > jarkom1.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28489
;; flags: qr aa rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;jarkom1.com. IN A

;; ANSWER SECTION:
jarkom1.com. 259200 IN A 10.17.0.198

;; AUTHORITY SECTION:
jarkom1.com. 259200 IN A ns.jarkom.com

;; ADDITIONAL SECTION:
ns.jarkom.com. 259200 IN A 10.17.0.198

;; Query time: 2 msec
;; SERVER: 10.17.0.198#53(10.17.0.198)
;; WHEN : Thu Nov 6 07:42:11 2012
;; msg size rcvd: 85


polsri@polsri:~$ dig jarkom2.com
; < <> > DIG 9.6.1-P1 < <> > jarkom2.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35469
;; flags: qr aa rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;jarkom2.com. IN A

;; ANSWER SECTION:
jarkom2.com. 259200 IN A 10.17.0.198

;; AUTHORITY SECTION:
jarkom2.com. 259200 IN A ns.jarkom.com

;; ADDITIONAL SECTION:
ns.jarkom.com. 259200 IN A 10.17.0.198

;; Query time: 2 msec
;; SERVER: 10.17.0.198#53(10.17.0.198)
;; WHEN : Thu Nov 6 07:42:36 2012
;; msg size rcvd: 85


polsri@polsri:~$ dig jarkom.net
; < <> > DIG 9.6.1-P1 < <> > jarkom.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13519
;; flags: qr aa rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;jarkom.net. IN A

;; ANSWER SECTION:
jarkom.net. 259200 IN A 10.17.0.198

;; AUTHORITY SECTION:
jarkom.net. 259200 IN A ns.jarkom.com

;; ADDITIONAL SECTION:
ns.jarkom.com. 259200 IN A 10.17.0.198

;; Query time: 2 msec
;; SERVER: 10.17.0.198#53(10.17.0.198)
;; WHEN : Thu Nov 8 08:28:20 2012
;; msg size rcvd: 87
Penjelasan

Ketika selesai menambahkan domain, selanjutnya melakukan pengecekan apakah sudah terhubung dengan domain tersebut. Domain itu diantaranya jarkom.com, jarkom1.com, jarkom2.com dan jarkom.net. Gunakan perintah ping dan dig untuk mengujinya. Misalnya ping jarkom1.com. Maka jika domain tersebut mereply ping kita tadi, domain tersebut sudah dapat diakses atau telah terhubung. Untuk dig misalnya dig jarkom.net. Fungsinya untuk mengetahui alamat host yang digunakan.


Pada langkah 7 dan 8, akan dibuat beberapa direktori untuk masing-masing domain yang telah dibuat sebelumnya. Pada masing-masing direktori tersebut akan dimasukkan sebuah index.html yang berbeda-beda. File index.html itu sebagai berikut:

index.html pada /var/www

<html>
<head>
<title>WEB Kelompok 4 5CB</title>
</head>
<body>
<h1>Nama Saya Dedy</h1>
<h2>Nama Saya Via</h2>
<h3>Nama Saya Dovi</h3>
<h7>Nama Saya Wendy</h7>
</body>
</html>

index.html pada /var/www/jarkom1

<html>
<head><title>Kelompok 2 5CB</title></head>
<body>
Hai Kami Kelompok4 5CB
kelompok bengal
</body>
</html>

index.html pada /var/www/jarkom2

<html>
<head><title>Kelompok4 5CB</title>
</head>
<body>
<ol>
<li>D3dy</li>
<li>v1a</li>
<li>d0v1</li>
<li>W3ndy</li>
</ol>
</body>
</html>

index.html pada /var/www/jarkomnet

<html>
<head><title>Kelompok4 5CB:)</title></head>
<body>
<ol>
<li>dedy bae</li>
<li>via bae</li>
<li>dovi bae</li>
<li>wendi bae</li>
</ol>
</body>
</html>

Untuk menampilkan setiap index.html pada masing-masing direktori, gunakan perintah lynx.

lynx /var/www/index.html

WEB Kelompok4 5CB
Nama Saya dedy
Nama Saya via
Nama Saya dovi
Nama Saya wendy


lynx /var/www/jarkom1/index.html

Kelompok4 5CB
Hai Kami Kelompok4 5CB bengal



lynx /var/www/jarkom2/index.html

Kelompok4 5CB
1.D3dy
2.v1a
3.d0v1
4.W3ndy


lynx /var/www/jarkomnet/index.html

Kelompok 4 5CB:)
1. dedy
2. via
3. dovi
4. wendy


Penjelasan
Ketika file index.html telah dimasukkan pada setiap direktori, selanjutnya file tersebut akan ditampilkan melalui perintah lynx. Contoh lynx jarkom.com. Pemanggilan ini merupakan kombinasi antara DNS Server dan juga WEB Server yang telah dibuat sebelumnya. Pada saat perintah lynx /var/www dipanggil maka file index.html yang terdapat pada direktori itulah yang akan tampil pada layar. Sehingga file index.html yang telah dibuat sebelumnya pada direktori /var/www akan tampil pada layar sesuai yang telah diisikan pada tag html file index.html tersebut. Untuk Domain yang lain mempunyai kesamaan dalam pemanggilan dan akan membaca file index.html pada direktori /var/www/jarkom1, /var/www/jarkom2 dan /var/www/jarkomnet dan menampilkan hasil dari index.html yang terdapat didalam direktori tersebut.

Kesimpulan
Apache digunakan untuk mengkonfigurasi Virtual Host pada WEB Server
BIND digunakan untuk mengkonfigurasi DNS pada Multi Domain
Cara penampilan file index.html merupakan kombinasi dari DNS Server dan WEB Server
READ MORE - Multi Domain dan Virtual Host
READ MORE - Multi Domain dan Virtual Host

Tuesday, November 6, 2012

WEB SERVER (APACHE & PHP)

WEBSERVER (APACHE & PHP)

WebServer adalah software server yang menjadi tulang belakang dari World Wide Web(WWW). Web servermenunggu permintaan dari client yang menggunakan browser seperti netscapenavigator, Internet Explorer, Mozilla, dan program browser lainnya. Jikaada permintaan dari browser, maka web server akan memproses permintaan itu dankemudian memberikan hasil prosesnya berupa data yang diinginkan kembali kebrowser. Data ini mempunyaiformat yang standar disebut dengan format SGML ( Standard General MarkupLanguage). Data yang berupa format ini kemudian akan ditampilkan oleh browsersesuai dengan kemampuan browser itu. Contohnya ialah bila data yang dikirimberupa data gambar, browser yang hanya mampu menampilkan text (misalnya lynx)tidak akan mampu menampilkannya dan jika ada akan menampilkan alternatifnyasaja.
Web Server, untuk berkomunikasi dengan clientnya (webbrowser) mempunyai protokol sendiri yaitu HTTP (HyperText Transfer Protocol).Dengan protokol ini, komunikasi antar web server dengan clientnya (browser)dapat saling dimengerti dan lebih mudah. Seperti telah dijelaskan diatas,Standar format data pada World Wide Web adalah SGML. Tapi sudah menjadi halyang umum bahwa para pengguna internet lebih banyak menggunakan format HTML(HyperText Markup Language) karena penggunaannya yang lebih sederhana dan mudahdipelajari. Kata HyperText mempunyai arti bahwa seorang pengguna internetdengan web browsernya dapat membuka dan mambaca dokumen-dokumen yang ada dalamkomputernya atau bahkan komputer yang jauh tempatnya sekalipun. Hal inimemberikan cita rasa dari suatu proses yang tridimensional, artinya penggunainternet dapat membaca dari satu dokumen ke dokumen yang lain hanya denganmengklik beberapa bagian dari halaman-halaman dokumen (web) itu.
Proses yang dimulai dari permintaan webclient (browser),diterima web server, diproses, dan dikembalikan hasil prosesnya oleh web serverke webclient lagi dilakukan secara transparan. Setiap orang dapat dengan mudahmengetahui apa yang terjadi pada tiap-tiap proses. Secara garis besarnya webserver hanya memproses semua masukan yang diperolehnya dari web clientnya.

APACHEWEB SERVER
Banyak sekali software web server yang berada diinternet. Dengan berdasarkan pada 12 macam pertimbangan diatas, maka dapatdipilih software mana saja yang cocok dengan kebutuhan kita.Misalnya : Kitamemasang web server untuk keperluan suatu perusahaan jasa internet (ISP ), makapertimbangan yang harus diambil adalah apakah mereka menginginkan software yanggratis ataukomersial. Keuntungan dari software komersial adalah mereka punyadukungan teknis dan dokumentasi yang lengkap, sedang pada kebanyakan softwaregratis tidak punya. Namun ada juga software gratisan yang mempunyai dukunganteknis dari pembuatnya dan dengan dokumentasi yang lengkap. Salahsatu software web server gratisan seperti itu adalah Web server Apache. Webserver Apache mempunyai kelebihan dilihat dari beberapa pertimbangan diatas:
Apachetermasuk dalam kategori freeware (software gratisan)
Apachemudah sekali proses instalasinya jika dibanding web server lainnya
sepertiNCSA, IIS, dan lain-lain.
PHP PADA APACHEWEB SERVER
Apacheweb server mendukung penambahan modul-modul. Diantara modul yang sering dipakai adalah modul PHP. PHP(Personal Homep Page Tool) adalah salah satu jenis aalat yang digunakan untkmembuat halaman web anda menjadi lebih menarik, lebih aman, dan lebih dinamik.Pada dasrnya PHP miirip dengan bahsa script yang lainnya seperti asp,Javascript , Visual BASic atau yang lainnya, namun keuntungannya adalah padaPHP tidak diperlukan tambahan pada sisi webclient seperti halnya Javascript danVisual Basic script, sehingga lebih luas penggunaannya. Beberapa keunggulan PHPdibandingkan dengan yang lain :
Autentikasi http menggunakan PHP menggunakan fungsiheader() yang ada
dalam modul apache PHP.
Pembuatan file GIF menggunakan library GD yangdikompilasi saat
menginstall php.
PHP dapat menerima metoda upload file
Mendukung penggunaan cookie
Mendukung integrasi dengan database
Mendukung ekspresi regular seperti ereg(), ereg_replace()dan lainnya.
Penanganan kesalahan berdasarkan tingkat kesalahan.
D. LANGKAH -  LANGKAH PRAKTIKUM
Untuk membuat suatu webserver yang support php pada komputer anda sertamemeriksa instalasinya, langkah-langkah yang harus dilakukan adalah sebagai :
1.     Periksa koneksike gateway, ke dns server dan ke server repositori (ping)
2.     Install apache2 yang akandigunakan sebagai web server
            sudo apt-get install apache2                                                                       
3.     Jalankan apache2
            sudo /etc/init.d/apache2 restart
4.     Periksa dan catat hasilnya
nmap-p80 localhost
nmap-p80 10.17.0.198
5.     Install lynx
sudoapt-get install lynx            
6.     Browsing ke webyang anda buat
lynx 10.17.0.198
7.     Direktoritempat file website anda adalah /var/www/. Buatfile html di folder tersebut
cd/var/www/
sudonano index.html
Isikan
<html>
<head>
<title>WEBSERVER KELOMPOK</title>
</head>
<body>
            Isilah bagian ini. Sehingga menjadisebuah halaman website.
</body>
</html>
Savedan Keluar dari nano
8.     Browsingkembali ke website anda, apa yang ditampilkannya ?
lynxalamat ip 10.17.0.198
9.     Install PHP pada web server anda
            sudo apt-get install php5libapache2-mod-php5
10. Restart apache
sudo/etc/init.d/apache2 restart
11. Buat halamanphp dan letakkan pada direktori www anda
            cd/var/www/
            sudo nano test.php

Savedan keluar dari text editor
12.  Browsing kewebsite anda sambil menjalankan tcpdump catat tampilan dan hasil tcpdump
            lynx ip_komputer_anda/test.php

Hasil Dari Praktikum : 1 of 15 page
1.



2.


3.


4.

5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
READ MORE - WEB SERVER (APACHE & PHP)
READ MORE - WEB SERVER (APACHE & PHP)

Wednesday, October 31, 2012

DNS Server



DNS Server


D. LANGKAH – LANGKAH

Sebagai contoh, maka akan digunakan ip dan domain sebagai berikut

Ip komputer adalah 10.17.0.194
Domain yang akan dibuat adalah jarkom.com

1. Install BIND9
$sudo apt-get install bind9

2. Konfigurasi file bind

a. Buat zona domain - jarkom.com.

$sudo nano /etc/bind/named.conf.local

Isikan

            # zona jarkom.com
zone "jarkom.com" {
   type master;
   file "/etc/bind/zones/jarkom.com.db";
};

            # zona jarkom1.com
zone "jarkom1.com" {
   type master;
   file "/etc/bind/zones/jarkom1.com.db";
};

# zona jarkom2.com
zone "jarkom2.com" {
   type master;
   file "/etc/bind/zones/jarkom2.com.db";
};


# zona jarkom3.com
zone "jarkom.3com" {
   type master;
   file "/etc/bind/zones/jarkom.com3.db";
};

# DNS reverse
zone "9.17.10.in-addr.arpa" {
   type master;
   file "/etc/bind/zones/jarkom-rev.db";
};


b. Buat DNS Forwarding

$sudo nano /etc/bind/named.conf.options

Isikan ip dns ISP atau server yang sudah ada.

forwarders {
   10.10.1.1;
};


c. Edit file  /etc/resolv.conf , isikan ip komputer yang sudah diinstall DNS yaitu 10.17.9.33.

$ sudo nano /etc/resolv.conf

Isikan

search jarkom.com
nameserver 10.17.0.194

d. Definisikan zona

$sudo mkdir /etc/bind/zones
$sudo nano /etc/bind/zones/jarkom.com.db

Isikan



$TTL 3D
@ IN SOA ns.jarkom.com. admin.jarkom.com. (
   20121010
   28800
   3600
   604800
   38400
);
jarkom.com                IN        NS                   ns.jarkom.com.
ns                                 IN        NS                   jarkom.com.
@                                 IN        A                     jarkom.com.
5CA                             IN        A                     10.17.0.194
5CB                             IN        A                     10.17.0.194
5TCA                          IN        A                     10.17.0.194
5TCB                          IN        A                     10.17.0.194
                          TXT                          "Network Gateway"

The TTL or time to live disetting untuk 3 hari. ns.jarkom.com sebagai nameserver mendefinisikan ubuntudesktop and gateway sebagai A record. Dan www sebagai alias dari ubuntudesktop menggunakan CNAME

e. Buat file “jarkom-rev.db” untuk reverse lookup.

$sudo nano /etc/bind/zones/jarkom-rev.db

Isikan

$TTL 3D
@       IN      SOA     ns.jarkom.com. admin.jarkom.com. (
                2007062001
                28800
                604800
                604800
                86400
)
            IN      NS      ns.jarkom.com.
194      IN      PTR    5CB.jarkom.com.


3. Aktifkan BIND

$sudo /etc/init.d/bind9 restart

4. Periksa dan test hasil instalasi dan konfigurasi, catat semua hasilnya.

$netstat --listening | more

$nmap 5CB.jarkom.com

$ dig 5CB.jarkom.com








Hasil dari Soal No 4 adalah seperti gambar dibawah





READ MORE - DNS Server
READ MORE - DNS Server

Tuesday, October 9, 2012

Proxy Server


Server adalah sebuah sistem komputer yang menyediakan jenis layanan tertentu dalam sebuah  Jaringan Komuter. Server didukung dengan prosesor yang bersifat scalable dan RAM yang besar, juga dilengkapi dengan sistem operasi khusus, yang disebut sebagai sistem operasi jaringan atau network operating system. Server juga menjalankan perangkat lunak administratif yang mengontrol akses terhadap jaringan dan sumber daya yang terdapat di dalamnya, seperti halnya berkas atau alat pencetak (printer), dan memberikan akses kepada workstation anggota jaringan.
Server proxy adalah sebuah komputer yang menawarkan layanan jaringan komputer untuk mengizinkan klien untuk membuat koneksi jaringan tidak langsung ke layanan jaringan lainnya. Seorang klien terhubung ke server proxy, kemudian melakukan permintaan koneksi, file, atau sumber daya lain yang tersedia pada server yang berbeda. Proxy menyediakan sumber daya baik dengan menghubungkan ke server tertentu atau dengan melayani dari cache. Dalam beberapa kasus, proxy dapat mengubah permintaan klien atau respon server untuk berbagai tujuan.

Empat Jenis Server Proxy
·         Transparan Proxy
Jenis server proxy mengidentifikasi dirinya sebagai server proxy dan juga membuat alamat IP asli tersedia melalui http header. Ini umumnya digunakan untuk kemampuan mereka untuk website cache dan tidak secara efektif memberikan anonimitas apapun untuk mereka yang menggunakannya. Namun, penggunaan proxy transparan akan membuat Anda terkena IP Banned. Ini transparan dalam hal alamat IP Anda terlihat publik, bukan transparan dalam istilah yang Anda tidak tahu bahwa Anda menggunakannya (sistem anda tidak secara khusus dikonfigurasi untuk menggunakannya.)
·         Anonymous Proxy
Jenis server proxy mengidentifikasi dirinya sebagai server proxy, tetapi tidak membuat alamat IP yang asli tersedia. Jenis server proxy terdeteksi, tetapi memberikan anonimitas wajar bagi sebagian besar pengguna.
·         Distorting Proxy
Jenis server proxy mengidentifikasi dirinya sebagai server proxy, tetapi membuat alamat IP yang salah asli tersedia melalui http header.
·         High Anonymous Proxy
Jenis server proxy tidak mengidentifikasi dirinya sebagai server proxy dan tidak menyediakan alamat IP asli.









Proses Penginstalan Server Proxy
PERSIAPAN
·      Hardware
Untuk hardware proxy server saya kali ini menggunakan Prosesor Intel Celeron 430 (Coppermine) 1.80Ghz dengan 2 buah hardisk 80 GB SATA Seagate 7200 RPM & memori Vgen 1.5 GB DDR2. Mengapa 2 hardisk? Performa read/write Squid akan lebih optimal jika direktori cache diletakkan di hardisk terpisah. Peletakkan direktori cache di partisi yang berada dalam satu hardisk dengan system, tidak akan meningkatkan performa Squid, begitu juga dengan teknik RAID. Jika anda memiliki dana lebih, ada baiknya jika anda menggunakan beberapa hardisk untuk penyimpanan cache squid. Tidak perlu berkapasitas besar, yang penting memiliki kemampuan read/write yang baik, misalnya hardisk jenis SCSI, SAS dan sebagainya.
Untuk memori, sebenarnya squid tidak memerlukan kapasitas yang besar, dengan 512 MB sudah cukup untuk menjalankannya. Tetapi dalam kasus proxy warnet saya, saya ingin agar kemampuan penyimpanan cache di memori bisa lebih besar, sehingga diharapkan squid bisa menghadirkan TCP_MEM_HIT lebih banyak.
·      Software
Squid terlahir atau tercipta hanya untuk Linux seorang  . Jadi, jangan sekali-kali pernah berpikir dan berusaha menjalankan Squid di mesin Mikocok (baca: microsoft), baik itu seri Desktop maupun Server. Gak nyambung bro!
Squid dapat berjalan sangat baik di hampir semua distro Linux. Saya sendiri pada waktu uji coba menggunakanUbuntu Server 8.10 32-bit. Walaupun anda memiliki komputer yang bisa menjalankan aplikasi 64-bit, disarankan untuk Squid tetap menggunakan OS 32-bit, karena Squid belum sepenuhnya teruji di mesin 64-bit.
Untuk meningkatkan performa baca/tulis, disarankan hardisk yang akan anda gunakan untuk menyimpan cache menggunakan format ReiserFS. Karena, RaiserFS memiliki kemampuan baca/tulis yang lebih baik untuk file-file ukuran kecil ketimbang format ext3.
Pada saat ujicoba, saya menggunakan Squid versi 2.7STABLE5. Untuk list versi lain yang tersedia, silahkan kunjungi halaman ini.







·      INSTALASI
Disini saya tidak akan menerangkan bagaimana cara menginstal Ubuntu Server 8.10 atau distro Linux lainnya ke komputer yang akan anda gunakan untuk proxy server. Tetapi jika anda membutuhkan tutorialnya, silahkan baca diHowToForge.
Membuat Partisi Format ReiserFS
Setelah Server Ubuntu anda siap, ikuti langkah-langkah instalasi berikut. Yang pertama kita akan membuat hardisk kedua (tempat direktori cache) memiliki format ReiserFS. Distro Debian sudah mendukung format ReiserFS, jika anda menggunakan CentOS anda harus mengaktifkan centosplus repo dengan men-setting enable=1 pada/etc/yum.repos.d/CentOS-Base.repo kemudian jalankan perintah yum install reiserfs-utils
Jika anda menggunakan Ubuntu seperti saya, anda tidak perlu melakukan setting apapun, karena Ubuntu sudah mendukung format ReiserFS. Yang perlu anda lakukan adalah menjalankan perintah
mkfs.reiserfs /dev/sdXX
Dimana XX adalah partisi dimana yang akan anda gunakan untuk menyimpan cache. (Untuk melihat list hardisk, gunakan perintah sudo fdisk -l.
Pada kasus saya,
mkfs.reiserfs /dev/sdb1
Kemudian tambahkan partisi anda ini ke /etc/fstab
/dev/sdb1 /var/spool/squid reiserfs defaults,notail,noatime 1 2
/var/spool/squid adalah direktori penyimpanan cache.
Compile Squid
Langkah kedua adalah melakukan compile source squid. Download source-nya dengan perintah
sudo wget http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE5.tar.gz
setelah itu ekstrak dengan perintah
sudo tar -zxvf squid-2.7.STABLE5.tar.gz
kemudian kita masuk ke direktori source squid
cd squid-2.7.STABLE5
Sebelum kita mulai meng-compile, pastikan gcc atau g++ sudah terinstal.
Untuk memulai proses compile, ketikkan perintah

CHOST="i686-pc-linux-gnu" \
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" \
./configure \
-prefix=/usr \
-enable-async-io \
-enable-useragent-log \
-enable-snmp \
-enable-cache-digests \
-enable-follow-x-forwarded-for \
-enable-storeio="aufs" \
-enable-removal-policies="heap,lru" \
-with-maxfd=16384 \
-enable-delay-pools \
-enable-poll \
-disable-ident-lookups \
-enable-truncate \
-exec-prefix=/usr \
-bindir=/usr/sbin \
-libexecdir=/usr/lib/squid
Catatan:
Nilai CHOST dan CFLAGS berbeda tergantung dari jenis prosesor mesin anda. Ganti opsi ini sesuai dengan prosesor yang anda gunakan. Untuk mengetahui nilai CHOST dan CFLAGS ketikkan perintah cat /proc/cpuinfo dan cocokkan dengan refensi nilai CHOST CFLAGS di halaman Gentoo Safe Cflags.
-enable-async-io: opsi ini untuk mengaktifkan asynchronous I/O – sangat penting untuk menghentikan squik melakukan blocking pada baca/tulis ke harddisk.
-enable-useragent-log berguna agar squid mencatat useragent di entri log – berguna jika anda menggunakan lynx untuk melakukan debug kecepatan squid.
-enable-snmp aktifkan ini jika anda ingin menampilkan statistik squid dalam bentuk grafik.
-enable-cache-digests harus diaktifkan jika anda menggunakan cache peer.
-enable-storeio="aufs" adalah alernatif penyimanan metode I/O. AUFS adalah Asynchronous, memiliki performa yang signifikan ketimbang UFS atau diskd.
-enable-removal-policies="heap,lru" adalah pilihan opsi untuk removal policies, dan saya memilih menggunakan “heap LFUDA”, atau anda juga bisa menggunakan “LRU”.
-with-maxfd=16384 digunakan agar squid tidak terblokir apabila dalam keadaan load tinggi.
-enable-poll untuk meningkatkan performa squid.
-disable-ident-lookups menghentikan squid dari melihat ident di setiap koneksi, bisa juga untuk mencegah serangan DOS yang dapat mematikan squid server, yang biasanya dengan cara membuka ribuan koneksi.
-enable-truncate memerintahkan squid untuk selalu menggunakan truncate() ketimbang unlink() ketika menghapus file cache.
enable-delay-pools jika anda ingin mengatur bandwidth koneksi, gunakan opsi ini.
Setelah anda menjalankan perintah ./configure diatas dengan sukses, saatnya kita menuju langkah beriktunya (jika ada error muncul, anda harus mencari solusinya sebelum masuk ke perintah selanjutnya).
Selanjutnya ketikkan perintah
make
kemudian dilanjutkan dengan
make install
seteleah selesai ketikkan perintah
strip /usr/sbin/squid /usr/lib/squid/*
perintah ini untuk menghapus simbol pada binari squid, agar ukurannya menjadi lebih kecil. Perintah ini bersifat opsional.
Squid.conf
squid.conf adalah file yang digunakan untuk melakukan konfigurasi squid. Disini saya tidak akan menampilkan semua konfigurasi squid.conf, tetapi hanya yang bisa untuk mengoptimalkan kinerja squid. Misal opsi http_port tidak saya cantumkan, jika anda ingin mengetahui list lengkap dan deskripsi dari opsi-opsi konfigurasi squid yang ada, silahkan kunjungi manualnya.

hosts_file /etc/hosts
dns_nameservers 208.67.222.222 208.67.220.220
cache_replacement_policy heap LFUDA
cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 50 KB
cache_dir aufs /var/spool/squid 10000 16 256
cache_mem 64 MB
logfile_rotate 10
memory_pools off
maximum_object_size 50 MB
quick_abort_min 0 KB
quick_abort_max 0 KB
log_icp_queries off
client_db off
buffered_logs on
half_closed_clients off
Apa maksud dari opsi-opsi diatas?
hosts_file /etc/hosts opsi ini untuk memerintahkan squid untuk melihat entri yang ada di /etc/hosts, hal ini berguna jika anda ingin memblokir iklan atau situs jahat dengan memanfaatkan file /etc/hosts (Insya Allah mendatang saya akan membuat tutorial ini.
dns_nameservers 208.67.222.222 208.67.220.220 Ini Penting! Squid akan mem-pause (menghentikan sementara) koneksi ketika melakukan DNS lookup. Dengan memasukkan DNS, maka akan mencegah hal ini. Disini saya menggunakan DNS dari OpenDNS.
cache_replacement_policy heap LFUDA ini adalah pilihan replacement policy, dimana saya menggunakan heal LFUDA. Anda bisa menggunakan pilihan lain, info lengkap perihal cache_replacement_policy, silahkan bacadisini.
cache_swap_low 90 adalah prosentase dimana squid akan melakukan pembersihan cache, jadi jika anda memiliki 10 GB , maka squid akan melakukan pembersihan cache lama pada penggunaan 9 GB.
cache_swap_high 95 secara agresif squid akan menghapus file cache lama dengan menggunakan opsi replacement policy yang disebutkan diatas.
maximum_object_size_in_memory 50 KB Ini untuk menentukan besaran file yang akan disimpan di memori. Pada konfigurasi ini saya mengaturnya maksimum hanya 50 KB, ini agar tidak mengganggu memori. Penyimpanan file yang besar di memori akan memberikan beban tinggi sehingga mmeori tidak bisa dikontrol dengan baik.
cache_dir aufs /var/spool/squid 10000 16 256 Dianjurkan untuk tidak mengubah opsi AUFS, karena opis ini memiliki performa yang lebih bagus dari opsi lain. Angka 10000 adalah jumlah besarnya file cache yang digunakan squid dalam MB.
cache_mem 64 MB Jangan mengatur cache_mem terlalu besar. Cache_mem menunjukkan jumlah maksimal RAM yang digunakan oleh squid untuk menyimpan obyek di memori. Ingat, squid membutuhkan RAM sekitar 100 MB per 1 GB file cache. Jadi, jika anda memiliki 10 GB file cache, maka squid membutuhkan RAM minimal 1 GB.
memory_pools off Menghentikan squid menempel di memori ketika tidak ada aktifitas.
maximum_object_size 50 MB ini adalah jumlah maksimum obyek yang akan disimpan oleh squid. Dianjurkan untuk tidak mengaturnya terlalu besar.
quick_abort_min 0 KB opsi ini sangat berguna, tetapi dalam kasus tertentu akan membuat squid tidak optimal. Quick_abort_time akan mengevaluasi berapa banyak sisa data yang akan ditransfer jika klien membatalkannya. Jika nilainya berada dalam range quick_abort, maka quid akan melanjutkan download sampai selesai dan kemudian menyimpannya di cache. Memang terdengar bagus, namun masalah akan muncul jika klien melakukan beberapa koneksi, maka squid akan menyelesaikan proses download untuk semua koneksi, dan akibatnya squid menjadi lambat. Dengan mengaturnya ke angka 0, maka squid akan menonaktifkan opsi ini.
quick_abort_max 0 KB fungsi sama dengan quick_abort_min
log_icp_queries off jika anda menggunakan cache_peer, maka opsi ini akan menghentikan squid untuk selalu melakukan query ke masing-masing cache_peer.
client_db off jika diaktifkan maka squid akan menyimpan statistik semua klien, hal ini bisa membebani mmeori, maka sebaiknya dinonaktifkan.
buffered_logs on melakukan buffering pada penulisan file log, dapat meingkatkan performa squid.
half_closed_clients off mengirimkan connection-close ke klien sehingga membuka setengah koneksi untuk squid.
Setelah konfigurasi squid.conf dilakukan, kini saatnya menjalankan squid. Ketikkan perintah agar squid membuat swap
/usr/sbin/squid -z
kemudian aktifkan squid
/usr/sbin/squid start
Cek apakah squid sudah berjalan apa belum dengan perintah
sudo netstat -pln | grep squid
bila muncul tampilan seperti dibawah ini, berarti squid sudah berjalan
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 4281/(squid)
udp 0 0 0.0.0.0:3130 0.0.0.0:* 4281/(squid)
udp 0 0 0.0.0.0:50113 0.0.0.0:* 4281/(squid)
udp 0 0 0.0.0.0:3401 0.0.0.0:* 4281/(squid)
Note: Jika anda ingin melakukan pengaturan bandwidth dengan fitur delay_pools, silahkan baca petunjuknya diblog Ghozali.
Pimp Your Squid!
Ok, squid sudah kita optimalkan, bagaimana dengan TCP? Pertama, kita akan melakukan ‘modprobe ip_conntrack’ dengan menambahkan modul ini di /etc/modules (debian) atau /etc/modprobe.conf (RHEL/CentOS).
Hal diatas akan menghentikan squid memunculkan pesan
parseHttpRequest: NF getsockopt(SO_ORIGINAL_DST) failed: (92) Protocol not available
Kemudian kita akan melakukan modifikasi pada sysctl. Tambahkan baris berikut pada akhir file/etc/sysctl.conf
fs.file-max = 65535
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.ipv4.tcp_mem = 4096 4096 4096
net.ipv4.tcp_low_latency = 1
net.core.netdev_max_backlog = 4000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 16384
Kemudian tambahkan entri berikut pada file /etc/security/limits.conf
* - nofile 65535

READ MORE - Proxy Server
READ MORE - Proxy Server