Pengaturan Proxy Eksternal Dengan Mikrotik

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 :

  1. Mudah untuk di sesuaikan konfigurasinya sesuai dengan kebutuhan.
  2. Penggunaan access control lists (ACL) yang dapat digunakan untuk keperluan tertentu.
  3. Squid (khususnya versi 2.7) dapat “dipersenjatai” dengan url redirector. Pada suatu kondisi, redirector dapat digunakan untuk menangani akses konten dinamik (seperti video Youtube).
  4. 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 :

ext proxy mikrotik

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…

About Fajar R. 297 Articles
Seseorang yang antusias terhadap dunia internet, IT, networking dan komputer. Tipikal introvert tapi suka berorganisasi dan adventuring ke tempat-tempat baru.

26 Komentar

  1. 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!

  2. 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

  3. 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…

  4. 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
      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 < < modem)
      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.

    • ada banyak tutorial untuk membuat proxy di google, jadi posting ini spesifik untuk pengaturan proxy disisi mikrotik saja. :)

  5. 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

  6. 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. :)

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*