<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d3417119785294949608\x26blogName\x3dMy+Special+Blog\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dTAN\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://yudymardianto.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://yudymardianto.blogspot.com/\x26vt\x3d995569220600001438', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

My Special Blog

Uang adalah Hamba yang sangat baik tapi merupakan Tuan yang sangat buruk.

« Home | Next » | Next » | Next » | Next » | Next » | Next » | Next » | Next » | Next » | Next »

Load Balancing Outgoing Connection

Apa yang dimaksud Load Balancing pada bahasan ini?
Yang saya maksud Outgoing Load Balancing disini adalah balancing dua koneksi internet atau lebih dan mengoptimalkan keneksi tersebut.
Dalam menggunakan load balancing ini saya menggunakan pf pool http://www.openbsd.org/faq/pf/pools.html#outgoing
Dalam contoh kali ini akan saya sajikan 2 koneksi saja, untuk lebih dari dua koneksi silahkan anda mencobanya dan berexperiment sendiri.

Pra Syarat:
  1. kernel sudah dikompile support pf
  2. ada 3 buah lancard, 2 untuk koneksi wan dan 1 untuk koneksi lan
  3. dua line koneksi ISP atau Speedy
Lakukan compile kernel agar support pf firewall dan builtin dalam kerne merujuk ke http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html.
# cd /usr/src/sys/i386/conf
# cp GENERIC ROUTER
# ee ROUTER

#-------- Tambahkan baris berikut pada konfigurasi kernel anda --------#
###---untuk support PF----###
device pf
device pflog
device pfsync
###---untuk support altq cbq jika diperlukan nanti ---#
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_HFSC
options ALTQ_PRIO
options ALTQ_NOPCC

Save konfigurasi kernel tersebut.
Setelah mengedit konfigurasi kernel lalu saya mengcompile kernel ulang.
# cd /usr/src/sys/i386/conf
# config ROUTER
# cd ../compile/ROUTER
# make cleandepend; make depend; make; make install

Setelah tahap instalasi kernel baru selesai, saya perlu mengonfigurasi rc.conf untuk keperluan pf berjalan ketika boot:
# ee /etc/rc.conf

###---tambahkan ini ---###
pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog"# where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startup
gateway_enable="YES" # Enable as LAN gateway
router_flags"="-q"
router= "sbin/routed"
router_enable="YES"
defaultrouter="10.0.0.1" #masukan salah satu gateway koneksi isp anda

Save hasil edit rc.conf tersebut.
Langkah selanjutnya membuat konfigurasi pf.conf untuk pool loadbalancing. Dalam percobaan ini saya menggunakan konfigurasi http://www.openbsd.org/faq/pf/pools.html#outexample.

# ee /etc/pf.conf

#----- Isi konfigurasi pf -----#
lan_net = "192.168.1.0/24"
int_if = "rl2"
ext_if1 = "rl0"
ext_if2 = "rl1"
ext_gw1 = "10.0.0.1"
ext_gw2 = "10.0.0.2"

# nat outgoing connections on each internet interface
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)

# default deny
block in from any to any
block out from any to any

# pass all outgoing packets on internal interface
pass out on $int_if from any to $lan_net
# pass in quick any packets destined for the gateway itself
pass in quick on $int_if from $lan_net to $int_if
# load balance outgoing tcp traffic from internal network.
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
# load balance outgoing udp and icmp traffic from internal network
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
proto { udp, icmp } from $lan_net to any keep state

# general "pass out" rules for external interfaces
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

# route packets from any IPs on $ext_if1 to $ext_gw1 and the same for
# $ext_if2 and $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any
#---selesai---#

Save konfigurasi pf tersebut.
# reboot

selesai sudah tahap pembuatan router load balancing dua koneksi internet.

Saran: Untuk kenyamanan anda silahkan custumize port-port yang diperlukan untuk dilewatkan atau diblok.
Periksa kembali dokumentasi squid dan pf jika anda ingin menjalankan transparent proxy.

................... Selamat Mencoba ....................