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…
mas fazar.. ni mau minta pencerahan.. menghubungkan mikrotik dgn external proxy ubuntu server gimana ya..
Rb750
(modem) ether1 = 192.168.1.1
(modem) ether2 = 192.168.2.2
(Lokal) ether3 = 192.168.0.30
(ubuntu) ether5 = 192.168.4.1
mohon solusi yg sederhana dan gampang saja.. maaf newbie
/ip firewall address-list
add address=192.168.0.0/24 list=client
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Route HTTP to Proxy" dst-port=80 \
new-routing-mark=to-ext-proxy protocol=tcp src-address-list=client
/ip route
add check-gateway=ping distance=1 gateway=192.168.4.1 routing-mark=to-ext-proxy
untuk modemnya bisa di load balance. good luck!
Mas sy mau nanya nichh….di warnet saya menggunakan mikrotik ama proxy eksternal, tp knp yach klo ping melalui proxy cukup besar (344 kbps), tetapi klo proxy sy matikan dan hanya mengandalkan mikrotik pingnya turun menjadi 144 kbps….mohon solusinya mas…mksh sblmnya n salam kenal
jangan lupa menambahkan rule bandwidth untuk proxy. juga sangat direkomendasikan untuk menggunakan TProxy di sisi proxy, agar trafik data yang terlimit adalah trafik dari klien.
untuk menmbahkan rulenya gi mana mas n cara menggunkan TProxy itu…??? maaf gan mash newbe jd kurang ngertii…mkshh atas jwbnnya
mas napa di ipfire saya ngak ada /etc/rc.local nya ya….
rc.local di ipfire file nya adalah /etc/sysconfig/firewall.local
letakkan perintah tambahan dibawah ## Start rule
kalo external proxy servernya dibanun dari netbook gimana mas??
newbie mohon bimbingannya
trims
Oya.. Mas lupa
Saya pake Advance Proxy IpCop
Hallo mas Fz
Saya nongol lagi..
HIT Proxy nat berjalan OK
Hit Proxy di Queue juga OK
Tapi kok terasa terasa tidak ada hit ya mas..
Maksudnya hitnya kecil sekali..
ini contoh copy squid.conf saya mas..
Tolong dikoreksi
shutdown_lifetime 5 seconds
icp_port 0
http_port 192.168.x.x:3128 transparent
cache_effective_user squid
cache_effective_group squid
umask 022
pid_filename /var/run/squid.pid
cache_mem 8 MB
cache_dir aufs /var/log/cache 9000 16 256
error_directory /usr/lib/squid/advproxy/errors.ipcop/English
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none
log_mime_hdrs off
forwarded_for off
via off
acl within_timeframe time MTWHFAS 00:00-24:00
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 563 # snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 800 # Squids port (for icons)
acl IPCop_http port 811
acl IPCop_https port 445
acl IPCop_ips dst 192.168.5.2
acl IPCop_networks src "/var/ipcop/proxy/advanced/acls/src_subnets.acl"
acl IPCop_servers dst "/var/ipcop/proxy/advanced/acls/src_subnets.acl"
acl IPCop_green_network src 192.168.x.0/255.255.255.0
acl IPCop_green_servers dst 192.168.x.0/255.255.255.0
acl CONNECT method CONNECT
#Start of custom includes
cache_swap_low 98
cache_swap_high 99
maximum_object_size_in_memory 64 KB
ipcache_size 8192
cache_vary on
ipcache_low 98
ipcache_high 99
# Add File Extension you want to cache
refresh_pattern -i \.(jp?g|gif|pnp|png|\?bm?)$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.jar$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.dll$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.klz$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.dif$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.avi$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.iso$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.3gp$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.mpeg$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.xml$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.exe$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.zip$ 0 90% 40320 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.rar$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.mp3$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.dll$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.rar$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.npz$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.cfg$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.ver$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.erl$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.npz$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.xt$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.xtp$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.cfg$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.des$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.new$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.t2bk$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.smd$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.gi$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.dat$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.luc$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.flv$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.html$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.htm$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.php$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.jsp$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.swf$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.bin$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.pdf$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i \.mp4$ 0 90% 43200 ignore-reload override-expire reload-into-ims
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 ignore-reload override-expire reload-into-ims
refresh_pattern /.gif 4320 50% 43200
refresh_pattern /.jpg 4320 50% 43200
refresh_pattern /.jpeg 4320 50% 43200
refresh_pattern /.png 4320 50% 43200
refresh_pattern ^http://www.friendster.com/.* 720 100% 10080
refresh_pattern ^http://mail.yahoo.com/.* 720 100% 10080
refresh_pattern ^http://*.yahoo.*/.* 720 100% 7200
refresh_pattern ^http://*.google.com/.* 720 100% 10080
refresh_pattern ^http://www.telkomspeedy.com/.* 720 100% 28800
refresh_pattern ^http://*.blogsome.com/.* 720 80% 10080
refresh_pattern ^http://*.wordpress.com/.* 720 80% 10080
refresh_pattern ^http://*.detik.com/.* 720 90% 2880
refresh_pattern ^http://*.facebook.com/.* 720 90% 2880
refresh_pattern ^http://*.zynga.com/.* 720 90% 2880
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
##--------------
quick_abort_min 0
quick_abort_max 0
quick_abort_pct 98
store_avg_object_size 32 KB
log_fqdn off
log_icp_queries off
memory_pools off
log_ip_on_direct off
log_mime_hdrs off
buffered_logs off
icp_hit_stale on
query_icmp on
reload_into_ims on
pipeline_prefetch on
vary_ignore_expire on
#acl download url_regex -i ftp .mp3 .vqf .flv .tar.gz .exe .mpeg .mp2 .mp4 .torent .gz .rpm .zip .rar .avi .3gp .mov .mpe .mpg .qt .ram .rm .iso .raw .wav .pdf .wmv .wma .ogg .doc
#acl download url_regex -i \.exe$ \.mp3$ \.vqf$ \.gz$ \.rpm$ \.zip$ \.rar$ \.pdf$ \.doc$ \.avi$ \.mpe$ \.mpg$ \.qt$ \.ram$ \.rm$ \.iso$ \.dat$ \.raw$ \.wav$ \.mp4$ \.mpeg$ \.3gp$ \.flv$
#delay_pools 1
#delay_class 1 1
#delay_parameters 1 24000/24000
#delay_access 1 deny IPCop_ips
#delay_access 1 allow download
#delay_initial_bucket_level 100
#tcp_outgoing_tos 0x30 localnet
zph_mode tos
zph_local 0x30
zph_parent 0
zph_option 136
#End of custom includes
#Access to squid:
#local machine, no restriction
http_access allow localhost
#GUI admin if local machine connects
http_access allow IPCop_ips IPCop_networks IPCop_http
http_access allow CONNECT IPCop_ips IPCop_networks IPCop_https
#Deny not web services
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#Set custom configured ACLs
http_access allow IPCop_networks within_timeframe
http_access deny all
#Strip HTTP Header
header_access X-Forwarded-For deny all
header_access Via deny all
maximum_object_size 4096 KB
minimum_object_size 0 KB
request_body_max_size 0 KB
reply_body_max_size 0 deny all
———————————
Ada yang salah nggk Mas, terima kasih banyak
halo juga mas… ipcop ya.
refresh pattern nya kudu dibenahin mas agar hit lebih maksimal. silakan cek file /var/ipcop/proxy/advanced/acls/include.acl
bagian ini juga bisa di tuning :
maximum_object_size 4096 KB
rubah menjadi 65536 KB – settingnya ada di web interface, kalo gak salah max file size to cache.
oh iya… gimana remote modem nya? udah bisa?
Makasih mas Fz.. atas bimbingannya.
Jadi pede nih pake IpCop..
Romete modem nggk ada masalah….,
Teman kita yang diatas mas yang punya kendala pada remote modem..
..
Mission Completed
Sekali lagi Thank mas atas ilmunya…
gan maaf ituh tolong koreksi gan punya saya,untuk masuk ke modem dan wifi masuk ke proxy ,settingan di mt nya bgaimana .
Thank’s
baik, kita coba oprek lagi, tapi perlu dicatet ini trial and error, sebab ane nggak bisa ngetest confignya (mikrotik ane lagi di istirahatkan).
ether1 (modem) 192.168.1.2/24 192.168.1.0 modem)
ether2 (proxy) 192.168.3.254/24 192.168.3.0
ether3 (LAN) 192.168.0.1/24 192.168.0.0
vlan3-wifi (hotspot) 192.168.2.1/24 192.168.2.0 < <
asumsi saya modem pake 192.168.1.1 dan mikrotik 192.168.1.2
/ip address
add address=192.168.1.2/24 disabled=no interface=ether1 network=192.168.1.0
trus kita bikinin nat
/ip firewall nat
add action=src-nat chain=srcnat comment="NAT ke Modem" disabled=no dst-address=192.168.1.2 out-interface=ether1 to-addresses=192.168.1.1
untuk hotspot sama kok rules nya seperti pembelokan akses http dari lan (nat atau route). good luck.
mass,, ini knapa cuma cara setting mikrotik ajj,, cara setiing squid proxyny mana??
ada banyak tutorial untuk membuat proxy di google, jadi posting ini spesifik untuk pengaturan proxy disisi mikrotik saja. :)
Gan maaf saya mampir lagi….kenapa yah saya ga bisa masuk ke Modem ….,
Kalo route GatewayProxy saya disable baru bisa masuk…
Thank’s Gan.
jelas, karena akses administrasi web pada modem trafiknya (yg portnya 80) di routing ke proxy. makanya kalo di disable baru bisa akses modem. coba dibikinkan exclude aja !ipmodem
Maaf gan ,sumpah maksud nya “exclude aja !ipmodem” ituh bagaimana cara nya dan di mana ituh buat nya ,ip modem saya 192.168.1.1
Thank’s
chain=dstnat action=dst-nat src-address=(!)192.168.1.1 in-interface=ether1 protocol=tcp dst-port=80 to-address=192.168.1.1 to-ports=?ini yg saya ga faham
jadi saya bikin ga bisa2…
atau salah bikin saya …
thank’s
coba dulu mas.. udah bener. ubah sedikit setting nat untuk proxy. misal ip modem 192.168.1.1 dan proxy 192.168.2.1
chain=dstnat action=dst-nat src-address=(!)192.168.1.1 in-interface=ether1 protocol=tcp dst-port=80 to-address=192.168.2.1 to-ports=3128
semoga berhasil.
maaf gan….blom berhasil juga masuk modem pakai nat chain=dstnat action=dst-nat src-address=(!)192.168.1.1 in-interface=ether1 protocol=tcp dst-port=80 to-address=192.168.2.1 to-ports=3128
berikut ip addres saya. modem saya bikin bridge
ether1 (modem) 192.168.1.2/24 192.168.1.0
ether2 (proxy) 192.168.3.254/24 192.168.3.0
ether3 (LAN) 192.168.0.1/24 192.168.0.0
vlan3-wifi (hotspot) 192.168.2.1/24 192.168.2.0 <<<niatan pengembangan diri
Nat From 192.168.0.0/24 output to speedy chain=srcnat action=masquerade out-interface=pppoe-speedy1
exclude ip modem
chain=dstnat action=dst-nat
to-addresses=192.168.3.253 to-ports=3128
protocol=tcp src-address=!192.168.1.1
in-interface=ether1 dst-port=80
hotspot to ext. proxy
chain=dstnat action=dst-nat to-addresses=192.168.3.253 to-ports=3128 protocol=tcp src-address=192.168.2.0/24 dst-port=80
Hasil
****Proxy ke LAN berjalan mulus pakai sekenario kedua (bintang lima buat agan)
x tidak berhasil untuk masuk gui modem
x hotspot blum bisa hit dari proxy
mohon koreksi gan ?
thank's
Pagi Mas…
Salam kenal,.
Saya newbi soal linux dan masih belajar,.. salah satunya IpCop..
Beberapa waktu yang lalu saya mencoba membuat web proxy eksternal dari IpCop untuk mikrotik…
Setelah copas sana-sini,.. bongkar pasang script akhirnya jalan juga, tapi saya bingung bahkan nggk bisa tidur kenapa hit di mikrotik kecil sekali,… dan ada beberapa nggk bisa nyambung ke internet.. Hit di interface Proxy jalan, di mangle jalan, tapi di queue tidak ada penampakan = 0
Yang ingin saya tanyakan ke mas F adalah :
1. Apakah squid.conf IpCop perlu diedit?
2. Disisi mikrotik saya menggunakan skenario pertama
3. Apakah kita perlu menunggu dulu untuk mengisi chace di Proxy baru bisa ada hasilnya..
4. Terima kasih,,, maaf terlalu banyak bertanya, soalnya lagi belajar,.. malu ditanya anak-anak bapaknya tidak ngerti IpCop heheheheheheeh.
1. sudah pake zph dan marking zph (tos/dscp) di mangle dengan benar? kemudian pada queue, pastikan rules untuk proxy hit berada di posisi paling atas.
2. oke pake nat, no problemo.
3. perlu. biarkan cache terisi kurang lebih seminggu atau lebih, baru deh ntar hit nya jadi signifikan.
4. selamat mengoprek pak. :)
Thank U mas..
Bararti kudu sabar ya, nunggu proxy ada isinya, makasih mas.. kalo ada masalah boleh tanya lagi khan? hehehehehehe
Silakan mas.. saya jawab kalo memang saya bisa. :)