• Tidak ada hasil yang ditemukan

Instalasi Loadbalancing ADSL

N/A
N/A
Protected

Academic year: 2021

Membagikan "Instalasi Loadbalancing ADSL"

Copied!
5
0
0

Teks penuh

(1)

Instalasi Loadbalancing ADSL

Mauladi

[email protected]

26 Oktober 2010

Bismillah, ini hanya tulisan bebas pribadi saja agar terdokumentasi dan mudah untuk digunakan kembali, mudah-mudahan bisa juga bermanfaat bagi yang membutuhkan.

Langusng saja, loadbalancing yang saya maksud di sini adalah menggabungkan dua jalur ISP (Internet Service Provider) ke satu server sehingga akses ke gateway dapat disebar ke dua atau lebih ISP tersebut. Kebutuhan loadbalancing didasarkan pada kebutuhan menambahan kecepatan Internet dan untuk kemudahan pengelolaan bandwidth. Maksud kemudahan di sini adalah tidak dibutuhkan dua atau lebih mesin/server yang dijadikan sebagai gateway, semua client cukup mengarah kesatu gateway saja.

Saya menyadari ada banyak cara dan teknik mudah untuk melakukan loadbalancing, bahkan ada beberapa distro Linux yang dibuat dengan interface yang sangat mudah bahkan ada juga hardware khusus yang jauh lebih mudah lagi, tapi ini masalah selera dan kebiasaan saya saja yang memang selalu mengconfigure dari Linux base murni, resikonya tentu agak sedikit berhadapan dengan kerumitan, disitulah seninya :), ini seperti main game.

1

Struktur Jaringan

ISP yang saya gunakan adalah Telkom Speedy http://telkomspeedy.com dengan jalur telepon via modem ADSL (Asymmetric Digital Subcriber Line). Lihat Gambar 1. Loadbalancing 2 line ADSL

Figure 1: Loadbalancing 2 line ADSL

Dari gambar tersebut, tampak ada dua line telepon, ini menunjukan ada dua ISP, kemudian dikonek-sikan ke modem dan diteruskan ke PC router. Dari modem ke PC router menggunakan kabel UTP, sehingga diperlukan 3 lancard di PC router(2 buah ke modem, 1 buah ke switch untuk client). Dari switch bisa disebar ke banyak client. Client hanya mendefenisikan satu gateway (PC router) untuk menikmati dua jalur ISP ini secara bersamaan.

2

Software yang dibutuhkan

Sistem Operasi yang saya gunakan adalah Linux, distro Ubuntu 10.4 Server. Untuk distro lain silahkan menyesuaikan, hanya ada sedikit perbedaan di konfigurasi ip, sisanya sama.

2.1

rp-pppoe

rp-rpppoe dapat didownload di http://www.roaringpenguin.com/products/pppoe, software ini digu-nakan untuk melakukan koneksi (dial) ke modem.

2.2

iptables

(2)

2.3

File konfigurasi

File-file konfigurasi dalam tulisan ini dapat didownload pada link berikut: http://mauladi.com/publicfiles/loadbalancing/iptablesrule.sh

http://mauladi.com/publicfiles/loadbalancing/pppoe.conf http://mauladi.com/publicfiles/loadbalancing/pppoe2.conf http://mauladi.com/publicfiles/loadbalancing/rc.local http://mauladi.com/publicfiles/loadbalancing/autorouting.sh

3

Instalasi dan Konfigurasi

3.1

rp-pppoe

Pastikan Anda telah menginstall gcc sebelum menginstall ini.

root@user-linux:/installserver#wget http://www.roaringpenguin.com/files/download/rp-pppoe-3.10.tar.gz root@user-linux:/installserver# ls

rp-pppoe-3.10.tar.gz

root@user-linux:/installserver# tar -xvzf rp-pppoe-3.10.tar.gz root@user-linux:/installserver# ls

rp-pppoe-3.10 rp-pppoe-3.10.tar.gz

root@user-linux:/installserver# cd rp-pppoe-3.10 root@user-linux:/installserver/rp-pppoe-3.10# ls

configs/ doc/ go* go-gui* gui/ man/ README rp-pppoe.spec scripts/ SERVPOET src/ root@user-linux:/installserver/rp-pppoe-3.10# cd src/

root@user-linux:/installserver/rp-pppoe-3.10/src# ./configure root@user-linux:/installserver/rp-pppoe-3.10/src# make

root@user-linux:/installserver/rp-pppoe-3.10/src# make install

Berikutnya lakukan setup koneksi, pastikan modem ADSL telah diset sebagai bridge

root@user-linux:/installserver/rp-pppoe-3.10/src# pppoe-setup

Welcome to the Roaring Penguin PPPoE client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly...

Looks good! Now, please enter some information: USER NAME

>>> Enter your PPPoE user name: [email protected] [ISIKAN USERNAME ISP ANDA] INTERFACE

>>> Enter the Ethernet interface connected to the DSL modem

(default eth0): eth1 [SESUAIKAN DENGAN DEVICE YANG TERKONEKSI KE MODEM] >>> Enter the demand value (default no): [TEKAN ENTER SAJA]

DNS

>>> Enter the DNS information here: [TEKAN ENTER SAJA] PASSWORD

>>> Please enter your PPPoE password: [MASUKAN PASSWORD DARI ISP ANDA (PASSWORD SPEEDY)] >>> Please re-enter your PPPoE password: [ULANGI PASSWORD]

FIREWALLING

>>> Choose a type of firewall (0-2): 0 [PILIH 0, KARENA KITA YANG MENGATUR SENDIRI] ** Summary of what you entered **

Ethernet Interface: eth1

User name: [email protected] Activate-on-demand: No

DNS: Do not adjust Firewalling: NONE

>>> Accept these settings and adjust configuration files (y/n)? y [PILIH y] Congratulations, it should be all set up!

3.2

pppoe.conf dan pppoe2.conf

Karena Ada dua line maka gandakan/copy file configurasi pppoe.conf

root@user-linux:/installserver/rp-pppoe-3.10/src# cp /etc/ppp/pppoe.conf /etc/ppp/pppoe2.conf

Berikut file konfigurasi pppoe.conf dan pppoe2.conf, nomor menunjukan urutan baris (jangan dit-ulis). sesuaikan ETH dan USER yang digunkan.

(3)

24 ETH=’eth1’

31 USER=’[email protected]’ 53 DEFAULTROUTE=no

90 PIDFILE="/var/run/$CF_BASE-pppoe.pid"

File /etc/ppp/pppoe2.conf, perhatikan di sini menggunakan pppoe2.pid

24 ETH=’eth2’

31 USER=’[email protected]’ 53 DEFAULTROUTE=no

90 PIDFILE="/var/run/$CF_BASE-pppoe2.pid"

Modifikasi /etc/ppp/chap-secrets untuk mendefenisikan user dan password tiap ISP.

root@stainserver:~# cat /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses

"[email protected]" * "Tul1spAsworddiS1ni1" "[email protected]" * "TulisP4sworddiS1ni3"

3.3

Konfigurasi iptables

Saya menyadur source konfigurasi asli iptables dari http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html, dan ada sedikit modifikasi untuk menyesuaikan kondisi jaringan, yakni PC router juga diinstall Proxy (squid), transparent dan beralamat IP 192.168.1.1

#!/bin/sh

# ---# See URL: http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html # (c) 2006, nixCraft under GNU/GPL v2.0+

# ---# squid server IP

SQUID_SERVER="192.168.1.1" # Interface connected to Internet INTERNET1="ppp0"

INTERNET2="ppp1"

# Interface connected to LAN LAN_IN="eth0"

# Squid port SQUID_PORT="8080"

SQUID_PORT_HANDLE="80,21" #443 DIRECTLY # DO NOT MODIFY BELOW

# Clean old firewall iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X

# Load IPTABLES modules for NAT and IP conntrack support modprobe ip_conntrack

modprobe ip_conntrack_ftp # For win xp ftp client #modprobe ip_nat_ftp

echo 1 > /proc/sys/net/ipv4/ip_forward # Setting default filter policy

iptables -A INPUT -i $INTERNET1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i $INTERNET2 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables --table nat --append POSTROUTING --out-interface $INTERNET1 -j MASQUERADE iptables --table nat --append POSTROUTING --out-interface $INTERNET2 -j MASQUERADE iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT

iptables -A INPUT -i $LAN_IN -j ACCEPT iptables -A OUTPUT -o $LAN_IN -j ACCEPT

iptables -t nat -A PREROUTING -i $LAN_IN -p tcp -m multiport --dport $SQUID_PORT_HANDLE \ -j DNAT --to $SQUID_SERVER:$SQUID_PORT

#NO PROXY FOR FROM PUBLIC

iptables -A INPUT -p tcp -i $INTERNET1 --dport 8080 -m state --state NEW -j DROP iptables -A INPUT -p tcp -i $INTERNET2 --dport 8080 -m state --state NEW -j DROP

(4)

3.4

Routing handle

Tambahkan di baris terakhir pada file /etc/iproute2/rt tables:

#ADSL 1 10 T1 #ADSL 2 11 T2

Membuat routing saja tidak cukup, karna ada beberapa masalah diantaranya: • Jika salah satu line putus, maka table routing hilang dan tidak ada default routing

• Jika salah satu line yang dibuat default routing, jalur yang lain tidak maksimal (hampir tidak digunakan)

• Saat kedua line ON (dari terputus), tidak ada yang membuatkan routingnya (menggabungkan kembali)

Oleh karena itu berikut script bash untuk menghandle kondisi-kondisi tersebut:

#/bin/bash

# Mon Oct 25 12:59:35 WIT 2010 # (c) [email protected]

# Logic: combine between grep,awk and sed from

# Nicolas http://www.centos.org/modules/newbb/viewtopic.php?topic_id=22197&forum=40 IPPATH=/sbin/ip

while [ true ] ; do #get ip from ppp0

IP_PPP0=‘/sbin/ifconfig ppp0 | grep inet | awk ’{print $2}’ | sed ’s/addr://’‘ #get ip gateway from ppp0

GATEWAY_PPP0=‘/sbin/ifconfig ppp0 | grep inet | awk ’{print $3}’ | sed ’s/P-t-P://’‘ #ip network

IPNET_PPP0=$IP_PPP0/24

IP_PPP1=‘/sbin/ifconfig ppp1 | grep inet | awk ’{print $2}’ | sed ’s/addr://’‘ GATEWAY_PPP1=‘/sbin/ifconfig ppp1 | grep inet | awk ’{print $3}’ | sed ’s/P-t-P://’‘ IPNET_PPP1=$IP_PPP1/24

#there are balancing or not

CHECK_ROUTING_TABLE=‘ip route show |grep nexthop|grep ppp0|awk ’{print $1}’ | sed ’s/ //’‘ #there is default routing or not

CHECK_DEFAULT_ROUTING=‘ip route show |grep default|awk ’{print $1}’ | sed ’s/ //’‘ #make default routing if one of two connection is lose

#if u just check pid file, it’s not well,

#bcz when u will connect before connected, pid file keep in /var/run/ if [ "$IP_PPP0" == "" -o "$IP_PPP1" == "" ];

then

if [ "$CHECK_DEFAULT_ROUTING" != "default" ]; then

DATE=‘date‘

echo " $DATE **************** SIGLE CONNECTION **************" >> /var/log/messages $IPPATH route replace default scope global via $GATEWAY_PPP0 dev ppp0

$IPPATH route replace default scope global via $GATEWAY_PPP1 dev ppp1 fi

fi

# not good: if [ -f /var/run/pppoe2.conf-pppoe2.pid -a -f /var/run/pppoe.conf-pppoe.pid ]; # if ppp0 and ppp1 OK

if [ "$IP_PPP0" != "" -a "$IP_PPP1" != "" ]; then #if there is no routing, make routing

if [ "$CHECK_ROUTING_TABLE" != "nexthop" ]; then

DATE=‘date‘

echo " $DATE **************** LOADBALANCING **************" >> /var/log/messages $IPPATH route add $IPNET_PPP0 dev ppp0 src $IP_PPP0 table T1

$IPPATH route add default via $GATEWAY_PPP0 table T1 $IPPATH rule add from $IP_PPP0 table T1

$IPPATH route add $IPNET_PPP1 dev ppp0 src $IP_PPP1 table T2 $IPPATH route add default via $GATEWAY_PPP1 table T2

(5)

$IPPATH rule add from $IP_PPP1 table T2

$IPPATH route replace default scope global nexthop via $GATEWAY_PPP0 dev ppp0 \ weight 2 nexthop via $GATEWAY_PPP1 dev ppp1 weight 2

$IPPATH route flush cache fi

fi

#every 2 seconds sleep 2

done

Simpan file tersebut dengan nama autorouting.sh di /etc

3.5

/etc/rc.local

Agar semua file konfigurasi berjalan setiap pertama kali boot, sisipkan perintah pppoe-connect, file iptablesrule.sh dan file autorouting.sh di /etc/rc.local. Perhatikan contoh berikut:

sh /etc/iptablesrule.sh

pppoe-connect /etc/ppp/pppoe.conf& pppoe-connect /etc/ppp/pppoe2.conf& /bin/bash /etc/autorouting.sh&

4

Pengujian

Setelah semua proses instalasi dan konfigurasi dilakukan, restartlah PC router Anda, kemudian lakukan beberapa pengujian. Pengujian paling mudah menggunakan ifconfig. Pehatikan nilai RX dan TX berikut.

Figure 2: Pengujian dengan ifconfig

Pengujian lainnya dapat menggunakan traceroute, perhatikan gambar berikut, ISP yang digunakan berbeda secara otomatis.

Gambar

Figure 1: Loadbalancing 2 line ADSL
Figure 2: Pengujian dengan ifconfig

Referensi

Dokumen terkait

Yang terjadi pertumbuhan nilai total ekspor komoditas berasal dari kenaikan harga, bukan dari kenaikan produksi.. Kedua, dibanding negara lain, Indonesia menerima

Arah hubungan yang negatif menunjukkan bahwa semakin rendah performance goal orientation, maka akan diikuti dengan makin positifnya sikap terhadap sertifikasi guru

21 Jalaluddin Rahmat, “Prinsip-prinsip Komunikasi menurut Al-Qur’an”, 81.. Menilik arti qawl maysu>ra> di atas, baik dari segi asba>b al-nuzu>l, kaitan teks

Dari kegiatan pengabdian masyakat yang berjudul ”Sosialisasi dan Aplikasi Penggunaan Beberapa Tanaman Pengusir Nyamuk Kepada Masyarakat Kota Padang di Daerah yang

Dalam penetapan biaya pendidikan yang dibebankan ke mahasiswa, Politeknik Indonusa Surakarta belum dapat menetapkan Uang Kuliah Tunggal (UKT), sehingga mahasiswa

Tabel 4.11 Rekapitulasi Tanggapan Tamu Terhadap Repurchase Intention Tamu Di Saffron Restoran ... 114 Tabel 4.13 Output Pengaruh Service Guarantee Terhadap

Setelah melihat ibunya mengambil kain untuk mengeringkan lantai dengan cara menyeret kakinya yang dialasi dengan kain untuk mengeringkan lantai, Afif pun