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.

28 Komentar

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

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

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

    • 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 :)

    • 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)

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

        • 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 :(

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

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*