Mikrotik routerboard memiliki built-in proxy didalamnya, namun memiliki kendala yakni keterbatasan kapasitas penyimpanan. Oleh karena itu, kebanyakan administrator jaringan yang menggunakan mikrotik akan menggunakan proxy eksternal untuk mengatasi kendala ini.
Program atau daemon yang paling banyak digunakan untuk proxy eksternal adalah squid atau turunannya (lusca). Ada beberapa keuntungan dalam penggunaan squid proxy eksternal antara lain :
- Mudah untuk di sesuaikan konfigurasinya sesuai dengan kebutuhan.
- Penggunaan access control lists (ACL) yang dapat digunakan untuk keperluan tertentu.
- Squid (khususnya versi 2.7) dapat “dipersenjatai” dengan url redirector. Pada suatu kondisi, redirector dapat digunakan untuk menangani akses konten dinamik (seperti video Youtube).
- Kapasitas penyimpanan yang lebih besar karena pada umumnya komputer menggunakan harddisk sebagai media penyimpanan.
Dalam posting ini, saya akan sedikit menjabarkan integrasi proxy eksternal dengan mikrotik menggunakan pengaturan NAT atau mangle dengan diagram jaringan seperti gambar berikut ini :
Keterangan :
- IP address mikrotik menuju proxy : 192.168.90.1
- IP address proxy menuju mikrotik : 192.168.90.2
- IP address klien-klien : 192.168.1.0/24
Skenario pertama : menggunakan NAT.
Kita dapat menggunakan NAT untuk “membelokkan” akses browsing klien (port 80/HTTP) menuju IP dan port proxy eksternal. Monggo di copas script berikut ini :
/ip firewall address-list add address=192.168.90.0/24 list=ip-proxy /ip firewall nat add action=dst-nat chain=dstnat comment="transparent proxy" dst-port=80 protocol=tcp src-address-list=!ip-proxy to-addresses=192.168.90.2 to-ports=3128
Keterangan :
Terlebih dahulu kita mendeskripsikan kelas IP address yang digunakan untuk komunikasi antara mikrotik – proxy.
/ip firewall address-list
add address=192.168.90.0/24 list=ip-proxy
Kemudian, akses browsing klien (HTTP port 80) kita belokkan menuju proxy eksternal port 3128
/ip firewall nat
add action=dst-nat chain=dstnat comment=”transparent proxy” dst-port=80 protocol=tcp src-address-list=!ip-proxy to-addresses=192.168.90.2 to-ports=3128
Skenario kedua : menggunakan mangle.
Saya secara pribadi menyukai penggunaan skenario kedua ini. Berikut script nya :
/ip route add check-gateway=ping distance=1 gateway=192.168.90.2 routing-mark=to-ext-proxy /ip firewall mangle add action=mark-routing chain=prerouting comment="mark routing to proxy" dst-port=80 new-routing-mark=to-ext-proxy protocol=tcp src-address=192.168.1.0/24
Keterangan :
Sebelumnya, tambahkan route menuju proxy eksternal untuk routing yang akan kita tandai di mangle.
/ip route
add check-gateway=ping distance=1 gateway=192.168.90.2 routing-mark=to-ext-proxy
Setelah itu, akses browsing klien kita tandai dengan routing mark pada mangle, sehingga semua akses browsing akan “bermuara” langsung ke proxy eksternal sebagaimana telah kita tentukan sebelumnya pada route.
/ip firewall mangle
add action=mark-routing chain=prerouting comment=”mark routing to proxy” dst-port=80 new-routing-mark=to-ext-proxy protocol=tcp src-address=192.168.1.0/24
Catatan :
Jangan lupa menambahkan pengaturan pada proxy eksternal agar akses klien dapat berjalan dengan baik antara lain menentukan default gateway proxy dan mengizinkan akses port 3128 pada iptables. Simpan baris-baris berikut ini kedalam file /etc/rc.local :
route add default gateway 192.168.90.1 iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.1.0/24 -d 0/0 --dport 80 --to-ports 3128 iptables -A INPUT -p tcp -s 0.0.0.0/0 -d 192.168.90.2 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.90.2 --sport 3128 -d 0.0.0.0/0 -m state --state ESTABLISHED -j ACCEPT
Semoga bermanfaat…
Malam om…
untuk metode 1 menggunakan nat , di nat mikrotik nya kalo untuk LAN dan Hotspot cukup bikin nat 1 saja atau bikin double om…..
dan seperti apa nat nya untuk lan dan hotspot
untuk metode 1 dan 2 ,di /etc/rc.local harus tetap di buat iptables nya ya om
terimakasih
halo mas aldrian,
untuk yang pake NAT bisa kok pake 1 nat saja. misal LAN 192.168.1.0/24, hotspot 192.168.2.0/24, proxy 192.168.90.1
/ip firewall address-list
add address=192.168.1.0/24 list=klien
add address=192.168.2.0/24 list=klien
/ip firewall nat
add action=dst-nat chain=dstnat comment=”transparent proxy” dst-port=80 protocol=tcp src-address=!192.168.90.1 src-address-list=klien to-addresses=192.168.90.1 to-ports=3128
untuk iptables, sebaiknya tetap digunakan untuk metode nat atau routing.
assalamualaikum mas,… saya nyoba make cara yang per tama mas, di access.log berhasil lewat trafik tapi hanya mengunakan ip gateway proxy atau ip mikrotik nya mas… gimana ya mas , mohon pencerahan nya mas
agar yg masuk ke squid ip client, maka mesin proxy harus di set sebagai gateway (menggunakan mangle dan route).
slamat malam mas,
saya mau tanya gmn cara merubah ip address di interface ipfire.
thanks
halo mas phiruz,
untuk mengganti ip address di ipfire, silakan login lewat ssh, kemudian ketikkan “setup” (tanpa tanda kutip) dan tekan enter. silakan pilih menu networking, dan ubah ip disana. :)
Mas..tanya cara limit download extense dengan motode 2 punya mas fajar gimana?
mas beda sekenario 1 dan 2 apa ya mas
skenario 1 menggunakan nat, dimana ip mikrotik yg akan mewakili koneksi ke proxy.
skenario 2 menggunakan mangle, dimana ip klien akan di belokkan langsung ke proxy.
demikian :)
mas fazar, itu di ipfire benar alamatnya /etc/rc.local? atau /etc/sysconfig/rc.local ?
kalo di ipfire nggak usah nambahin rules diatas, karena rules iptables akan di generate secara otomatis oleh sistem jika opsi enable on green / blue diaktifkan pada web interface. demikian. :)
tengkyu mas fazar, satu lagi pertanyaannya ya. saya pake ipfire core 73. dan install squid 2.7stable9. namun kenapa advanceproxy via web seolah tidak berfungsi ya, url filteringnya pun tidak berjalan (tidak bisa ngeblok porn, meskipun porn sudah saya centang), sepertinya settingan squid dikendalikan dari /etc/squid/squid.conf saja.
apakah memang seperti itu? atau ada kesalahan pada kasus saya ini, (kenapa advproxy web seolah tidak berfungsi)
sekalian dong maz.. squid.conf, nya
monggo di google.. hehehe. atau search di blog ini dengan kata kunci squid.conf
maz boleh minta squid.conf $ store.pl terbaru?? trims sebelumnya
silakan periksa disini : http://tempat-sampah.googlecode.com/svn/storeurl.pl
udah update untuk cache youtube yg terbaru. credits : mas syaifudin.
mau tanya om …
topologi ane sama persis kayak digambar ( proxy 1 eth) …
mikrotik : eth 1 : 192.168.1.1 ( menuju ke switch/client )
mikrotik : eth 5 : ip public ISP
mikrotik : eth 4 : 192.168.2.1 ( menuju ke proxy )
Proxy Ubuntu 2.7x-lusca 1 eth
proxy : eth0 : 192.168.2.2
setelah kanan kiri … ya lumayan lah udah HIT walaupun belum optimal itu jadi PR ane sementara ini, tapi yang ane mau tanya :
1. ketika client 192.168.1.100 rekuest misal detik.com … dilarikan ke proxy … dan bila tidak ada maka proxy kembali ke mikrotik dengan membawa tugas ke detik.com tapi menggunakan ip 192.168.2.2 :(
nah permasalahannya disini … ketika 192.168.2.2 masuk ke mikrotik… limiter tidak bekerja karena tidak ada .. kalau dimasukin … bingung karena itu hanya 1 ip ..
pertanyaannya : adakah cara supaya ip yang masuk ke mikrotik adalah ip client 192.168.1.100 ? kalau ada… maukah om bos memberikan panduannya ?
ane udah baca tutz soal tcp outgoing tapi ga nemu2 cara nya biar bekerja … :(
cuma tehnik nya aja udah dipasang di squid.conf spt ini ( kurang lebih
192.168.1.100 — di ubah jadi — 192.168.2.100
sehingga masuk ke mikrotik nya adalah 192.168.2.ipbelakangclient … jadi mangle nya bisa di tambahkan ) tapi nyari2 ga nemu2
mohon solusi nya
baik itu tcp outgoing maupun ip client di “kembalikan lagi” ke mikrotik
salam
dan semoga dapat balasannya dari Nya
nah, ini kendala umum yang terjadi kalo proxy tidak menggunakan tproxy.
klien (192.168.1.1) -> proxy (192.168.2.2) -> mikrotik + internet
akses http yang terbaca di mikrotik adalah dari ip proxy, bukan dari ip klien. sehingga pembatasan bandwidth hanya ditujukan untuk ip proxy. jika menggunakan tproxy, maka akan menjadi seperti ini.
klien (192.168.1.1) -> tproxy (spoof ip klien -> 192.168.1.1) -> mikrotik + internet
maka yang terbaca di mikrotik adalah ip dari klien – bukan dari proxy. oleh karena itu, silakan implementasikan tproxy :
http://code.google.com/p/tempat-sampah/source/browse/Rule.TPROXY
ga perlu patch kernel ? cukup yang di situ aja ? ( belum bisa implementasi M/B server ubuntu nya opname hahaha )
note :
172.16.1.2/32 <— milik proxy apa milik client ?
nggak per patch kernel mas coz kernel modern udah support tproxy. baca aja tutor nya pelan2, saya rasa penjelasan mas syaifudin di tempat-sampah udah cukup detail
root@ubuntu:/home/mirza# squid -k reconfigure
FATAL: Bungled squid.conf line 2: http_port 3129 “tproxy”
Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
kok ga bisa yah :(
ane ganti 172.16.1.2 itu jadi 192.168.2.2
hmm.. sepertinya squidnya nggak di build dgn opsi –enable-linux-tproxy, jadi nggak support tproxy. kalo demikian squidnya mesti di build dan di instal ulanh dengan tproxy. coba periksa dengan mengetikkan squid -v
root@ubuntu:/home/mirza# squid -v
Squid Cache: Version 2.7.STABLE9
configure options: ‘–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-http-gzip’ ‘–enable-async-io=24’ ‘–with-aufs-threads=24’ ‘–with-pthreads’ ‘–enable-storeio=aufs’ ‘–enable-linux-netfilter’ ‘–enable-arp-acl’ ‘–enable-epoll’ ‘–enable-removal-policies=heap’ ‘–with-aio’ ‘–with-dl’ ‘–enable-snmp’ ‘–enable-delay-pools’ ‘–enable-htcp’ ‘–enable-cache-digests’ ‘–disable-unlinkd’ ‘–enable-large-cache-files’ ‘–with-large-files’ ‘–enable-err-languages=English’ ‘–enable-default-err-language=English’ ‘–with-maxfd=65536’
cara kompile nya gimana :(
dengan kondisi ini, squid udah di compile dan di build dengan benar. :)
Mas..mau..tanya..
saya..nyoba..redirect port 80..pakai..mangle..kok belum berhasilnya..lou di lihat lognya pkai..tail -f /var/log/squid/access.log…gak..jalan. Tapi lou pakai NAT..berhasil..
Ini..konfigurasi miktorik saya
A. (modem) ether 1 –>192.168.2.2
(modemnya) 192.168.2.1
B (proxy) ether 3 –>192.168.3.1
(proxy-nya) 192.168.3.5
C. (local)ether 4 –>192.168.1.1
Dial-up modem lewat mikrotik..
jadi gatawaynya ipnya dari modem..nya..
mohon..bantuanny
apakah sudah dibuatkan route ke 192.168.3.1 untuk semua koneksi http yg di mangle sebelumnya? kalo memang mangle agak merepotkan untuk mas, silakan gunakan nat saja. :)
haha..ini aja..dulu bang…Q mau tanya..lou untuk menyimpan log cache proxy untuk defaultnya kan di../var/log/squid/ lou..mau mindah..di /cache1…gimana caranya ya..biar lebih..optimal..hitnya
cache_log /cache1/cache.log
cache_store_log /cache1/store.log
access_log /cache1/access.log
kalo squid nya udah berjalan stabil, log bisa di matikan agar squid fokus hanya menangani caching (tidak melakukan logging)
cache_log /dev/null
cache_store_log none
access_log none