Membuat Proxy Server dengan Squid pada Debian


Untuk mengatur penggunaan internet di kantor atau sekolah Proxy Server merupakan suatu hal yang wajib agar user tidak menyalahgunakan fasilitas koneksi internet seperti membuka situs – situs yang tidak baik misalnya situs – situs yang mengandung pornografi, perjudian, kekerasan, dsb. Atau juga mengontrol penggunaan

Berikut ini akan coba saya tulis cara instalasi Proxy Server menggunakan Squid pada Debian dan konfigurasi minimum agar Squid bisa berjalan. Sedangkan untuk konfigurasi tingkat lanjut seperti penambahan rules, blocking situs, bandwidth management akan saya tulis pada artikel yang berbeda Insya Allah.

Persiapan

PC yang sudah terinstall Linux. Dalam kasus ini saya menggunakan Debian Lenny. Secara umum langkahnya sama. Perbedaannya hanya pada saat proses installasi paket Squid. Jika pada Debian dan turunannya (Ubuntu dll) menggunakan “apt-get”, pada RedHat dan turunannya (Centos dll) menggunakan “yum”. PC ini harus memiliki paling tidak 2 interface. 1 interface terhubung ke LAN dan 1 lagi ke WAN yang dalam contoh kali ini terhubng ke modem speedy.

Network Topology

Modem Speedy   —>  Proxy Server  —>  LAN

Modem Speedy

IP Address : 192.168.0.1

Netmask : 255.255.255.0

DNS : 202.134.0.155, 203.130.196.5, 222.124.204.34

Proxy Server

eth0 (connected to Modem Speedy)

IP Address : 192.168.0.2

Netmask : 255.255.255.0

Gateway : 192.168.0.1

eth1 (connected to LAN)

IP Address : 192.168.1.1

Netmask : 255.255.255.0

LAN

IP Address : 192.168.1.2 – 192.168.1.254

Netmask : 255.255.255.0

Default Gateway : 192.168.1.1

DNS Server : 192.168.1.1

Setting Network dan IPtables

Lakukan setting network di Proxy Server dengan mengedit file /etc/network/interfaces (untuk distro selain Debian dan Ubuntu silakan menyesuaikan) sebagai berikut:

auto lo eth0 eth1

iface lo inet loopback

# The primary network interface

iface eth0 inet static

address 192.168.0.2

netmask 255.255.255.0

broadcast 192.168.0.255

network 192.168.0.0

gateway 192.168.0.1

iface eth1 inet static

address 192.168.1.1

netmask 255.255.255.0

broadcast 192.168.1.255

network 192.168.1.0

Restart network untuk mendapatkan efek.

/etc/init.d/networking restart

atau

/etc/init.d/networking force-reload

Cek hasil konfigurasi network dengan perintah “ifconfig” (tanpa tanda petik). Pastikan hasil konfigurasi telah sesuai.

Edit file /etc/resolv.conf sebagai berikut untuk DNS Server:

nameserver 202.134.0.155
nameserver 203.130.196.5
nameserver 222.124.204.34

Edit file /etc/sysctl.conf dengan menghilangkan tanda # pada baris #net.ipv4.ip_forward=1.

sebelum

#net.ipv4.ip_forward=1

sesudah

net.ipv4.ip_forward=1

Simpan konfigurasi kemudian aktifkan dengan perintah berikut:

sysctl -p

Lakukan konfigurasi IPtables sebagai berikut:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 192.168.0.2

iptables -t nat -A PREROUTING -p tcp -i eth1 –dport 80 REDIRECT –to-ports 3128

Baris pertama melakukan source NAT semua paket yang keluar dari eth0 yang terhubung ke modem speedy sehingga semua client di LAN IP Addressnya akan terbaca 192.168.0.2 (IP Address Proxy Server yang terhubung ke modem speedy) oleh modem speedy. Hal ini dilakukan agar semua client di LAN bisa akses internet.

Sedangkan baris ke 2 berfungsi mengalihkan semua paket yang masuk ke eth1 dari LAN yang menuju port 80 (port web server) ke port Squid yaitu port 3128. Tanpa baris ini maka fungsi Squid sebagai proxy server tidak akan bekerja.

Konfigurasi IPtables di atas bersifat sementara. Jika komputer direstart maka konfigurasi IPtables akan hilang. Untuk mengatasi hal ini lakukan langkah – langkah berikut:

Simpan konfigurasi IPtables ke suatu file (dalm contoh ini ke file /etc/iptables.up.rules) dengan perintah berikut:

iptables-save > /etc/iptables.up.rules

Edit file /etc/network/interfaces. Tambahkan baris “post-up iptables-restore < /etc/iptables.up.rules” agar konfigurasi IPtables di load setelah interface up. Setelah diedit hasilnya adalah sebagai berikut:

auto lo eth0 eth1

iface lo inet loopback

# The primary network interface

iface eth0 inet static

address 192.168.0.2

netmask 255.255.255.0

broadcast 192.168.0.255

network 192.168.0.0

gateway 192.168.0.1

iface eth1 inet static

address 192.168.1.1

netmask 255.255.255.0

broadcast 192.168.1.255

network 192.168.1.0

post-up iptables-restore < /etc/iptables.up.rules

Installasi Squid

Setelah network dan Iptables selesai dikonfigure maka tahap selanjutnya adalah installasi Squid. Gunakan perintah berikut:

apt-get install squid

Setelah Squid terinstall lakukan konfigurasi minimum sebagai berikut:

http_port 3128 transparent

cache_dir ufs 20480 16 256

acl localnet 192.168.1.0/24

http_access allow localnet

http_access deny all

Kemudian restart squid dengan perintah berikut:

/etc/init.d/squid restart

Pastikan squid berjalan dengan menggunakan perintah berikut:

ps ax | grep squid

Jika squid telah berjalan maka seharusnya output dari perintah di atas tidak kosong. Atau bisa gunakan utility “nmap” yang terlebih dahulu harus diinstall dengan perintah “apt-get install nmap” (tanpa tanda petik). Ketikkan perintah berikut maka seharusnya ada baris “3128/tcp open squid-http” yang menandakan Squid telah berjalan:

nmap localhost

Install dnsmasq

Tahap selanjutnya adalah menginstall dnsmasq yang berfungsi sebagai caching DNS server (memetakan nama doamin ke IP Address) sehingga di client tidak perlu menggunakan DNS server public (DNS Server speedy.) Hal ini akan mengurangi traffic ke DNS server public sehingga sedikit banyak akan menekan penggunaan bandwidth. Install dnsmasq dengan perintah berikut:

apt-get install dnsmasq

Setalah terinstall cek apakah dnsmasq telah berjalan dengan perintah berikut:

ps ax | grep dnsmasq

Atau bisa juga dengan perintah “nmap localhost” (tanpa tanda petik). Jika dnsmasq telah berjalan maka output perintah tadi akan ada baris “53/tcp open domain”.

Semua konfigurasi telah selesai kita lakukan. Langkah selanjutnya adalah melakukan test dari PC client untuk akses ke internet. Jika halaman web terbuka maka Proxy Server telah berhasil kita buat. Konfigurasi IP Address client bisa dilihat di bagian Network Topology artikel ini.

Langkah selanjutnya adalah membuat rules tambahan untuk mengontrol penggunaan internet. Baik itu blocking situs, bandwidth management, maupun rules lain. Seperti janji saya, artikel tentang ini akan saya terbitkan segera.

Jika menggunakan lebih dari 1 koneksi internet saya sarankan untuk membaca artikel saya tentang loadbalancing.

Setting IP Address pada Linux melalui Terminal Console (Debian)


Berikut ini adalah beberapa cara setting IP Address pada Linux. Cara ini saya terapkan pada distro Debian dan Ubuntu. Distro lain silakan menyesuaikan letak file konfigurasinya.

1. Setting Melalui Terminal CLI (Command Line Interface)

Setting melalui terminal CLI hanya bersifat sementara. Artinya setting ini akan hilang jika komputer di reboot. Syntaxnya adalah sebagai berikut:

ifconfig [nama_device] [ip_address] netmask [netmask]

Contoh:

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

Sedangkan untuk menambahkan gateway bisa menggunakan perintah berikut:

route add default gw [ip_gateway]

Contoh:

route add default gw 192.168.1.254

2. Mengubah Langsung File Konfigurasi

Letak file konfigurasi IP Address untuk Debian dan Ubuntu adalah di /etc/network/interfaces. Distro lain silakan menyesuaikan. Pada prinsipnya isi file-nya sama. Hanya letaknya saja yang berbeda (tergantung distro). Edit file tersebut dengan langkah sebagai berikut dengan menggunakan editor kesayangan Anda (Penulis lebih suka menggunakan editor vi atau vim. Artikel tentang bagaimana cara menggunakan editor vi atau vim Insya Allah akan segera saya terbitkan):

Pastikan Anda telah login sebagai root. Pada terminal console ketik perintah berikut:

vi /etc/network/interfaces

Pada layar akan muncul isi file tersebut. Tekan tombol insert atau i pada keyboard untuk mulai mengedit file. Edit sehingga sebagai berikut (sesuaikan dengan settingan yang diperlukan).

auto lo eth0

iface lo inet loopback

iface eth0 inet static

address 192.168.1.1

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.254

Setelah itu tekan tombol Esc pada keyboard lalu ketik “:wq” (tanpa tanda petik) untuk menyimpan konfigurasi dan keluar dari editor vi. Restart network untuk mendapatkan efek dengan mengetikkan perintah berikut pada terminal console:

/etc/init.d/networking restart

atau

/etc/init.d/networking force-reload

Untuk melihat hasil konfigurasi baik dengan cara pertama maupun cara kedua bisa menggunakan perintah berikut:

ifconfig [nama_device]

Contoh:

ifconfig eth0

Perhatikan baris kedua output dari perintah tersebut yaitu di bagian “inet addr”. Hasil konfigurasi Anda akan muncul di situ. Sedangkan untuk melihat settingan gateway yang telah Anda buat bisamenggunakan perintah berikut:

route -n

Perhatikan kolom Gateway. Baris paling bawah menunjukkan gateway hasil settingan Anda. Atau bisa juga dengan menggunakan perintah berikut:

ip route show

Bagian “default via” pada baris paling bawah output perintah di atas adalah hasil konfigurasi gateway yang telah Anda buat.

Sebenarnya masih ada beberapa langkah lagi untuk konfigurasi IP Address di Linux. Baik itu melalui GUI atau terminal console. Nantikan saja artikel selanjutnya tentang ini.

Melihat Statistik Interface (Bandwidth Monitor) pada Linux


Untuk melihat statistik interface  di OS linux bisa menggunakan ifstat. Install terlebih dahulu paketnya dengan perintah “apt-get install ifstat” pada distro Debian atau Ubuntu (distro lain menyesuaikan). Kemudian coba ketik perintah berikut:

#ifstat -b -t

Maka pada layar akan muncul statistik semua interface pada mesin dalam satuan kilobit (dengan opsi -b, defaultnya adalah dalam satuan kilobyte) yang disertai juga timestamp (dengan opsi -t). Untuk opsi lainnya bisa dilihat di manualnya dengan perintah sbb:

#man ifstat

Loadbalancing dengan 2 Modem Speedy


Berikut adalah konfigurasi loadbalancing di Linux (sudah dicoba di Debian Lenny dan berhasil) dengan 2 modem Speedy

Network Topology

+———–+ —> Modem Speedy 1 —>  +———–+
| Internet |                                                           | Gateway | —> LAN
+———–+ —> Modem Sppedy 2 —>  +———–+

Modem
Speedy 1

IP Address : 192.168.1.1
Netmask : 255.255.255.0

Speedy 2
IP Address : 192.168.2.1
Netmask : 255.255.255.0

Gateway
Eth0 (Connected to LAN)
IP Address : 192.168.0.1
Netmask : 255.255.255.0

Eth1 (Connected to Speedy 1)
IP Address : 192.168.1.2
Netmask : 255.255.255.0

Eth2 (Connected to Speedy 2)
IP Address : 192.168.2.2
Netmask : 255.255.255.0

Network Configuration

Edit file /etc/network/interfaces (distro lain menyesuaikan) dengan editor kesayangan Anda sbb:

auto lo eth0 eth1 eth2
iface lo inet loopback

iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0

iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0

iface eth3 inet static
address 192.168.2.2
netmask 255.255.255.0

Loadbalancing

Edit file /etc/iproute2/rt_tables. Tambahkan baris berikut di baris paling bawah:

201 speedy1
202 speedy2

Buat file /etc/loadbalancing sbb:

#!/bin/bash

T1=speedy1
IF1=eth1
IP1=192.168.1.2
GW1=192.168.1.1
NET1=192.168.1.0/24

T2=speedy2
IF2=eth2
IP2=192.168.2.2
GW2=192.168.2.1
NET2=192.168.2.0/24

ip route add $NET1 dev $IF1 src $IP1 table $T1
ip route add default via $GW1 table $T1
ip route add $NET2 dev $IF2 src $IP2 table $T2
ip route add default via $GW2 table $T2

ip route add $NET1 dev $IF1 src $IP1
ip route add $NET2 dev $IF2 src $IP2

ip rule add from $IP1 table $T1
ip rule add from $IP2 table $T2
ip route add default scope global nexthop via $GW1 dev $IF1 weight 1 nexthop via $GW2 dev $IF2 weight 1

iptables -t nat -A POSTROUTING -o $IF1 -j SNAT –to-source $IP1
iptables -t nat -A POSTROUTING -o $IF2 -j SNAT –to-source $IP2

Simpan file konfigurasi. Set permission agar file dapat di execute.

#chmod +x /etc/loadbalancing

Edit file /etc/rc.local. Tambahkan baris berikut sebelum baris “exit 0”. Tujuannya adalah agar script tadi dijalankan ketika reboot.

/etc/loadbalancing

Reboot mesin untuk mendapatkan efek.

#reboot

Coba akses internet dari LAN. Gunakan tool ifstat untuk melihat apakah konfigurasi loadbalancing berhasil atau tidak. Tool ifstat bisa diinstall dengan cara “apt-get install ifstat” pada Debian atau Ubuntu. Distro lain menyesuaikan.

Jika output command ifstat menunjukkan adanya traffic di interface eth1 dan eth2 maka konfigurasi loadbalancing berhasil. Selamat mencoba…