CLICK HERE FOR BLOGGER TEMPLATES AND MYSPACE LAYOUTS

Senin, 20 April 2009

TOPOLOGI MIKROTIK




Topologi

Menggunakan 3 etrernet card

ether1 ==> wireless
ether2 ==> speedy
ethet3 ==> Lan

mikrotik command:
/ip address add address 202.152.74.1/32 interface ether1
/ip address add address 192.168.1.2/32 interface ether2
/ip address add address 192.168.10.1/24 interface ether3

Membagi Ip menjadi 2 Group

add chain=prerouting action=mark-connection src-address 192.168.10.0/25 new-routing-mark= Group-A
add chain=prerouting action=mark-connection src-address 192.168.10.128/25 new-routing-mark=Group-B

Default gw masing-masing Group

Group-A=192.168.10.0/25 default gw 192.168.1.1

Group-B=192.168.10.128/25 default gw 202.152.74.128

mikrotik command:

/ip route add gateway=192.168.1.1 routing-mark=Group-A
/ip route add gateway=202.152.74.128 routing-mark=Group-B

Nat ip local

192.168.10.0/24 ==>masquerade

mikrotik command:
/ip firewall nat add chain=srcnat src-address 192.168.10.0/24 action=masquerade

Kamis, 02 April 2009

Trouble Shooting Jaringan

Tanpa kemampuan untuk memonitor jaringan, administrator hanya dapat bereaksi terhadap masalah pada waktu mereka muncul, bukannya lebih dulu mencegah masalah supaya tidak terjadi.

Menjalankan dan memelihara fungsi suatu jaringan bisa menjadi mimpi buruk jika Anda tidak mengetahui mana yang bekerja dengan baik dan mana yang tidak. Terutama jika jaringan tersebar lebih dari ratusan kilometer persegi, di mana beberapa perangkat hampir tidak mungkin diakses, misalnya stasiun cuaca dan webcam.

Monitoring Koneksi
Salah satu bentuk paling mendasar dari monitoring koneksi berlangsung tiap hari pada jaringan. Proses user login ke jaringan akan memastikan bahwa koneksi itu sedang bekerja dengan baik atau jika tidak bagian jaringan akan segera dihubungi. Namun, ini bukanlah cara yang paling baik atau efisien dalam memonitoring jaringan yang ada. Tersedia program-program sederhana yang bisa digunakan oleh administrator untuk membuat daftar alamat IP host dan secara periodik mem-ping alamat tersebut. Jika ada masalah koneksi, program akan memperingati administrator melalui output ping. Ini merupakan cara yang paling kuno dan tidak efisien, tetapi masih lebih baik dibanding tidak melakukan apa-apa sama sekali. Aspek lain dari cara monitoring seperti ini adalah ia hanya memberitahu bahwa di suatu tempat antara stasiun monitoring dan perangkat target ada gangguan komunikasi. Gangguan bisa jadi router, switch, bagian jaringan yang tidak baik, atau memang host-nya yang sedang down. Tes ping hanya mengatakan bahwa
koneksi down, tidak di mana itu down.

Memeriksa semua host pada WAN dengan menggunakan monitoring semacam ini membutuhkan banyak resources. Jika jaringan mempunyai 3000 host, mem-ping semua perangkat jaringan dan host memakan resource sistem yang sangat besar. Cara lebih baik adalah hanya mem-ping beberapa host, server, router, dan switch yang penting untuk memastikan konektivitas mereka. Tes ping tidak akan memberikan data yang sebenarnya kecuali jika workstation selalu dalam keadaan menyala. Sekali lagi, cara monitoring seperti ini sebaiknya digunakan jika tidak ada lagi cara lain yang tersedia.

Monitoring Traffic
Monitoring traffic merupakan cara monitoring jaringan yang jauh lebih canggih. Ia melihat traffic paket yang sebenarnya dan membuat laporan berdasarkan traffic jaringan tersebut. Program seperti Flukes Network Analyzer merupakan contoh software jenis ini. Program tersebut tidak hanya mendeteksi perangkat yang gagal, tetapi juga mendeteksi jika ada komponen yang muatannya berlebihan atau konfigurasinya kurang baik.

Kelemahan program jenis ini adalah mereka biasanya hanya melihat satu segmen pada satu waktu dan jika memerlukan data dari segmen lain, program harus dipindahkan ke segmen tersebut. Ini bisa diatasi dengan menggunakan agent pada segmen jaringan remote. Perangkat seperti switch dan router bisa membuat dan mengirimkan statistik traffic. Jadi, bagaimana data dikumpulkan dan diatur pada satu lokasi sentral supaya bisa digunakan oleh administrator jaringan? Jawabannya adalah: Simple Network Monitoring Protocol.

Simple Network Management Protocol
Simple Network Management Protocol (SNMP) adalah standar manajemen jaringan pada TCP/IP. Gagasan di balik SNMP adalah bagaimana supaya informasi yang dibutuhkan untuk manajemen jaringan bisa dikirim menggunakan TCP/IP. Protokol tersebut memungkinkan administrator jaringan untuk menggunakan perangkat jaringan khusus yang berhubungan dengan perangkat jaringan yang lain untuk mengumpulkan informasi dari mereka, dan mengatur bagaimana mereka beroperasi.

Ada dua jenis perangkat SNMP. Pertama adalah Managed Nodes yang merupakan node biasa pada jaringan yang telah dilengkapi dengan software supaya mereka dapat diatur menggunakan SNMP. Mereka biasanya adalah perangkat TCP/IP biasa; mereka juga kadang-kadang disebut managed devices. Kedua adalah Network Management Station (NMS) yang merupakan perangkat jaringan khusus yang menjalankan software tertentu supaya dapat mengatur managed nodes. Pada jaringan harus ada satu atau lebih NMS karena mereka adalah perangkat yang sebenarnya “menjalankan” SNMP.

Managed nodes bisa berupa perangkat jaringan apa saja yang dapat berkomunikasi menggunakan TCP/IP, sepanjang diprogram dengan software SNMP. SNMP didesain supaya host biasa dapat diatur, demikian juga dengan perangkat pintar seperti router, bridge, hubs, dan switch. Perangkat yang “tidak konvensional” juga bisa diatur sepanjang
mereka terhubung ke jaringan TCP/IP: printer, scanner, dan lain-lain.

Masing-masing perangkat dalam manajemen jaringan yang menggunakan SNMP menjalankan suatu software yang umumnya disebut SNMP entity. SNMP entity bertanggung jawab untuk mengimplementasikan semua beragam fungsi SNMP. Masing-masing entity terdiri dari dua komponen utama. Komponen SNMP entity pada suatu perangkat bergantung kepada apakah perangkat tersebut managed nodes atau network management station.

SNMP entity pada managed nodes terdiri atas SNMP Agent: yang merupakan program yang mengimplementasikan protokol SNMP dan memungkinkan managed nodes memberikan informasi kepada NMS dan menerima perintah darinya, dan SNMP Management Information Base (MIB): yang menentukan jenis informasi yang disimpan tentang node yang dapat dikumpulkan dan digunakan untuk mengontrol managed nodes. Informasi yang dikirim menggunakan SNMP merupakan objek dari MIB.

Pada jaringan yang lebih besar, NMS bisa saja terpisah dan merupakan komputer TCP/IP bertenaga besar yang didedikasikan untuk manajemen jaringan. Namun, adalah software yang sebenarnya membuat suatu perangkat menjadi NMS, sehingga suatu NMS bisa bukan hardware terpisah. Ia bisa berfungsi sebagai NMS dan juga melakukan fungsi lain. SNMP entity pada NMS terdiri dari SNMP Manager: yang merupakan program yang mengimplementasikan SNMP sehingga NMS dapat mengumpulkan informasi dari managed nodes dan mengirim perintah kepada mereka, dan SNMP Application: yang merupakan satu atau lebih aplikasi yang memungkinkan administrator jaringan untuk menggunakan SNMP dalam mengatur jaringan.

Dengan demikian, secara keseluruhan SNMP terdiri dari sejumlah NMS yang berhubungan dengan perangkat TCP/IP biasa yang disebut managed nodes. SNMP manager pada NMS dan SNMP agent pada managed nodes mengimplementasikan SNMP dan memungkinkan informasi manajemen jaringan dikirim. SNMP application berjalan pada NMS dan menyediakan interface untuk administrator, dan memungkinkan informasi dikumpulkan dari MIB pada masing-masing SNMP agent.

Remote Monitoring (RMON)
Model umum yang digunakan SNMP adalah adanya network management station (NMS) yang mengirim request kepada SNMP agent. SNMP Agent juga bisa melakukan komunikasi dengan mengirim pesan trap untuk memberitahu management station ketika terjadi suatu event tertentu. Model ini bekerja dengan baik, yang mana inilah mengapa SNMP menjadi sangat populer. Namun, satu masalah mendasar dari protokol dan model yang digunakan adalah bahwa ia diorientasikan pada komunikasi dari SNMP agent yang biasanya perangkat TCP/IP seperti host dan router. Jumlah informasi yang dikumpulkan oleh perangkat ini biasanya terbatas, karena sudah pasti host dan router mempunyai “tugas sebenarnya yang harus dilakukan”—yaitu melakukan tugas sebagai host dan router. Mereka tidak bisa mendedikasikan diri mereka untuk melakukan tugas manajemen jaringan.

Oleh karena itu, pada situasi di mana dibutuhkan informasi jaringan yang lebih banyak dibanding yang dikumpulkan oleh perangkat biasa, administrator sering kali menggunakan hardware khusus bernama network analyzer, monitor, atau probe. Mereka hanya mengumpulkan statistik dan memantau event yang diinginkan oleh administrator. Jelas akan sangat berguna jika perangkat tersebut dapat menggunakan SNMP supaya informasi yang mereka kumpulkan bisa diterima, dan membiarkan mereka mengeluarkan pesan trap ketika ada sesuatu yang penting.

Untuk melakukan itu, dibuatlah Remote Network Monitoring (RMON). RMON sering kali disebut sebagai protokol, dan Anda kadang-kadang akan melihat SNMP dan RMON disebut sebagai “protokol manajemen jaringan TCP/IP”. Namun, RMON sama sekali bukan protocol yang terpisah—ia tidak melakukan operasional protokol. RMON sebenarnya adalah bagian dari SNMP, dan RMON hanya suatu modul management information base (MIB) yang menentukan objek MIB yang digunakan oleh probe. Secara arsitektur, RMON hanyalah salah satu modul MIB yang menjadi bagian dari SNMP.

Metode Troubleshooting
Troubleshooting jaringan merupakan proses sistematis yang diaplikasikan untuk memecahkan masalah pada jaringan. Teknik Eliminasi dan Divide and Conquer merupakan metode paling berhasil untuk troubleshooting jaringan.

Eliminasi
User pada jaringan Anda menelepon help desk untuk memberitahukan bahwa komputer mereka tidak bisa lagi ke Internet. Help desk mengisi form error report dan memberikannya kepada Anda, bagian network support. Anda menelepon dan berbicara kepada user dan mereka mengatakan bahwa mereka tidak melakukan apapun yang berbeda selain yang selalu mereka lakukan untuk ke Internet. Anda mengecek log dan menemukan bahwa komputer user telah di-upgrade semalam. Solusi Anda yang pertama adalah bahwa driver jaringan komputer tersebut pasti konfigurasinya salah. Anda pergi ke komputer tersebut dan mengecek konfigurasi jaringannya. Tampaknya sudah benar, sehingga Anda mem-ping server. Tidak terhubung. Solusi berikutnya adalah mengecek apakah kabel komputer tersambung. Anda periksa kedua ujung kabel dan kemudian mencoba mem-ping server kembali.

Selanjutnya Anda ping 127.0.0.1, alamat loopback komputer. Ping berhasil, sehingga ini mengeliminasi kemungkinan adanya masalah antara komputer, konfigurasi driver, dan kartu NIC. Anda kemudian memutuskan bahwa mungkin ada masalah dengan server untuk segmen jaringan tersebut.

Ada komputer lain yang terhubung ke jaringan di meja sebelahnya, maka Anda mem-ping alamat server dan hasilnya sukses. Ini mengeliminasi server, backbone, dan koneksi server ke backbone sebagai masalah.

Anda kemudian pergi ke IDF (intermediate distribution facilities) dan memindahkan port workstation, kembali ke workstation dan mencoba mem-ping server lagi. Namun, solusi tidak bekerja. Ini memperluas pencarian Anda sampai pemasangan kabel atau patch kabel
workstation. Anda kembali ke IDF, mengembalikan kabel ke port asal, mencari patch kabel worksation baru dan kembali ke worksation. Ganti kabel workstation, dan mencoba mem-ping server lagi. Kali ini berhasil, maka Anda sudah memperbaiki masalah itu. Langkah terakhir adalah mendokumentasikan solusi masalah.

Divide and Conquer
Misalkan Anda mempunyai dua jaringan yang bekerja dengan baik, tetapi ketika keduanya dihubungkan jaringan gagal. Langkah pertama adalah membagi jaringan kembali menjadi dua jarigan terpisah dan memverifikasi bahwa keduanya masih beroperasi dengan benar ketika dipisahkan. Jika ya, pindahkan semua segmen ke jaringan yang lain. Periksa apakah masih bekerja dengan benar.

Jika jaringan masih berfungsi, masukkan masing-masing segmen sampai seluruh jaringan gagal. Hilangkan koneksi terakhir yang ditambahkan dan lihat apakah seluruh jaringan kembali beroperasi normal. Jika ya, lepaskan semua perangkat dari segmen tersebut dan masukkan mereka satu per satu, kemudian periksa lagi kapan jaringan gagal. Pada waktu Anda menemukan perangkat yang mencurigakan, lepaskan dan periksa apakah jaringan kembali normal. Jika jaringan masih berfungsi normal, berarti Anda telah menemukan perangkat yang menjadi penyebab masalah.

Sekarang Anda bisa menganalisis perangkat tersebut untuk mengetahui mengapa ia bisa menyebabkan seluruh jaringan crash. Jika tidak ada apapun yang salah, mungkin saja perangkat tersebut terhubung dengan perangkat yang bermasalah pada jaringan sebelah. Untuk mencari ujung lain permasalahan, Anda harus mengulangi proses yang dilakukan sebelumnya.

Prosesnya adalah sebagai berikut: pertama sambungkan lagi perangkat yang menyebabkan jaringan gagal. Kemudian lepaskan semua segmen pada jaringan yang satunya. Periksa apakah jaringan kembali beroperasi. Jika jaringan berfungsi lagi, masukkan kembali segmen sampai seluruh jaringan gagal. Lepaskan segmen terakhir yang dimasukkan sebelum kegagalan dan lihat apakah seluruh jaringan kembali beroperasi normal. Jika ya, lepaskan semua perangkat dari segmen tersebut dan masukkan mereka satu per satu, periksa lagi untuk melihat kapan jaringan gagal. Ketika Anda menemukan perangkat yang mencurigakan, lepas dan periksa apakah jaringan kembali normal.

Jika jaringan masih berfungsi secara normal, itu berarti Anda telah menemukan perangkat penyebab masalah. Sekarang Anda bisa menganalisis perangkat tersebut untuk mengetahui mengapa ia bisa menyebabkan seluruh jaringan crash. Jika tidak ada apapun yang salah, bandingkan kedua host cari tahu penyebab mereka konflik. Dengan memecahkan konflik ini, Anda akan bisa menghubungkan kembali kedua perangkat ke dalam jaringan dan akan berfungsi secara normal.

Tool Software
Bersama dengan proses yang diuraikan sebelumnya, ada tool software bagi administrator jaringan yang dapat digunakan untuk mengatasi masalah konektivitas jaringan. Tool ini dapat membantu dalam troubleshooting Local Area Network, tetapi terutama pada Wide Area Network. Kita akan lihat perintah yang tersedia pada sebagian besar software client. Perintah ini meliputi

Ping, Tracert (traceroute), Telnet, Netstat, ARP, dan Ipconfig (WinIPcfg)

Ping
Memverifikasi koneksi ke komputer lain dengan mengirim pesan Internet Control Message Protocol (ICMP) Echo Request. Tanda terima berupa pesan Echo Reply akan ditampilkan, bersama dengan waktu pulang-pergi.

Ping merupakan perintah utama TCP/IP yang digunakan untuk men-troubleshoot konektivitas, jangkauan, dan resolusi nama. Syntax ping adalah: ping [-t] [-a] [-n Count] [-l Size] [-f] [-i TTL] [-v TOS] [-r Count] [-s Count] [{-j HostList | -k HostList}] [-wTimeout] [TargetName].

Tracert (Traceroute)
Menunjukkan rute yang dilewati paket untuk mencapai tujuannya. Ini dilakukan dengan mengirim pesan Internet Control Message Protocol (ICMP) Echo Request ke tujuan dengan nilai Time to Live yang semakin meningkat. Rute yang ditampilkan adalah daftar interface router (yang paling dekat dengan host) yang terdapat pada jalur antara host dan
tujuan. Syntax tracert adalah: tracert [-d] [-h MaximumHops] [-j HostList] [-wTimeout] [TargetName].

Telnet
Telnet Client dan Telnet Server bekerja sama supaya user dapat berkomunikasi dengan komputer remote. Telnet Client memungkinkan user untuk menghubungi komputer remote dan berinteraksi dengan komputer tersebut melalui jendela terminal. Telnet Server memungkinkan user Telnet Client untuk masuk ke dalam komputer yang menjalankan Telnet Server dan menjalankan aplikasi pada komputer tersebut. Telnet Server berfungsi sebagai gateway yang digunakan Telnet client untuk berkomunikasi. Telnet cocok untuk testing login ke remote host. Syntax telnet adalah: telnet [\\RemoteServer].

Netstat
Menampilkan koneksi TCP yang aktif, port yang didengarkan komputer, statistik Ethernet, tabel routing IP, statistik IPv4 (protokol IP, ICMP, TCP, dan UDP), dan statistik IPv6 (protokol IPv6, ICMPv6, TCP over IPv6, dan UDP over IPv6). Syntax netstat adalah: netstat [-a] [-e] [-n] [-o] [-p Protocol] [-r] [-s] [Interval].

ARP
Menampilkan dan mengubah entri pada cache Address Resolution Protocol (ARP), yang berisi satu atau beberapa tabel yang digunakan untuk menyimpan alamat IP dan alamat fisik Ethernet dan Token Ring dari alamat IP yang bersangkutan. Masing-masing kartu jaringan Ethernet atau Token Ring yang terinstalasi pada komputer Anda mempunyai tabel terpisah. Syntax arp adalah: arp [-a [InetAddr] [-NIfaceAddr]] [-g [InetAddr] [-

N
IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]].

Ipconfig(Winipcfg)
Menampilkan semua konfigurasi jaringan TCP/IP dan memperbarui setting Dynamic Host Configuration Protocol (DHCP) dan Domain Name System (DNS). Digunakan tanpa parameter, ipconfig menampilkan alamat IP, subnet mask, dan gateway default untuk semua kartu jaringan. Ipconfig merupakan commandline yang ekivalen dengan winipcfg yang terdapat pada Windows MilleniumEdition, Windows 98, dan Windows 95. Meskipun Windows XP tidak menyertakan utiliti grafis yang ekivalen dengan winipcfg, Anda bisa menggunakan Network Connections untuk melihat dan memperbarui alamat IP. Syntax ipconfig adalah: ipconfig [/all] [/renew[Adapter]] [/release [Adapter]] [/flushdns] [/displaydns] [/registerdns] [/showclassid Adapter] [/setclassid Adapter [ClassID]].

TOOL SNMP
Banyak tool manajemen jaringan yang menggunakan SNMP untuk mengumpulkan informasi dan statistik jaringan. Beberapa di antaranya adalah:

· SNMP Graph—Mengumpulkan data dan membuat grafik secara real-time.

· SNMP Sweep—Melakukan pencarian SNMP dalam waktu singkat pada setiap segmen jaringan.

· IP Network Browser—Melakukan pencarian yang komprehensif terhadap berbagai data jaringan.

· SNMP Brute Force Attack—Menyerang suatu alamat IP dengan query SNMP untuk mencoba dan mengetahui community string read-only dan read-write.

· SNMP Dictionary Attack—Menggunakan kamus para hacker untuk menyerang perangkat jaringan.

· Network Sonar—Melakukan pencarian jaringan dan menyimpan hasilnya dalam
database.

TIP

Troubleshooting Jaringan

1. Identifikasi masalah jaringan/user.
2. Kumpulkan data tentang masalah jaringan/user.
3. Analisis data untuk mencari solusi masalah.
4. Impementasi solusi untuk memperbaiki sistem.
5. Jika masalah tidak terselesaikan, batalkan perubahan dan modifikasi data yang dilakukan sebelumnya.
6. Kembali ke langkah 3

Setting for Transparant proxy


Fo next articel i explain to setting transparant web proxy server

1. first se t web proxy
/ ip web-proxy
set enabled=yes –>> to make ip web proxy enable
set src-address=0.0.0.0 –>> to make source address to access web proxy will allow
set port=8080 –>> to make port for web proxy
set hostname=”proxy.war.net.id” –>> setting for visble hostname web proxy
set transparent-proxy=yes –>> make transparant proxy enable
set parent-proxy=0.0.0.0:0–>> if we used parent proxy x
set cache-administrator=”support@somethink.org” –>> make set administrator info support
set max-object-size=4096KiB –>> maximal object can cacth with the proxy server
set cache-drive=system –>> where drive position that cache wil be saved
set max-cache-size=unlimited –>> maximal harddrive we used for cache
set max-ram-cache-size=unlimited –>> maximal ram we used for cache

2. add nat for redirect port for squid to make transparant

/ip firewall nat add chain=dstnat protocol=tcp dst-port=80 action=redirect to-ports=8080 –>> setting can redirect port 80 to 8080 for proxy server
/ip firewall nat add chain=dstnat protocol=tcp dst-port=3128 action=redirect to-ports=8080 –>> setting can redirect port 3128 to 8080 for proxy server
/ip firewall nat add chain=dstnat protocol=tcp dst-port=8080 action=redirect to-ports=8080 –>> setting can redirect port 8080 to 8080 for proxy server

setting mikrotik

Konfigurasi User

Setelah reboot kita bisa login. Gunakan nama : ADMIN dengan password : . Setelah masuk kita buat User Baru untuk menggantikan user admin.

[admin@mikrotik] > user add
Name : [isi nama user]
Group : full

Pilihan Group yang ada

· full untuk admin

· read untuk guest

Selanjutnya membuat password :

[admin@mikrotik] > user print

Akan tercetak daftar user

[admin@mikrotik] > user edit
number : 1 [ sesuai nomor urut user anda]
value-name : pass

ketikkan password anda, kemudian tekan ctrl+O kemudian disable user admin.

[admin@mikrotik] > user disable admin

untuk memeriksa apakah sudah disable ketik

[admin@mikrotik] >user pr

Jika user admin terdapat tanda X disebelah kiri maka sudah ter-disable.

Konfigurasi Interface

Selanjutnya, kita set interface :

Pertama kita check dulu interface terpasang.

[admin@mikrotik] > interface print

Untuk memudahkan dalam konfigurasi kita berikan nama unik untuk interface2 yg kita gunakan.

[admin@mikrotik] > interface edit
Number : 1
Value name : name

Ganti ether2 dengan eth2-lokal [ ini untuk interface ke local client 192.168.0.0/16]

Tekan Ctrl+O

kemudian lakukan langkah yg sama untuk ether3 dan 4 dengan nama eth3-ADSL [ke ADSL] dan eth4-servers[ke switch PC server].

Kemudian buat satu interface bridge baru [sebagai bridge IP public]

/interface bridge add name=serverbridge disabled=no
/interface bridge port add interface=eth3-ADSL bridge=serverbridge
/interface bridge port add interface=eth4-servers bridge=serverbridge

Melihat interface pada Mikrotik Router
/interface print

Pemberian IP Address

Ip address kita berikan pada interface gateway local dan bridge. Pemberian ip pada bridge interface tidak mutlak, pemberian ip ini hanya untukmemudahkan remote access dari luar.

/ip address print
/ip address add address=172.168.0.3/40 interface=serverbridge
disabled=no
/ip address print
/ip address add address=192.168.0.254/16 interface=eth2-lokal
disabled=no
/ip address print

Selanjutnya kita setting default gateway kita.

/ip route add gateway=172.168.0.3
/ip route print

Kemudian kita test ping ke gateway

/ping 222.124.23.41

Melihat konfigurasi IP address yang sudah kita berikan
/ip address print

Melihat Tabel routing pada Mikrotik Routers
/ip route print

Konfigurasi NAT (Network Address Translation)

NAT berfungsi untuk meneruskan paket dari ip local ke ip public (fungsi gateway router)

/ip firewall nat add chain=srcnat action=src-nat
to-addresses=172.168.0.3 to-ports=0-65535
out-interface=serverbridge disabled=no
/ip firewall nat add chain=dstnat action=dst-nat
to-addresses=172.168.0.6 to-addresses=172.168.0.6
to-addresses=172.168.0.6 to-ports=2011 dst-port=80
in-interface=eth2-local disabled=no

Melihat konfigurasi Masquerading
/ip firewall nat print

Setting DNS

/ip dns set primary-dns=172.168.0.6 allow-remoterequests=yes
/ip dns set secondary-dns=202.134.1.10 allow-remoterequests=yes
/ip dns print

Melihat konfigurasi DNS
/ ip dns print

Kasus Management Bandwidth dengan Mikrotik BGP Web-Proxy


Sejak saya menulis artikel tentang memisahkan bandwidth Intenational dan IIX/NICE sangat banyak sekali pertanyaan baik melalui email maupun chatting.

Sebenarnya Pak Valens Riyadi @ www.mikrotik.co.id sudah membuat beberapa artikel yang sangat baik, tetapi saya coba untuk memberikan contoh kasus yang saya impelementasi di LAN kantor PT. Data Utama Dinamika Jakarta agar para pembaca dapat lebih jelas lagi bagaimana caranya memisahkan traffic International dengan IIX/NICE menggunakan Mikrotik yang menjalankan BGP dan Web-Proxy.

Adapun diagram jaringannya dapat dilihat pada gambar 1. dibawah ini.

Image

Gambar 1. Diagram Jaringan Kantor PT. Data Utama Dinamika Jakarta


Kondisi jaringan adalah sbb:

  1. Router Kantor menggunakan 3 ethernet card dijalankan pada PC Pentium 4 2660Mhz, Memory 256MB, DOM 128MB.
  2. Klient menggunakan IP Private sehingga diperlukan mekanisme NAT / Masquerade
  3. Router kantor menerima prefix/routing table dari NICE/OpenIXP (NICE/OpenIXP adalah alternatif IIX yang dikelola PT. IDC) menggunakan mekanisme BGP Peering.
  4. Mikrotik RouterOS menggunakan Vesi 2.9.41 dan mengaktifkan paket routing-test, sesuai petunjuk dari Valens Riyadi @ www.mikrotik.co.id.

Image

Gambar 2. Resources Mikrotik Router Kantor

Image

Gambar 3. Packet List

Konfigurasi IP

Image

Gambar 4. Konfigurasi IP Router Kantor


Konfigurasi NAT/Masqurade LAN 192.168.2.0/24

Image

Gambar 5. Konfigurasi NAT General

Image

Gambar 6. Konfigurasi NAT Action


Konfigurasi BGP Peer

Image

Gambar 7. BGP Instance Mikrotik2BGP


Image

Gambar 8. BGP Peer Mikrotik2BGP

Image

Gambar 9. BGP Instance Mikrotik3BGP


Image

Gambar 10. BGP Peer Mikrotik3BGP

AS Number 65003 dan 65004 adalah private AS Number hanya digunakan utk peering internal antar Mikrotik2BGP dengan Mikrotik3BGP


Konfigurasi Routing Filter

Konfigurasi routing filter ini bertujuan agar Mikrotik hanya menerima supernet dengan prefix-length=8-24 bit sehingga lebih menghemat memory penyimpanan prefix/routing table dari NICE/OpenIXP/IIX.

[datautama@router-02-jkt] > /routing filter print

Flags: X - disabled

0 chain=prefix-in prefix-length=0-7 invert-match=no action=discard

1 chain=prefix-in prefix-length=8-24 invert-match=no action=accept

set-nexthop=203.89.26.65

2 chain=prefix-in prefix-length=25-32 invert-match=no action=discard

3 chain=prefix-out prefix-length=0-32 invert-match=no action=discard

BGP Peer Status

Image

Gambar 11. BGP Peer Status

Jika BGP Peering sudah terbentuk maka Mikrotik3BGP menerima prefix-count=2939, dimana jumlah prefix ini akan berubah-rubah secara dinamis tergantung perkembangan BGP advertise dari ISP/NAP atau pengelola jaringan lainnya.


Route List

Image

Gambar 12. Route List

Pada Gambar 12, bisa dilihat routing table dari BGP yang ditandai dengan DAB, sedangkan routing statis ditandai dengan AS.

Dalam sistem routing memiliki aturan main: ”routing spesifik akan dibaca terlebih dahulu”. Dengan demikian maka table routing dari NICE/OpenIXP/IIX yang lebih spesifik akan dibaca dahulu dan jika network yang dicari tidak diketemukan maka paket akan melalui default route yang ditandai dengan ”destination=0.0.0.0/0 gateway=203.89.24.65” ini artinya paket data yang menuju International akan melalui gateway=203.89.24.65 dengan Interface=ether1-intl sedangkan traffic data yang menuju NICE/OpenIXP/IIX akan melalui gateway=203.89.2.6.65 dengan Interface=vlan-id-23-iix, dalam contoh kasus ini kebetulan menggunakan VLAN yang dijalankan pada interface ether2-iix. Sebenarnya tidak harus menggunakan vlan, ether2 juga cukup syaratnya adalah antara traffic NICE/OpenIXP/IIX dan traffic International harus melalui dua Interface yang berbeda karena ini ada hubungannya dengan proses mangle dan limitasi bandwidth antara traffic lokal dengan traffic international.


Hasil Traceroute

Image

Gambar 13. Traceroute ke www.yahoo.com

Image

Gambar 14. Traceroute ke www.plasa.com

Dari hasil traceroute antara Gambar 13 dan Gambar 14 bisa dilihat perbedaan hop1 dimana utk traffic international melalui 203.89.24.65 menggunakan interface ether1-intl dan traffic lokal melalui 203.89.26.65 menggunakan interface vlan-id-23-iix

Konfigurasi Tanpa BGP

Jika ternyata ISP Anda tidak dapat memberikan layanan BGP maka Anda dapat mendownload skrip berikut dari http://www.datautama.net.id/harijanto/mikrotik/datautama-nice-statik.php

Copy skrip diatas lalu lakukan koneksi ssh ke mikrotik menggunakan aplikasi putty.exe lalu paste kan skrip tersebut maka akan dihasilkan daftar rules pada /ip route rules.

Kemudian tambahkan statik routing berikut :

/ip route add dst-address=0.0.0.0/0 gateway=[ip gateway iix/nice] routing-mark=nice

Dalam contoh ini ip gateway/nice adalah = 203.89.26.65 sehingga statik routingnya adalah sbb:

/ip route add dst-address=0.0.0.0/0 gateway=203.89.26.65 routing-mark=nice

Dengan demikian maka routing dari dalam menuju ke alamat IP IIX/NICE akan diarahkan melalui gateway 203.89.26.65 hasilnya akan sama saja dengan menggunakan BGP, bedanya kalau menggunakan BGP routing dihasilkan secara dynamic sedangkan dengan cara ini bersifat statik. Tetapi ISP Anda harus memberikan dua ip point-to-point agar Anda memiliki dua gateway dan masing-masing ip tersebut tetap harus dipisahkan interface/ethernet-nya.


Pengaturan Bandwidth

Sesuai dengan petunjuk dari Valens Riyadi @ www.mikrotik.co.id karena network klien menggunakan IP Private, maka perlu melakukan connection tracking pada mangle.

Image

Gambar 15. Connection Tracking

Selanjutnya untuk masing-masing trafik, lokal dan internasional dibuatkan rule mangle connection pada untuk masing-masing IP komputer yang akan di atur bandwidthnya.


Konfigurasi Mangle

Mangle adalah proses menandai paket data sesuai dengan kebijakan yang diinginkan, sebenarnya teknik mangle ini sudah biasa juga dilakukan di linux dengan mengunakan iptables, di mikrotik proses mangle lebih mudah dan menyenangkan. Untuk contoh kasus ini contoh skrip manglenya adalah sbb:

# may/16/2007 17:23:13 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ ip firewall mangle

#1

add chain=forward out-interface=ether1-intl src-address=192.168.2.12 \

action=mark-connection \

new-connection-mark=harijanto-conn-intl passthrough=yes comment="" \

disabled=no

#2

add chain=forward out-interface=vlan-id-23-iix src-address=192.168.2.12 \

action=mark-connection new-connection-mark=harijanto-conn-nice \

passthrough=yes comment="" disabled=no

#3

add chain=output dst-address=192.168.2.12 action=mark-packet \

new-packet-mark=harijanto-packet-intl passthrough=yes comment="" \

disabled=no

#4

add chain=forward connection-mark=harijanto-conn-intl action=mark-packet \

new-packet-mark=harijanto-packet-intl passthrough=yes comment="" \

disabled=no

#5

add chain=forward connection-mark=harijanto-conn-nice action=mark-packet \

new-packet-mark=harijanto-packet-nice passthrough=yes comment="" \

disabled=no

#6

add chain=forward out-interface=ether1-intl src-address=192.168.2.119 \

action=mark-connection new-connection-mark=christine-conn-intl \

passthrough=yes comment="" disabled=no

#7

add chain=forward out-interface=vlan-id-23-iix src-address=192.168.2.119 \

action=mark-connection new-connection-mark=christine-conn-nice \

passthrough=yes comment="" disabled=no

#8

add chain=output dst-address=192.168.2.119 action=mark-packet \

new-packet-mark=christine-packet-intl passthrough=yes comment="" \

disabled=no

#9

add chain=forward connection-mark=christine-conn-intl action=mark-packet \

new-packet-mark=christine-packet-intl passthrough=yes comment="" \

disabled=no

#10

add chain=forward connection-mark=christine-conn-nice action=mark-packet \

new-packet-mark=christine-packet-nice passthrough=yes comment="" \

disabled=no

mangle dibuat satu persatu untuk semua komputer yang akan di manage bandwidthnya

Penjelasan mangle

Proses mangle biasanya diawali dengan new-connection-mark yang kemudian dilanjutkan dengan new-packet-mark, jadi di mark koneksinya dulu baru di mark paketnya, nah paket ini yang akan digunakan di queue-tree maupun di simple queue.

Mangle no #1,#3,dan #4 adalah proses mangle traffic international untuk komputer IP 192.168.2.12.

Mangle no #2 dan #5 adalah proses mangle traffic lokal untuk komputer IP 192.168.2.12

Pada mangle no #3 digunakan chain=output karena ini tujuannya untuk menandai paket dari Web-Proxy yang dijalankan di Mikrotik3BGP ke komputer IP 192.168.2.12, salah satu pertanyaan yang sering diutarakan adalah bagaimana melakukan limitasi bandwidth kalau pakai proxy karena biasanya jika menggunakan proxy limitasi per komputer jadi tidak efektif, nah hasil dari meditasi sampai jam 4 subuh adalah harus melakukan mangle pada chain=output karena klient mendapatkan isi website dari proxy yang di jalankan di Mikrotik itu sendiri, lebih jelasnya nanti akan dijabarkan pada bagian Web-Proxy.

Sedangkan No #6 sd #10 adalah identik dengan no #1 sd #5 bedanya adalah sumber IP komputer yang di mangle.

Hasil dari skrip diatas adalah seperti pada gambar 16 berikut

Image

Gambar 16. Hasil Mangle

Salah satu kunci efektif tidaknya proses mangle adalah pemilihan “chain”, penjelasannya ada pada dokumentasi “Packet Flow” yang bisa dibaca dari situs http://www.mikrotik.com/testdocs/ros/2.9/ip/flow.php

Pengaturan Bandwidth menggunakan Queue Tree

Untuk melakukan limitas yang efektif dapat digunakan queue-tree, pada dokumen http://www.mikrotik.com/testdocs/ros/2.9/root/queue.php

Dijelaskan bahwa

The queuing is applied on packets leaving the router through a real interface (i.e., the queues are applied on the outgoing interface, regarding the traffic flow), or any of the 3 additional virtual interfaces (global-in, global-out, global-total).

Artinya proses queuing diaplikasikan pada saat paket keluar dari router melalui interface fisik atau interface virtual.

Oleh karena itu pada queue tree didefinisikan bahwa utk traffic download berarti traffic yang keluar dari ether3-client , artinya dari router menuju ke komputer klient sedangkan upload adalah traffic dari ether1-intl atau vlan-id-23-iix yang mana masing-masing interface dilewati oleh paket yang berbeda, ether1-intl untuk traffic international dan vlan-id-23-iix untuk traffic lokal, oleh karena itu harus memiliki interfacenya masing-masing.


Berikut adalah contoh skrip queue tree yang digunakan

# may/16/2007 19:31:00 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ queue tree

#1

add name="harijanto-intl-down" parent=ether3-client \

packet-mark=harijanto-packet-intl limit-at=0 queue=default priority=8 \

max-limit=128000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#2

add name="harijanto-intl-up" parent=ether1-intl \

packet-mark=harijanto-packet-intl limit-at=0 queue=default priority=8 \

max-limit=128000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#3

add name="harijanto-nice-up" parent=vlan-id-23-iix \

packet-mark=harijanto-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#4

add name="harijanto-nice-down" parent=ether3-client \

packet-mark=harijanto-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#5

add name="christine-intl-down" parent=ether3-client \

packet-mark=christine-packet-intl limit-at=64000 queue=default priority=8 \

max-limit=256000 burst-limit=512000 burst-threshold=128000 burst-time=20m \

disabled=no

#6

add name="christine-intl-up" parent=ether1-intl \

packet-mark=christine-packet-intl limit-at=64000 queue=default priority=8 \

max-limit=128000 burst-limit=256000 burst-threshold=96000 burst-time=20m \

disabled=no

#7

add name="christine-nice-down" parent=ether3-client \

packet-mark=christine-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

#8

add name="christine-nice-up" parent=vlan-id-23-iix \

packet-mark=christine-packet-nice limit-at=0 queue=default priority=8 \

max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

Penjelasan

#1 adalah pengaturan traffic download internasional untuk IP komputer 192.168.2.12 dimana parent = ether3-client, artinya traffic yang keluar dari router ke komputer 192.168.2.12 berdasarkan packet-mark=harijanto-packet-intl yang merupakan hasil mangle, untuk limit-at, max-limit, burst-limit penjelasannya dapat dibaca dari http://www.mikrotik.com/testdocs/ros/2.9/root/queue.php

#2 adalah pengaturan traffic upload international untuk IP komputer 192.168.2.12 dimana parent=ether1-intl, artinya traffic yang keluar dari router ke Internet

#3 adalah pengaturan traffic upload lokal untuk IP komputer 192.168.2.12 dimana parent=vlan-id-23-iix, artinya traffic yang keluar dari router ke lokal NICE/OpenIXP/IIX

#4 adalah pengaturan traffic downlaod lokal untuk IP komputer 192.168.2.12 dimana parent=ether3-client, artinya traffic yang keluar dari router ke komputer 192.168.2.12 berdasarkan packet-mark=harijanto-packet-nice yang merupakan hasil mangle.

#5 sd #8 adalah identik dengan no #1 sd #4 bedanya IP komputer yang di limit adalah 192.168.2.119.

Hasilnya dapat dilihat pada gambar 17 berikut ini

Image

Gambar 17. Queue Tree

Sampai pada langkah ini proses limitasi bandwidth per komputer sudah selesai tetapi jika diperlukan agar grafik pemakaian peruser dapat ditampilkan pada web mesin mikrotik maka perlu dibuat Simple Queues., contohnya seperti pada gambar 18 dan 19 berikut

Image

Gambar 18. Contoh Simple Queue General

Image

Gambar 19 Contoh Simple Queue Advanced

Di Simple Queue tidak perlu menentukan max limit karena yang membatasi adalah queue-tree tetapi kalau diperlukan boleh juga diisi max limitnya, yang penting adalah target address dan packet-mark nya. Jadi masing-masing user dibuatkan dua simple queue, satu untuk yang international satu untuk yang lokal.

Kalau sudah untuk mengaktifkan grafiknya dilakukan dengan mengaktifkan dari tool graphing seperti pada gambar 20 berikut


Image

Gambar 20. Tools Graphing

Hasilnya dapat dilihat seperti pada gambar 21 berikut

Image

Gambar 21. Contoh grafik MRTG per Simple Queue International

Image

Gambar 21. grafik MRTG per Simple Queue Lokal

Ok selesai sudah proses limitasi bandwidth menggunakan BGP dan Queue-Tree

Selanjutnya bagaiman kalau mau pake Proxy? Seperti sudah diketahui bahwa proxy sangat bermanfaat dalam melakukan penghematan bandwidth setidaknya sampai dengan 30% traffic web yang ada.


Konfigurasi Web-Proxy

Mikrotik pada dasarnya adalah linux yang sangat powerfull, bahkan dengan mudahnya kita menggunakan squid yang dijalankan di mikrotik. Di mikrotik paket squid ini dikenal dengan nama Web-Proxy

Image

Gambar 22. Web-Proxy Settings

Untuk mengaktifkan Web-Proxy caranya dari IP->Web Proxy kemudian klik enable agar Web-Proxy dijalankan, untuk menjadi Transparant Proxy dengan cara ceklist kotak disamping kiri tulisan ”Transparent Proxy” kemudian OK atau Apply. Untuk fungsi Transparent Proxy harus didukung juga dengan IP->Firewall->NAT, nanti akan saya jelaskan lebih detail.

Untuk Web-Proxy ini yang penting adalah pertama tambahkan Access List agar IP network LAN dapat di allow untuk mengambil web melalui proxy sedangkan selain IP LAN harus di deny, ini bertujuan agar Web-Proxy tersebut tidak open proxy yang berakibat habisnya bandwidth yang dimiliki karena di akses oleh user diluar LAN.

Jika memiliki proxy lainnya dapat pula dijadikan Parent Proxy, misalnya proxy ISP atau proxy yang dijalankan pada Linux Server yang berkapasitas besar. Tujuannya agar proses browsing dapat lebih cepat karena beberapa object telah di cache pada proxy tersebut.

Contoh skrip untuk web-proxy adalah sbb:

# may/16/2007 20:01:52 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ ip web-proxy

set enabled=yes src-address=0.0.0.0 port=3128 hostname="proxy" \

transparent-proxy=yes parent-proxy=203.89.24.4:3128 \

cache-administrator="webmaster" max-object-size=4096KiB cache-drive=system \

max-cache-size=none max-ram-cache-size=unlimited

/ ip web-proxy access

add dst-port=23-25 action=deny comment="block telnet & spam e-mail relaying" \

disabled=no

add src-address=192.168.2.0/24 action=allow comment="" disabled=no

add action=deny comment="" disabled=no

/ ip web-proxy cache

add url=":cgi-bin \\\?" action=deny comment="don't cache dynamic http pages" \

disabled=no

/ ip web-proxy direct

add dst-address=203.89.24.0/21 action=allow comment="" disabled=no

add action=deny comment="" disabled=no

Pada script diatas ditentukan 192.168.2.0/24 boleh akses web-proxy sedangkan selain itu di deny dan utk url yang mengandung cgi-bin atau “?” tidak di cache karena itu tandanya halaman dinamis dan untuk dst-address=203.89.24.0/21 boleh direct sedangkan yang lain tidak, ini tujuannya agar website www.datautama.net.id tidak usah di cache, tentunya nanti ini disesuaikan dengan konfigurasi yang akan digunakan.

Berikutnya adalah pengaturan agar setiap request port 80 diarahkan ke web-proxy, nah ini triknya.

Untuk traffic international saya arahkan ke web-proxy yang jalan di Mikrotik3BGP sedangkan untuk traffic lokal saya arahkan ke proxy 203.89.24.4 yang merupakan proxy server yang jalan di linux. Tujuannya adalah supaya walupun menggunakan proxy limiter tetap efektif, hanya saja berdasarkan pengetesan sistem ini masih ada kelemahan yaitu untuk test upload internasional tetap tidak dapat di limit secara efektif tetapi akan terlimit dari limiter lokalnya, hal ini tidak akan jadi masalah kalau antara bandwidth internasional dan lokal sama tetapi ada kecendrungan saat ini bandwidth lokal lebi besar dari pada bandwidth internasional.

Contoh skrip IP->Firewall-NAT untuk mengarahkan traffic http ke proxy adalah sebagai berikut:


# may/16/2007 20:09:14 by RouterOS 2.9.41

# software id = BS8K-GDT

#

/ ip firewall nat

#1

add chain=srcnat src-address=192.168.2.0/24 action=masquerade comment="LAN \

Kantor" disabled=no

#2

add chain=dstnat src-address=192.168.2.0/24 protocol=tcp dst-port=80 \

dst-address-list=!nice action=redirect to-ports=3128 comment="Transparent \

Proxy untuk traffic International" disabled=no

#3

add chain=dstnat src-address=192.168.2.0/24 protocol=tcp dst-port=80 \

dst-address-list=nice action=dst-nat to-addresses=203.89.24.4 \

to-ports=3128 comment="Tranparent Proxy untuk traffic NICE/OpenIXP/IIX" \

disabled=no

Penjelasan

#1 berfungsi untuk melakukan NAT / Masquerade IP Private

#2 berfungsi mengarahkan traffic http yaitu protocol=tcp port=80 untuk dst-address-list=!nice ke port 3128 Web-Proxy internal di Mikrotik3BGP , arti dari dst-address-list=!nice adalah tujuan alamat yang bukan NICE/OpenIXP/IIX jadi untuk yang traffic Internasional, nah dapat dari mana address list tersebut nanti akan saya jelaskan.

#3 berfungsi mengarahkan traffic http lokal ke proxy 203.89.24.4 port 3128

Dengan skrip diatas maka kalau yang ditujua adalah www.yahoo.com maka proxy yang akan di gunakan adalah internal Web-Proxy sedangkan jika ke www.plasa.com proxy yang digunakan adalah 203.89.24.4:3128

Untuk address-list NICE dapat diambil dari:

  1. http://ixp.mikrotik.co.id/download/nice.rsc
  2. http://www.datautama.net.id/harijanto/mikrotik/datautama-nice.php


Hasil test bandwidth dari sistem ini adalah sbb:

Image

Gambar 23. Contoh Speedtest

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