CLICK HERE FOR BLOGGER TEMPLATES AND MYSPACE LAYOUTS

Minggu, 29 Maret 2009

Mirotik

iBerdasarkan pengamatan, ada dua model topologi pada jaringan sederhana yang menggunakan mesin linux tambahan dengan squid untuk melakuka http cache. Tulisan ini bermaksud untuk memberikan alternatif topologi dengan memanfaatkan tproxy (A set of kernel patches reimplementing support for userspace transparent proxies).

Kedua model topologi yang umum digunakan adalah;

  1. Squid sejajar dengan klien dan intersepsi port http dilakukan dengan melakukan dst-nat ataupun /ip proxy parent dengan redirect port (Konfigurasi A).
  2. Squid berada setelah router dan menjadi router kedua yang melakukan intersepsi melalui iptables redirect (Konfigurasi B).

konfigurasi_a_squid.jpg

konfigurasi_b_squid.jpg

Kedua model ini memiliki kelemahan mendasar sebagai berikut (subyektif);
Hanya satu buah IP Address yang keluar dari Squid ketika menuju baik internet maupun router, karena telah dilakukan NAT, sebagai akibatnya;

  1. Bagi jaringan yang mengandalkan Mikrotik Router OS sebagai bandwidth shaper, request ke internet dari Squid sudah tidak dapat lagi di shape, sehingga otomatis akan memakan resource bandwidth yang tersisa (silahkan diteliti lebih lanjut), dan shaping akan dilakukan secara global oleh pihak ISP atau penyedia bandwidth.
  2. Bandwidth yang diberikan pada user (meskipun dijawab oleh proxy) sudah masuk ke dalam shape.
  3. Untuk yang menggunakan multiple gateway (misalnya memadukan koneksi internasional dari ADSL dan wireless), Squid hanya akan mengambil salah satu, bukan merupakan masalah apabila ADSL - Internasional, Wireless - IIX, tapi menjadi masalah apabila ruter melakukan load balancing, baik secara grup klien maupun berdasarkan session.

Cita-cita
Membangun Squid di dalam Linux Bridge (No additional configuration), menjadi sulit dilakukan karena Squid berjalan pada tatanan aplikasi dan otomatis memerlukan routing. Adapun menggunakan tutorial seperti yang terdapat pada http://freshmeat.net/articles/view/1433/ tidak mengatasi kedua kelemahan di atas karena tetap keluar dalam 1 IP Address. Mungkin untuk diterapkan pada jaringan warnet yang menggunakan sedikit subnet, misalnya 192.168.100.0/24, gateway dan shaping 192.168.100.1 (Mikrotik), dan Squid Cache pada 192.168.100.2 (interface bridge). Sementara cita-cita tersebut terpaksa dilupakan :D, silahkan infonya bagi yang telah berhasil melakukan percobaan. Ada satu tutorial lagi yang dapat dijadikan acuan mengenai penggunaan TProxy pada bridge;

Deskripsi Alternatif
Squid diletakkan sebagai gateway transisi antara klien dan ruter (Squid akan menjadi gateway bagi klien), Linux melakukan routing tanpa melakukan NAT, dan dengan menggunakan TProxy (melakukan patch pada Kernel dan IPTables) serta direktif tcp_outgoing_address pada squid, permintaan pada port 80 akan diteruskan ke ruter mikrotik yang melakukan shaping, NAT dan firewall. Dengan demikian, pada router Mikrotik akan ditambahkan static routing yang meneruskan jawaban dari Internet ke Proxy.

konfigurasi_alternatif_squi.jpg

Alur data (http) menjadi.

Klien (172.16.17.4) –> eth1(172.16.17.1) (intersepsi port 80) –> port 3128 (squid) dengan tcp_outgoing_address menggunakan 172.16.17.1 (gateway klien) —-> routing (tanpa NAT) –> Mikrotik (shaping + NAT) –> Router lain –> Internet –> Kembali ke Mikrotik –> Static Routing ke Gateway Squid –> Intersepsi port 80 –> User
Berikut Langkah secara umumnya;

1. Instalasi standar Linux, OS yang digunakan adalah Debian etch, Kernel 2.6.18
2. Melakukan patching kernel cttproxy
3. Melakukan patching userspace iptables TPROXY
4. Instalasi SQUID dari sourcenya, 2.6.STABLE14 dari Source
5. Konfigurasi SQUID
6. Melakukan Routing tanpa NAT dengan bantuan Firehol
7. Static Routing di Mikrotik Router

Disclaimer

  1. Sudah dites dalam network berjalan.
  2. Tulisan ini tidak menerangkan mengenai optimalisasi performa Squid
  3. Belum tentu benar (namanya juga percobaan), meskipun sudah dites.
  4. Yang paling penting, I’m a Linux and Networking N00bs.

Langkah secara lebih mendetil;

1. Instalasi standar Linux, OS yang digunakan adalah Debian etch, Kernel 2.6.18-4

Lakukan instalasi biasa (base), dapatkan ISO Debian Etch-netinstall di mirror-mirror lokal yang banyak terdapat, salah satunya,.Atur skema partisi HDD sesuai

selera anda, berikut skema partisi saya;

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 14G 1.2G 12G 9% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 48K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sda2 19G 278M 19G 2% /cache1
/dev/sda3 19G 278M 19G 2% /cache2
/dev/sda6 24G 223M 22G 1% /home

2. Melakukan Patching Kernel cttproxy

baca informasi untuk melakukan kompilasi kernel debian di howtoforge, saya menggunakan metoda pertama (Building A Kernel .deb Package) yang kurang lebih langkahnya sebagai berikut (mohon dimaafkan kalau ada kesalahan-kesalahan, karena kompilasi kernel saya lakukan 2 minggu yang lalu, untuk pastinya silahkan baca link di atas);

Instal paket-paket yang diperlukan untuk kompilasi kernel;

apt-get update
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Download source kernel, dalam hal ini tetap kernel yang sama, karena kompilasi kernel bukan untuk melakukan upgrade kernel;

cd /usr/src/
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.4.tar.gz
tar -xzvf linux-2.6.18.4.tar.gz
ln -s linux-2.6.18.4 linux

Download dan Apply patch dari cttproxy
Keterangan mengenai tata cara melakukan patching ada di dalam paket cttproxy

cd /usr/src/
wget http://www.balabit.com/downloads/files/tproxy/obsolete/linux-2.6/cttproxy-2.6.18-2.0.6.tar.gz
cd /usr/src/linux
for i in /patch_tree/0{1,2,3}*.diff; do cat $i | patch -p1; done

Lakukan kompilasi kernel, aktifkan conntrack, NAT dan TPROXY support (ada di dalam Netfilter Configuration)

make clean && make mrproper
cp /boot/config-`uname -r` ./.config

Anda akan masuk ke dalam menu kompilasi kernel, pilih Load an Alternate Configuration File dan pilih .config

Posisi di menuconfig
-> Networking
---> Networking support
-----> Networking options
-------> Network packet filtering
----------> IP: Netfilter Configuration

Setelah selesai mengaktifkan, ketika keluar dari menuconfig, jawab Yes terhadap pertanyaan Do you wish to save your new kernel configuration?

Build Kernel

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Tunggu agak lama, (kalau kasus saya sekitar satu jam atau lebih)

Install Kernel baru

cd /usr/src/
ls -l<

akan terlihat kedua file berikut;

linux-headers-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb
linux-image-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb

lakukan instalasi file deb tersebut;

dpkg -i linux-headers-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb
dpkg -i linux-image-2.6.18.4-custom_2.6.18.4-custom-10.00.Custom_i386.deb

konfigurasi GRUB bootloader di /boot/grub/menu.lst telah dimodifikasi secara otomatis, anda tinggal melakukan restart sistem, dan pilihan booting default menjadi kernel yang baru kita modifikasi.

shutdown -r now

3. Melakukan patching userspace iptables TPROXY

Ambil source iptables

cd /usr/src/
apt-get source iptables

patch iptables (informasi lengkap ada di README cttproxy)

cd /usr/src/iptables-1.3.6.0debian1
cat /iptables/iptables-1.3-cttproxy.diff | patch -p1
chmod +x extensions/.tproxy-test
make KERNELDIR=/usr/src/linux

buat paket debnya dan lakukan instalasi

cd /usr/src/iptables-1.3.6.0debian1
dpkg-buildpackage -b -rfakeroot
cd /usr/src/
dpkg -i iptables_1.3.6.0debian1-5_i386.deb

Masukkan rule TPROXY untuk melakukan intersepsi terhadap request http (port 80)

iptables -t tproxy -A PREROUTING -i eth1 -p tcp --dport 80 -j TPROXY --on-port 3128

Pada debian, letakkan perintah ini di /etc/rc.local agar terload ketika sistem di restart, asumsinya user terhubung melalui eth1 (interface Local).

4. Install Squid dari Source (Ambil binary Squid 2.6.STABLE14)

Paket squid yang digunakan adalah 2.6.STABLE14, ambil langsung source codenya dari situs squid-cache karena paket squid dari debian tidak mendukung tproxy.

http://packages.debian.org/changelogs/pool/main/s/squid/squid_2.6.5-6/changelog

squid (2.6.5-2) unstable; urgency=low
* debian/rules
- Remove mispelled configure option enablig TPROXY support
(TPROXY support is NOT enabled since it needs kernel patches which
are not in the kernel sources distributed by debian)

cd /usr/src/
wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE14.tar.gz
tar -xzvf squid-2.6.STABLE14.tar.gz

kompilasi dilakukan sama dengan kompilasi standard debian dengan tambahan opsi -enable-linux-tproxy, apabila ingin melihat standar kompilasi squid pada

debian silahkan instal terlebih dahulu squid dan jalankan dengan -v.

apt-get install squid
squid -v

Instal squid dari source, Jalankan perintah ./configure dalam satu baris.

cd /usr/src/squid-2.6.STABLE14/
./configure --prefix=/usr --exec_prefix=/usr --bindir=/usr/sbin --sbindir=/usr/sbin --libexecdir=/usr/lib/squid --sysconfdir=/etc/squid --localstatedir=/var/spool/squid --datadir=/usr/share/squid --enable-linux-netfilter --enable-storeio=ufs,aufs,diskd,null --enable-arp-acl --enable-removal-policies=lru,heap --enable-snmp --enable-delay-pools --enable-htcp --enable-poll --enable-cache-digests --enable-underscores --enable-referer-log --enable-useragent-log --enable-auth="basic,digest,ntlm" --enable-carp --enable-large-files --enable-linux-tproxy
make all
make install
cp /usr/src/linux/include/linux/netfilter_ipv4/ip_tproxy.h /usr/include/linux/netfilter_ipv4
cp /usr/include/linux/capability.h /usr/include/sys

5. Konfigurasi SQUID

Pada prinsipnya squid membutuhkan routing untuk meneruskan permintaan ke internet, routing akan tergantung pada aturan routing yang ada di linux anda, pada

contoh ini, apabila kita melihat table routing yang ada;

route
Destination Gateway Genmask Flags Metric Ref Use Iface
10.40.40.0 * 255.255.255.252 U 0 0 0 eth0
172.16.80.0 * 255.255.255.248 U 0 0 0 eth1
default 10.40.40.1 0.0.0.0 UG 0 0 0 eth0

Default gateway nya adalah 10.40.40.1, sehingga secara default semua paket yang diambil oleh squid untuk dilanjutkan ke internet akan menggunakan 10.40.40.1 sebagai routing ke internet. Yang diinginkan adalah agar ketika misalnya ada request dari user dengan IP Address 172.16.80.4 yang gatewaynya ke 172.16.80.1 (IP Address di eth1) ke internet pada port 80 (http), yang kemudian dialihkan ke port 3128 (squid) dengan menggunakan TPROXY iptables, squid akan melakukan binding dengan IP Address 172.16.80.1, yang apabila routingnya sudah diatur (lihat langkah no.6) akan diteruskan ke 10.40.40.1 dengan tetap membawa IP Address user 172.16.80.4 (iptables TPROXY).

Pada squid yang dibutuhkan adalah pengaktifan tproxy, dan memanfaatkan tcp_outgoing address berdasarkan acl src-address, berikut contoh file konfigurasi saya (sebagian). Silahkan eksplorasi lebih lanjut untuk konfigurasi performa squid.

http_port 3128 tproxy transparent

##ACLs###
acl client_3dnet_isplasa src 172.16.17.0/255.255.255.248
acl client_3dnet_alwy src 172.16.17.8/255.255.255.248
acl client_3dnet_anis src 172.16.17.16/255.255.255.248
acl client_3dnet_pkstebet src 172.16.17.24/255.255.255.248
acl client_3dnet_pkstebet2 src 172.16.17.32/255.255.255.248
acl client_sonny src 172.16.35.8/255.255.255.248
acl client_christ src 172.16.35.16/255.255.255.248
acl client_shandy src 172.16.35.24/255.255.255.248
acl client_tono src 172.16.35.32/255.255.255.248

##TCP_Outgoing_Address###
tcp_outgoing_address 172.16.17.1 client_3dnet_isplasa
tcp_outgoing_address 172.16.17.9 client_3dnet_alwy
tcp_outgoing_address 172.16.17.17 client_3dnet_anis
tcp_outgoing_address 172.16.17.25 client_3dnet_pkstebet
tcp_outgoing_address 172.16.17.33 client_3dnet_pkstebet2
tcp_outgoing_address 172.16.35.9 client_sonny
tcp_outgoing_address 172.16.35.17 client_christ
tcp_outgoing_address 172.16.35.25 client_shandy
tcp_outgoing_address 172.16.35.33 client_tono

##Default##
tcp_outgoing_address 10.40.40.2
server_persistent_connections off

Dengan demikian apabila request muncul dari IP Address 172.16.17.4, maka squid akan berjalan pada 172.16.17.1:3128, sehingga request diteruskan dengan tetap membawa IP Address user (172.16.17.4) ke Router Mikrotik yang terletak diatasnya. Pastikan bahwa IP Gateway user merupakan salah satu IP Address yang diassign ke eth1 (local), karena gateway user adalah ke Gateway Linux Squid.

6. Melakukan Routing tanpa NAT dengan bantuan Firehol

Pada umumnya, sebuah gateway akan melakukan NAT sebelumnya melanjutkan request ke internet, namun demikian dengan serangkaian rule iptables (mungkin bisa dengan pendekatan lain, sayangnya saya belum bisa), routing paket bisa diteruskan ke atas (Router Mikrotik), dan NAT akan dilakukan oleh Router Mikrotik.

Untuk melakukan hal ini saya menggunakan firehol yang keterangan dan konfigurasi lengkapnya bisa dilihat di http://firehol.sourceforge.net/, pada contoh ini saya hanya membuat agar firehol melakukan routing terhadap permintaan dari eth1 (local ke user) ke eth0 (public ke mikrotik), apabila dibaca lebih lanjut firehol sangat berguna untuk melakukan konfigurasi firewall apabila tugas firewall ke user ingin dilakukan oleh Linux.

Install Firehol
apt-get install firehol

Agar firehol berjalan ketika sistem di boot

nano /etc/default/firehol
#Rubah NO menjadi YES
START_FIREHOL=YES
#If you want to have firehol wait for an iface to be up add it here
WAIT_FOR_IFACE=”"

Konfigurasi standar

cat /etc/firehol/firehol.conf

version 5

interface eth0 tomt
policy accept

interface eth1 toclient
policy accept

## agar dari eth1 bisa melakukan routing ke eth0 ##
router localpublic inface eth1 outface eth0
route all accept

## agar dari eth0 bisa melakukan routing ke eth1 ##
router publiclocal inface eth0 outface eth1
route all accept

## agar paling tidak sesama user local dapat melakukan ping ##
router locallocal inface eth1 outface eth1
route all accept

Menjalankan firehol
/etc/init.d/firehol start

harap diperhatikan bahwa apabila anda melakukan restart pada service firehol, rule iptables yang ada di luar firehol akan hilang, dalam contoh ini adalah rule iptables TPROXY. Setelah anda selesai melakukan modifikasi konfigurasi firehol dan merestart firehol, jalankan kembali rule iptables di luar konfigurasi firehol.

7. Static Routing di Mikrotik Router

Agar Router mikrotik dapat mengetahui kemana paket permintaan dari user dibelakang squid diteruskan, harus dilakukan static routing ke Squid Gateway yang

berada di interface local mikrotik.

/ip route pr
..
A S 172.16.80.0/24 r 10.40.40.2 local
..

Apabila banyak subnet di belakang squid silahkan diarahkan satu persatu. Contoh di atas adalah saya memiliki beberapa user dengan blok ip address 172.16.80.0/29, 172.16.80.8/29 dst, di belakang Gateway Squid.

Tambahan, agar supaya Linux bisa berfungsi sebagai DNS, silahkan lakukan instalasi bind, dan pastikan di /etc/resolv.conf ada Name Server yang valid.

apt-get install bind
cat /etc/resolv.conf
nameserver 10.40.40.1




COMMAND MIKROTIK


MENGGANTI HOSTNAME

# SYSTEM IDENTITY SET NAME=…..

MENGAKTIFKAN NIC

# INTERFACE ETHERNET ENABLE ETHER 1

MEMBERI NAMA ETHER UNTUK KONFIGURASI

# INTERFACE ETHERNET SET ETHER1 NAME=WAN

MEMBERI IP ADDRESS PADA NIC

# IP ADDRESS ADD INTERFACE=(nama ether) ADDRESS=(ip anda/sm)

MEMBERI GATEWAY

# IP ROUTE ADD GATEWAY=…..

MEMBERI SETTING DNS

#IP DNS SET PRIMARY-DNS=….. SECONDARY-DNS=……

SETTING FIREWALL

# IP FIREWALL NAT ADD CHAIN=SRCNAT ACTION=MASQUERADE OUT-INTERFACE=WAN

SETTING DHCP SERVER

# IP DHCP-SERVER SETUP

DHP SERVER INTERFACE=

SETTING BANDWITDH MANAGEMENT

# queue simple add name={ nama }
target-addresses={ ip address yang dituju }
interface={ interface yang digunakan untuk melewati data}
max-limit={ out/in }

SETTING WEB PROXY

# IP PROXY SET ENABLE=YES PORT=(port yang digunakan) MAXIMAL-CLIENT-CONECTION=1000

MAXIMAL-SERVER-CONECTION=1000

# IP PROXY DIRECT ADD SRC-ADDRESS=(network yang akan di NAT) ACTION=ALLOW

SETTING FIREWALL UNTUK TRANSPARANT PROXY

# IP FIREWALL NAT ADD CHAIN=DSTNAT PROTOCOL=TCP ACTION=REDIRECT TO-PORT=(PORT POXY)

Cara Mudah menginstall Mikrotik


PDF Print E-mail

Untuk menginstall Mikrotik kita perlu mendownload ISO filenya dari mikrotik kemudian di-burn ke CD.

Setelah di burn ke CD, booting komputer menggunakan CD mikrotik dan tunggu sampai menu pilihan muncul seperti ini :

Install Mikrotik

Kita tinggal memilih paket-paket yang kita butuhkan dengan menekan tombol spasi. Paket-paket yang kita perlukan misalnya ppp, dhcp, advanced tools, hotspot, ntp, routing, security, telephony, ups, user manager, web-proxy. Untuk system harus dicentang karena kalau tidak salah-salah tidak nginstall mikrotik tapi nginstall windows... hahaha...

Setelah itu tekan huruf 'i' untuk mulai menginstall dan tunggu selama proses installasi. Setelah proses installasi selesai, maka komputer akan reboot sendiri. Lepas CD mikrotik dan biarkan komputer booting dari harddisk. Tunggu selama proses booting pertama ini sampai muncul halaman login seperti ini :

mikrotik login

Untuk bisa login, username yang kita pakai adalah 'admin' dan passwordnya kosong (langsung enter saja). Pada kondisi default, mikrotik yang baru terinstall tidak memiliki IP sehingga kita tidak bisa meremote ke Mikrotik. Untuk melakukan setting awal, gunakan perintah ini :

* interface print

gunanya untuk mengetahui interface yang aktif di mikrotik. Hasilnya kurang lebih akan seperti ini :

[ayom@Heliconia-RT/RW-net] > interface print
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME TYPE MTU
0 ether1 ether 1500
1 ether2 ether 1500
[ayom@Heliconia-RT/RW-net] >

Setelah itu kita bisa memberikan IP ke interface yang kita mau dengan cara :

* ip address add interface=ether1 address=192.168.1.254/24

maka interface ether1 sudah akan berisi IP 192.168.1.254/24. Dan mikrotik kita sudah bisa kita remote dari PC dengan menuliskan http://192.168.1.254 di web-browser (IE atau Firefox). Jika benar, akan muncul halaman layar seperti berikut :

Web Mikrotik

Silakan download WINBOX yang ada di sebelah kiri atas web ini untuk memudahkan kita melakukan remote mikrotik. Kalau sudah di-download, maka akan muncul program seperti berikut :

Winbox Login

Tekan tanda titik-titik yang ada disebelah kiri Connect untuk menemukan mac address atau IP address dari mikrotik yang baru saja kita install. Username yang dipakai masih sama yaitu admin dengan password masih kosong. Setelah itu, kita sudah akan melihat menu lengkap Mikrotik melalui Winbox seperti berikut ini :

Winbox

Setelah itu maka kita bisa dengan mudah mengisi dan mempelajari Mikrotik.

sumber:www.istanaku.biz