Rabu, 14 September 2011

Perbedaan redirect to proxy memakai dst-nat dan mark-routing


Mungkin selama ini anda tidak pernah menyadari traffic sebuah server yang mengirimkan data atas permintaan ip klien jika menggunakan dst-nat to proxy itu server akan mengirim ke ip proxy bukan langsung ke ip klien yang telah melakukan permintaan tadi
Jadi kita akan mengalami kesulitan jika ingin membuat rule bypass/limit untuk ip server (port 80) yang dari luar yang telah masuk ke ip proxy
Contohnya ip klien 192.168.100.124 mengirim permintaan ke ip server 119.2.24.66:80 (server4.asixfiles.com) jika memakai dst-nat maka permintaan 119.2.24.66:80 ini akan di mapping ke ip proxy (contohnya 192.168.1.10:8080) sesuai NAT redirect pada mikrotik :


/ip firewall nat
add action=dst-nat chain=dstnat comment="" disabled=no dst-port=80 protocol=\
    tcp src-address=192.168.100.0/24 to-addresses=192.168.1.10 to-ports=8080
Secara otomatis ip server 119.2.24.66:80 (server4.asixfiles.com) mengirimkan data kepada ip proxynya bukan ke klien langsung karena yang melakukan permintaan adalahip proxy bukan ip klien dan ip klien baru menerima data dari ip server melalui iproxynya
Jadi kesimpulannya kita tidak bisa memisahkan ip server ini karena telah masuk ke ip proxy, seandainya kita mau melakukan bypass/limitter server tertentu yang dari port 80 akan mengalami kesulitan.
Dan disinilah kelebihan jika memakai redirect to proxy memakai mark-routing, sebab ip klien bukan lagi di mapping melainkan dikirim langsung ke ip server melalui GATEWAY. jadi systemnya adalah original id’s seolah-olah tidak memakai proxy/mapping untuk permintaan dari ip klien.

Contohnya ip klien melakukan permintaan ke server dan langsung dikirim oleh router melalui GATEWAY dan GATEWAY ini meneruskan ip klien tadi ke ip server baru ip server mengirimkan data atas permintaan ip klien.
Jadi kita mempunyai 2 GATEWAY dalam satu router dong?
Benar.. kita punya 2 GATEWAY satu untuk ke internet dan satu lagi ke proxy sebagai transparent proxynya dan itu dilakukan melalui mark-routing di mikrotik.

contoh mark-routingnya:
/ip firewall mangle
add action=mark-routing chain=prerouting comment="To Proxy (Expert ONLY!)" \
    disabled=no dst-port=80 new-routing-mark=proxy passthrough=yes protocol=\
    tcp src-address=192.168.100.0/24
dan untuk route-nya:
/ip route
add comment="" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.1.10 \
    routing-mark=proxy scope=30 target-scope=10
Dan hasilnya seperti pada gambar di bawah ini:


Anda bisa melihat sendiri khan interface PROXY mengirimkan data langsung dari ip server ke ip klien 
Permasalahannya bukan sampai disini saja, anda harus mengubah server proxy anda menjadi sebuah GATEWAY biar bisa melakukan forward ke internet dan ke klien (LAN). Dan untuk mesin FreeBSD dan Linux anda harus melakukan beberapa hal seperti berikut:
FreeBSD
tambahkan gateway_enable=”YES” pada “/etc/rc.conf” artinya diubah sebagai gateway
dan bikin autoexec untuk redirect to proxy pada “/etc/rc.local” (kalau tidak ada anda dapat create file baru) dan tambahan command berikut:
ipfw add 100 fwd 192.168.1.10,8080 tcp from any to any 80 recv em0
atau bisa juga membuat bin/.sh pada “/usr/local/etc/rc.d/”
jangan lupa sesuikan ip dan em0 sesuai network anda.
terakhir recompile kernel FreeBSD anda dengan menambahkan
“options IPFIREWALL_FORWARD”
“options IPFIREWALL_DEFAULT_TO_ACCEPT” # ini opsi untuk jaga-jaga kalau macet saja biar tidak ada yg ke blokir karena server ini bukan untuk IP PUBLIK

Linux
tentunya harus di install dulu paket ip-tables (silahkan google cara installnya sesuai distro anda)
untuk enable forward edit/tambahkan value net.ipv4.ip_forward = 1 pada “/etc/sysctl.conf”
masquerade menggunakan ip-tables via terminal

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
redirect port menggunakan ip-tables

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

eth0 dan port 8080 sesuaikan dengan network anda.
lalu save dan restart ip-tablesnya
service iptables save
service iptables restart
atau silahkan mencari referensi sendiri sesuai distro masing-masing

 Selamat mencoba!


con-byte vs contents L7

Beberapa hari yang lalu setelah melakukan perjalanan dari RB ke RB (RouterBoard) untuk melakukan testing rule mikrotik yang ada di pc routerOS ternyata terdapat perbedaan hasil untuk bw managementnya.
Jika untuk pc routerOS cukup memakai connection-byte untuk menangkap (trap) object besar yg biasanya dilakukan oleh program download manager yg lebih dikenal IDM maka packet trap bisa langsung dikirim ke queue, tetapi untuk platform mipsbe (rb4xx-7xx) mengalami delay yang cukup lumayan sudah menguras bw yg tersedia
Setelah kembali mengembara ke dunia google ketemulah referensi-referensi dari berbagai komunitas dan blog maka kesimpulan untuk shapping bw menggunakan contents L7 dan kemungkinan cara inilah yang lebih efektif untuk trap file extensi jika menggunakan mikrotik platform mipsbe (rb4xx-7xx) ketimbang memakai trap mangle con-byte (connection-byte).
Dan berikut contoh regex L7 untuk file extensi (jika ingin menambahkan cukup di isi pada tanda kurung tutup-buka (blabla|ext|etc)


/ip firewall layer7-protocol
add comment="" name=kontens regexp="^.*get.+\\.(exe|rar|zip|7z|cab|asf|mov|wmv\
|mpg|mpeg|mkv|avi|flv|pdf|wav|rm|mp3|mp4|ram|rmvb|dat|daa|iso|nrg|bin|vcd|\
mp2|3gp|mpe|qt|raw|wma|ogg|doc|deb|tar|bzip|gzip|gzip2|0[0-9][0-9]).*\$"
Sedangkan untuk manglenya sebagai berikut:
/ip firewall mangle
add action=mark-packet chain=forward comment=Kontens disabled=no \
    layer7-protocol=kontens new-packet-mark=kontens passthrough=no protocol=tcp
Maka dengan begitu jika ada traffic lewat berisikan kontens tersebut maka dapat langsung dikirim ke queue dengan nama packetnya “kontens” tanpa perlu menunggu delay/counter dari con-byte.
Dan andapun bisa berexperiment menggunakan L7 reges regex

/ip firewall layer7-protocol 
add comment="" name=youtube regexp="^.*get.+.c.youtube.com.*\$"

regex untuk youtube
Setelah itu anda tinggal bikin mangle seperti contoh diatas tersebut dengan memilih L7 dan membuat queue untuk masing-masing packetnya.
Selamat mencoba…

Mohon Revisinya Jika ada salah...