3.22.2010

Conficker dan bagaimana mengenalinya

Sebenarnya sudah cukup banyak tulisan yang dibuat mengenai conficker:
  1. Apa itu conficker
  2. Blocking virus conficker
  3. Download domain conficker
  4. Memblok akses untuk download content conficker
Tulisan yang akan disajikan di bawah ini pendekatannya hampir sama dengan cara 2 dan 3 cuma scriptingnya tidak dilakukan di mikrotik melainkan di laptop ubuntu penulis. Data domain conficker diambil dari http://www.epicwinrar.com/conficker/domains.txt. Langkah-langkahnya sebagai berikut:

  1. Download data domain conficker.
  2. Buat script untuk query setiap domain conficker.
  3. Extract alamat ip domain conficker yang exist (resolvable).
  4. Sortir ip conficker yangg diperoleh dari domain yang exist dan cari ip conficker yang kemunculannya paling banyak  (modulus).
  5. Berdasarkan ip conficker yang diperoleh dari no 4 di atas, cari kemunculannya di ip dns cache mikrotik.
  6. Jika ada datanya, masukkan ip tersebut ke ip firewall address-list untuk diproses lebih lanjut.
Sebenarnya langkah ini bisa lebih singkat yakni sampai nomor 3 saja, langkah selanjutnya adalah masukan domain conficker yang exist tersebut seperti yang dijelaskan di http://wiki.mikrotik.com/wiki/Conficker-Virus-Blocking. Domain conficker yang exist ada sekitar 30 ribu lebih. Apa puluhan ribu data ini mau dimasukkan semuanya ke ip firewall address-list ? Karena belum tentu domain conficker ini meski ada (exist), juga aktif sebagai inang conficker. Beberapa domain conficker sudah diambil alih dan dihandle oleh badan yang namanya Conficker Holding Account. Cek siapa yang memiliki domain conficker qvqgzdwrnnr.info. Disitu jelas tertulis data lengkap pemegang domain. Apakah ini benar alamat yang si pembuat virus conficker? Tidak mungkin kan ? Padahal Microsoft menjanjikan uang $250,000 bagi siapa yang bisa membekuk si biang kerok ini.
Domain ini kalau kita buka di browser dan pakai opendns, aksesnya diblok seperti ditunjukkan pada gambar di bawah:
akses ke qvqgzdwrnnr.info diblok oleh opendnsSebenarnya yang penting di sini adalah bukanlah mencari dan memilah ini domain conficker exist (dan aktif) atau bukan melainkan mencari client-client mana yang terkena virus conficker dan aktif melakukan request ke domain-domain conficker meski domain yang dituju sudah tidak exist atau dormant sehingga bisa diambil tindakan:
  1. Memberitahu client bahwa jaringan atau pcnya terkena virus conficker.
  2. Jika ada client yang mengeluh koneksi internet lambat, itu karena dampak virus conficker :) .
Tambahan lagi apakah mikrotik tidak terkena dampak dari sebaran virus conficker ini? Dns cache mikrotik di sini sudah 2x pada hari yang sama mengalami cache size dns terpakai semua (baca cache used > cache size), sebagai akibatnya request dns dari client lambat atau gagal! Untuk itu langkah pencegahan di sisi mikrotik:
  1. Besarkan dns cache.
    /ip dns set cache-size=10240
  2. Buat schedule untuk meng-flush dns cache apabila pemakaiannya melebihi nilai tertentu. Script di bawah akan flush dns cache bila ukurannya lebih dari 5120KiB.
    :local a [ /ip dns get cache-used ];
    :if ($a>=5120) do { /ip dns cache flush };
Langkah pertama, download domain conficker:
$ wget -O domains_conficker.txt \

http://www.epicwinrar.com/conficker/domains.txt

Langkah kedua, buat script untuk query setiap domain conficker yang diperoleh dari cari di atas:
#!/bin/bash
#
# File: cek_domains_conficker.sh
#
CONFICKER="domains_conficker.txt"
DNSISP="1.2.3.4"
cat $FILE | while read domain
do
  ip=`dig @$DNSISP +time=1 +short $CONFICKER`
  echo "$CONFICKER:$ip" >> ip_domain_conficker.txt
done
Jalankan dengan perintah bash cek_domains_conficker.sh
Ekseskusi ini akan memakan waktu lama karena ada 113501 domain conficker sejak tulisan ini dibuat yang perlu dicek exist tidaknya. Sebelum menginjak langkah ketiga, coba kita lihat sebagian data ip_domain_conficker.txt yang diperoleh dari langkah no 2:
qegiche.ws:64.70.19.33
ovdbkbanqw.com:
lxmpzyiq.com:
gkrobqo.com:
hunqbpya.net:
lmhfcocgiz.org:
epzyytco.ws:64.70.19.33
ampavhunh.com:
pzzyxnzhuv.com:
frdyiaosiir.ws:64.70.19.33
kvfvpszaxv.biz:
gopfgie.net:
ibrdykqf.ws:149.20.56.32
199.2.137.252
205.188.161.4
74.208.64.145
83.68.16.6
97.74.200.45
143.215.143.11
xwfxr.ws:205.188.161.4
74.208.64.145
83.68.16.6
97.74.200.45
143.215.143.11
149.20.56.32
199.2.137.252
Terlihat bahwa ada beberapa domain conficker yang tidak exist ditunjukkan dengan warna abu-abu. Beberapa domain memiliki multi ip address.

Langkah ketiga di bawah untuk mengekstrak ip domain conficker yang exist dan menyimpan hasilnya ke file ip_domain_conficker_exist:
$ grep -oe "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" \
ip_domain_conficker | sort > ip_domain_conficker_exist

Langkah keempat buat script untuk menghitung jumlah ip yang sama berdasarkan data ip_domain_conficker:
#!/bin/bash
# File: hitung_modulus_ip_conficker.sh
file=ip_domain_conficker_exist
i=0
iplama='Inisialisasi'
while read ipbaru
do
  if [ $ipbaru == $iplama ]
  then
    i=$((i+1))
  else
    i=$((i+1))
    echo "$iplama: $i"
    i=0
    iplama=$ipbaru
  fi
  done <$file
  echo "$iplama: $((i+1))"
done
Jalankan scriptnya bash hitung_modulus_ip_conficker.sh.
Beberapa baris hasil perintah di atas ditunjukkan pada tampilan di bawah:
Inisialisasi: 1
110.75.195.7: 2
113.11.195.12: 1
114.167.126.140: 1
116.254.252.21: 1
117.74.76.174: 1
119.42.231.250: 6
121.101.213.189: 1
12.180.115.1: 1
122.249.22.110: 1
123.100.2.87: 1
124.217.198.74: 1
124.248.32.60: 1
124.42.122.43: 1
124.42.8.188: 1
124.47.0.2: 1
125.72.127.36: 1
127.0.0.1: 2
143.215.143.11: 30508
149.20.56.32: 30574
161.58.230.16: 1

Daftar ip conficker yang mempunyai frekuensi kemunculan terbanyak (tidak diurut berdasarkan ranking):
64.70.19.33
66.90.81.140
72.167.51.186
74.208.46.216
74.208.64.145
83.68.16.6
97.74.200.45
143.215.143.11
149.20.56.32
199.2.137.252
205.188.161.4
221.7.91.31

Langkah kelima, ambil salah satu ip yang kemunculannya terbanyak, 221.7.91.31, cek apakah datanya ada di ip dns cache mikrotik (penulis gunakan mikrotik versi 3.30, versi sebelumnya kemungkinan tidak mempunyai filtering untuk menampilkan kolom data):
ip conficker di dns cache mikrotik

Langkah keenam, buat rule di ip firewall address-list:
/ip firewall address
add address=64.70.19.33 list=conficker
add address=66.90.81.140 list=conficker
add address=72.167.51.186 list=conficker
add address=74.208.46.216 list=conficker
add address=74.208.64.145 list=conficker
add address=83.68.16.6 list=conficker
add address=97.74.200.45 list=conficker
add address=143.215.143.11 list=conficker
add address=149.20.56.32 list=conficker
add address=199.2.137.252 list=conficker
add address=205.188.161.4 list=conficker
add address=221.7.91.31 list=conficker

Kemudian buat rule di ip firewall filter untuk “menangkap akses” dari client ke ip-ip conficker berdasarkan address-list di atas:
/ip firewall filter
add chain=forward action=add-src-to-address-list dst-address-list=conficker address-list=src-conficker \
address-list-timeout=3d comment="ADD to address-list src-conficker"
Penulis buat timeout untuk 3 hari. Taruh filter ini di baris sebelum baris forward atau jump forward:
/ip firewall filter print
...
54 ;;; ADD src-add to conficker
   chain=forward action=add-src-to-address-list dst-address-list=conficker \
   address-list=src-conficker  address-list-timeout=3d
55 chain=forward action=jump jump-target=tcp protocol=tcp
56 chain=forward action=jump jump-target=udp protocol=udp
57 chain=forward action=jump jump-target=icmp protocol=icmp

Setelah beberapa jam. berikut tampilan ip firewall address-list:
list ip client yang akses ke ip conficker

Mengenali akses ke ip conficker di router linux
Untuk mengenali akses ke ip-ip conficker di linux, kita buat langkah-langkah sebagai berikut:
  1. Buat list ip coficker yang telah diperoleh dari cara di atas di /etc/conficker/ip.conficker.
    $ cat /etc/conficker/ip.conficker
    64.70.19.33
    66.90.81.140
    72.167.51.186
    74.208.46.216
    74.208.64.145
    83.68.16.6
    97.74.200.45
    143.215.143.11
    149.20.56.32
    199.2.137.252
    205.188.161.4
    221.7.91.31
  2. Buat script iptables.conficker.sh untuk menandai akses ke ip conficker.
    #!/bin/sh
    LAN_IFACE="eth0"
    IPTABLES="/usr/sbin/iptables"
    FIPCONFICKER="/etc/conficker/ip.conficker"
    while read IPCONFICKER
    do
      # uncomment 2 baris di bawah untuk blok akses ke ip conficker untuk kernel 2.6
      #$IPTABLES -t nat -I PREROUTING -i $LAN_IFACE -d $IPCONFICKER -j DROP \
      #   -m comment --comment "IP Conficker"
      # uncomment 1 baris di bawah untuk blok akses ke ip conficker untuk kernel 2.4
      #$IPTABLES -t nat -I PREROUTING -i $LAN_IFACE -d $IPCONFICKER -j DROP
      # log akses ke ip conficker dan simpan ke /var/log/syslog
      $IPTABLES -t nat -I PREROUTING -i $LAN_IFACE -d $IPCONFICKER -m limit \
          --limit 1/hour --limit-burst 1 -j LOG --log-prefix "CONFICKER " --log-ip-options
    done <$FIPCONFICKER
  3. Jalankan scriptnya sh iptables.conficker.sh
  4. Untuk melihat client yang akses ke ip conficker.
    $ sudo grep 'CONFICKER ' /var/log/syslog|cut -f1,2,3,10,11 -d' '
    Dec 21 16:21:23 SRC=192.168.0.252 DST=221.7.91.31

Terakhir, beritahu client agar cek PC windows apakah benar-benar terkena virus conficker dengan mengunjungi alamat http://www.confickerworkinggroup.org/infection_test/cfeyechart.html

Hasil tangkapan log dari salah satu warnet A:
Dec 22 14:40:34 SRC=192.168.0.19 DST=143.215.143.11
Dec 22 14:40:34 SRC=192.168.0.19 DST=205.188.161.4
Dec 22 14:40:34 SRC=192.168.0.19 DST=97.74.200.45
Dec 22 14:40:34 SRC=192.168.0.19 DST=83.68.16.6
Dec 22 14:40:35 SRC=192.168.0.19 DST=199.2.137.252
Dec 22 14:40:42 SRC=192.168.0.19 DST=221.7.91.31
Dec 22 14:40:49 SRC=192.168.0.19 DST=149.20.56.32
Dec 22 14:40:50 SRC=192.168.0.19 DST=74.208.64.145
Dec 22 22:08:58 SRC=192.168.0.19 DST=74.208.64.145
Dec 22 22:08:58 SRC=192.168.0.19 DST=199.2.137.252
Dec 22 22:08:58 SRC=192.168.0.19 DST=221.7.91.31
Dec 22 22:09:06 SRC=192.168.0.19 DST=205.188.161.4
Dec 22 22:09:06 SRC=192.168.0.19 DST=143.215.143.11
Dec 22 22:09:13 SRC=192.168.0.19 DST=83.68.16.6
Dec 22 22:09:13 SRC=192.168.0.19 DST=97.74.200.45
Dec 22 22:09:21 SRC=192.168.0.19 DST=149.20.56.32

Apa kesimpulan anda ?

Load Balancing Dual-WAN dengan DD-WRT

Topologi (dengan ascii art :) )
________
                                          +------------+        /
                                          |            |       |
                            +-------------+ Provider 1 +-------
        __                  |             |   (WAN 1)  |     /
    ___/  \_         +------+-------+     +------------+    |
  _/        \__      |     if1      |                      /
 /             \     |if0           |                      |
| Local network -----+    DD-WRT    |                      |     Internet
 \_           __/    |              |                      |
   \__     __/       |     if2      |                      \
      \___/          +------+-------+     +------------+    |
                            |             |            |     \
                            +-------------+ Provider 2 +-------
                                          |   (WAN 2)  |       |
                                          +------------+        \________
Source: http://lartc.org/lartc.html#LARTC.RPDB.MULTIPLE-LINKS


Penulis mengambil bahan referensi dari link di bawah ini:
  1. Materi Workshop ddwrt oleh Dani Firman Syah
  2. Dual WAN with one as standby backup.
  3. Dual WAN with failover.
  4. Routing for multiple uplinks/providers.
Penulis menggunakan wireless router WRT54GL 1.1 yang sudah diflash ke dd-wrt. Jika pembaca memiliki linksys yang belum diflash ke dd-wrt dan ingin mengetahui apakah linksysnya bisa diflash, silahkan cek di situs ini Router Database | www.dd-wrt.com. Setelah itu pelajari cara flash WRT54G di WRT54G v4 Installation Tutorial.
Then let’s rock ‘n roll :) .

Topologi Network
LAN
Network LAN : 192.168.1.0/24
IP IF0      : 192.168.1.254
IP Client (DHCP): 192.168.1.100 - 192.168.1.120

WAN 1
IP IF1   : 121.101.x.170
Gateway  : 121.101.x.254

WAN 2
IP IF2   : 121.101.y.170
Gateway  : 121.101.y.254

Setup DD-WRT
Jika telah selesai melakukan konfigurasi di atas maka klik tombol Save.

Menambah WAN port DD-WRT
Untuk mengkonfigurasikan IP address dari WAN 2, perlu di buat terlebih dahulu VLAN baru sebutlah namanya vlan1. Caranya dari web interface DD-WRT, klik menu VLANs dan konfigurasikan Port 4 sebagai VLAN baru.

Setup VLAN DD-WRT
Jangan lupa tekan tombol Save dan Apply untuk menyimpan konfigurasi yang sudah di buat.

Script Startup
Langkah selanjutnya adalah menulis script langsung di interface web dd-wrt. Penulis tidak mengikuti langkah sebagaimana yang ditulis Dani Firmansyah dan manual dd-wrt dari link di atas:
Selanjutnya masuk ke console dengan menggunakan telnet/ssh ke IP address lan (IF0) dan jalankan
command berikut ini:
 nvram set vlan0ports="1 2 3 5*"
 nvram set vlan1ports="4 5"
 nvram set vlan1hwname=et1
 nvram commit
 reboot

Dari menu web dd-wrt, masuk ke Administration > Commands. Isikan source code (edit seperlunya sesuai dengan topologi network anda) di bawah ini dan masukkan di kotak dialog Commands:
001# File Startup
002#
003# Descriptions:
004#   1. setup interface name for wan2
005#   2. setup routing table wan and wan2
006#   3. create load balancing
007#   4. write script cekkoneksi for dead gateway detection which will be run by cron.
008#
009# Created by Arief Yudhawarman (2009)
010# Email: awarmanff at yahoo.com
011#
012 
013# setup interface name for wan2
014#
015WAN2_IFNAME=vlan2
016WAN2_IPADDR=121.101.y.170
017WAN2_GATEWAY=121.101.y.254
018WAN2_NETMASK=255.255.255.0
019if [ "$(nvram get wan2_ipaddr)" != "$WAN2_IPADDR" ]; then
020   nvram set wan2_ifname=$WAN2_IFNAME
021   nvram set wan2_ipaddr=$WAN2_IPADDR
022   nvram set wan2_gateway=$WAN2_GATEWAY
023   nvram set wan2_netmask=$WAN2_NETMASK
024   nvram commit
025fi
026ifconfig $(nvram get wan2_ifname) up $(nvram get wan2_ipaddr) netmask $(nvram get wan2_netmask)
027#
028# setup routing table wan and wan2
029#
030ip rule flush
031ip rule add lookup main prio 32766
032ip rule add lookup default prio 32767
033ip rule add from $(nvram get wan_ipaddr) table 100 prio 100
034ip rule add fwmark 0x100 table 100 prio 101
035ip rule add from $(nvram get wan2_ipaddr) table 200 prio 200
036ip rule add fwmark 0x200 table 200 prio 201
037ip route flush table 100
038ip route flush table 200
039for TABLE in 100 200
040do
041   ip route | grep link | while read ROUTE
042   do
043      ip route add table $TABLE to $ROUTE
044   done
045done
046ip route add table 100 default via $(nvram get wan_gateway)
047ip route add table 200 default via $(nvram get wan2_gateway)
048#
049# load balancing
050#
051route del default
052ip route add default scope global nexthop via $(nvram get wan_gateway) dev $(nvram get wan_ifname) weight 1 \
053       nexthop via $(nvram get wan2_gateway) dev $(nvram get wan2_ifname) weight 1
054ip route flush cache
055#
056# write script cekkoneksi for dead gateway detection which will be run by cron.
057#
058echo '#!/bin/sh
059 
060# PARAM
061TIMEOUT=1
062ATTEMPT=5
063IPROUTE=/usr/sbin/ip
064ROUTE=/sbin/route
065SLEEP=/bin/sleep
066RM=/bin/rm
067NUM=0; WAN1=""; WAN2=""; SCORE=0
068 
069# SCORING
070#  0: All off
071#  2: WAN1 on
072#  4: WAN2 on
073#  6: WAN1 WAN2 on
074 
075# if not found /tmp/SCORE then created
076if [ ! -e /tmp/SCORE ]
077then
078  echo 6 > /tmp/SCORE
079fi
080 
081read OLDSCORE < /tmp/SCORE
082 
083# Fungsi
084PingGW() {
085i=1
086while [ $i -le $ATTEMPT ]
087do
088  if (/bin/ping -s 16 -W $TIMEOUT -c 1 $Gateway > /dev/null 2>&1)
089  then
090    touch -f /tmp/WAN${ID}-GOOD
091    break 1
092  fi
093  i=$(($i+1))
094done
095}
096 
097# cek koneksi WAN 1
098ID=1
099Gateway=$(nvram get wan_gateway)
100PingGW
101if [ -e /tmp/WAN1-GOOD ]
102then
103  LOGS="WAN 1 is ON...."
104  WAN1="nexthop via $(nvram get wan_gateway) dev $(nvram get wan_ifname) weight 1 "
105  NUM=`expr $NUM + 1`
106  SCORE=`expr $SCORE + 2`
107  $RM -f /tmp/WAN1-GOOD
108else
109  LOGS="WAN 1 is OFF..."
110fi
111 
112# cek koneksi modem WAN 2
113ID=2
114Gateway=$(nvram get wan2_gateway)
115PingGW
116if [ -e /tmp/WAN2-GOOD ]
117then
118  LOGS="${LOGS}WAN 2 is ON...."
119  WAN2="nexthop via $(nvram get wan2_gateway) dev $(nvram get wan2_ifname) weight 1 "
120  NUM=`expr $NUM + 1`
121  SCORE=`expr $SCORE + 4`
122  $RM -f /tmp/WAN2-GOOD
123else
124  LOGS="${LOGS}WAN 2 is OFF..."
125fi
126 
127echo $SCORE > /tmp/SCORE
128 
129if [ ! $SCORE -eq $OLDSCORE ]
130then
131  ##echo -e $LOGS >> /tmp/koneksi.log
132  # eksekusi loadbalancing baru
133  if [ $NUM -ge 1 ]
134  then
135    $ROUTE del default
136    $IPROUTE route add default scope global $WAN1 $WAN2
137    $SLEEP 1
138    $IPROUTE ro fl cache
139  else
140    $ROUTE del default
141    $SLEEP 1
142    $IPROUTE ro fl cache
143  fi
144fi' > /tmp/cekkoneksi
145chmod 755 /tmp/cekkoneksi
Keterangan:
  1. Baris 015-026: Setup interface untuk wan 2.
  2. Baris 030-047: Setup routing table wan (wan 1) and wan2.
  3. Baris 051-054: Buat load balancing.
  4. Baris 058-144: Buat script cekkoneksi untuk dead gateway detection dan tulis ke /tmp/cekkoneksi.
  5. Baris 145: chmod 755 /tmp/cekkoneksi agar bisa dieksekusi.
Setelah selesai klik tombol Save Startup.

Script Firewall
Sekarang buat firewall untuk NAT dual-wan dan melindungi router dd-wrt dari trafik yang tidak diinginkan. Script firewall ini akan diletakkan di baris teratas firewall yang telah diciptakan oleh dd-wrt (default).
01#
02# Use Firewall rule already provided by dd-wrt and make a new one
03#
04#
05# DENY_PORTS
06#
07iptables -N DENY_PORTS
08iptables -F DENY_PORTS
09iptables -A DENY_PORTS -p tcp --dport 137:139 -j DROP
10iptables -A DENY_PORTS -p tcp --sport 137:139 -j DROP
11iptables -A DENY_PORTS -p tcp --dport 445 -j DROP
12iptables -A DENY_PORTS -p tcp --sport 445 -j DROP
13iptables -A DENY_PORTS -p tcp --dport 1433 -j DROP
14iptables -A DENY_PORTS -p tcp --sport 1433 -j DROP
15iptables -A DENY_PORTS -p tcp --dport 2049 -j DROP
16iptables -A DENY_PORTS -p tcp --sport 2049 -j DROP
17iptables -A DENY_PORTS -p tcp --dport 5432 -j DROP
18iptables -A DENY_PORTS -p tcp --sport 5432 -j DROP
19iptables -A DENY_PORTS -p tcp --dport 5999:6063 -j DROP
20iptables -A DENY_PORTS -p tcp --sport 5999:6063 -j DROP
21iptables -A DENY_PORTS -p tcp --dport 5900:5910 -j ACCEPT
22iptables -A DENY_PORTS -p tcp --sport 5900:5910 -j ACCEPT
23iptables -A DENY_PORTS -p tcp --dport 9704 -j DROP
24iptables -A DENY_PORTS -p tcp --sport 9704 -j DROP
25iptables -A DENY_PORTS -p tcp --dport 20034 -j DROP
26iptables -A DENY_PORTS -p tcp --dport 12345:12346 -j DROP
27iptables -A DENY_PORTS -p tcp --sport 27665 -j DROP
28iptables -A DENY_PORTS -p tcp --dport 27665 -j DROP
29iptables -A DENY_PORTS -p udp --sport 27444 -j DROP
30iptables -A DENY_PORTS -p udp --dport 27444 -j DROP
31iptables -A DENY_PORTS -p udp --sport 31335 -j DROP
32iptables -A DENY_PORTS -p udp --dport 31335 -j DROP
33iptables -A DENY_PORTS -p tcp --dport 31337 -j DROP
34iptables -A DENY_PORTS -p udp --dport 31337 -j DROP
35iptables -A DENY_PORTS -p tcp --sport 31337 -j DROP
36iptables -A DENY_PORTS -p udp --sport 31337 -j DROP
37#
38# DST_EGRESS
39#
40iptables -N DST_EGRESS
41iptables -F DST_EGRESS
42## Class A Reserved
43iptables -A DST_EGRESS -d 10.0.0.0/8 -j DROP
44## Class B Reserved
45iptables -A DST_EGRESS -d 172.16.0.0/12 -j DROP
46## Class C Reserved
47iptables -A DST_EGRESS -d 192.168.0.0/16 -j DROP
48## Class D Reserved
49iptables -A DST_EGRESS -d 224.0.0.0/4 -j DROP
50## Class E Reserved
51iptables -A DST_EGRESS -d 240.0.0.0/5 -j DROP
52#
53iptables -I FORWARD 1 -p tcp -j DENY_PORTS
54iptables -I FORWARD 1 -p udp -j DENY_PORTS
55iptables -I FORWARD 1 -p all -j DST_EGRESS        
56 
57#
58# SNAT
59#
60iptables -t nat -D POSTROUTING 1
61iptables -t nat -D POSTROUTING 1
62iptables -t nat -D POSTROUTING 1
63iptables -t nat -A POSTROUTING -o $(nvram get wan_ifname) -j SNAT --to-source $(nvram get wan_ipaddr)
64iptables -t nat -A POSTROUTING -o $(nvram get wan2_ifname) -j SNAT --to-source $(nvram get wan2_ipaddr)
Setelah selesai klik tombol Save Firewall.

Hasilnya seperti gambar di bawah:
Administration Commands DDWRT

Cron/Schedule untuk cek koneksi
Scrip cekkoneksi telah dibuat pada langkah di atas, selanjutnya buat schedule atau cron job yang akan eksekusi script tersebut setiap menit. Caranya masuk ke menu Administration > Managemenet dan isikan di kotak dialog Additional Cron Jobs:
* * * * * root /tmp/cekkoneksi

Administration Cronjob DD-WRT
Klik tombol Save dan selanjutnya langkah terakhir klik Apply Settings.
Jangan lupa membakup konfigurasi yang telah dibuat: Administration > Backup
Tambahan, untuk tes apakah script cekkoneksi berjalan sesuai yang diharapkan, cabut 1 koneksi wan (wan 1 atau wan 2). Tes koneksi dengan ping atau browsing setelah 1 menit apakah masih ada gangguan atau tidak.

Load Balancing Mikrotik + Proxy

Load balancing Mikrotik kali ini saya coba dengan 2 line speedy digabungkan dengan mesin squid web proxy, berbeda dengan load balancing versi sebelum ini. Pada load balancing kali ini saya tambahkan redirect ke squid dengan mengunakan mikrotik sebagai mesin load balancer-nya.
Langkah pertama install dulu mikrotik seperti di tutorial ini, lalu sebelum mencoba, saya sarankan mereset mikrotik dulu, supaya kembali pada settingan default. untuk reset bisa menggunkan perintah : “/sy reset“.
Setelah Mikrotik diinstall, pastikan dulu bahwa interface pada mikrotik ada 4biji, interface 1 menuju ke klient, interface 2 menuju ke Speedy 1, interface 3 menuju ke speedy 2 dan interface 4 menuju ke squid web proxy.
untuk setting squid bisa dilihat disini, dan baiklah kita mulai copy paste setting dibawah ini pada terminal Mikrotik :
/in ethset ether1 name="intranet"  disabled=no
set ether2 name="speedy-1"  disabled=no
set ether3 name="speedy-2"  disabled=no
set ether4 name="proxy"  disabled=no
/ip addadd address=192.168.1.2/24 interface=speedy-1 comment="ke speedy-1"
add address=192.168.2.2/24 interface=speedy-2 comment="ke speedy-2"
add address=192.168.11.1/27 interface=intranet comment="ke Hub"
add address=192.168.10.2/30 interface=proxy comment="ke-proxy"
/ ip dnsset primary-dns=202.134.1.10 secondary-dns=202.134.0.155 allow-remote-requests=yes cache-size=4048KiB cache-max-ttl=1w
/ ip firewall mangleadd chain=prerouting in-interface=intranet connection-state=new nth=1,2,0 action=mark-connection new-connection-mark=satu passthrough=yes comment=""
add chain=prerouting in-interface=intranet connection-mark=satu action=mark-routing new-routing-mark=satu passthrough=no comment=""
add chain=prerouting in-interface=intranet connection-state=new nth=1,2,1 action=mark-connection new-connection-mark=dua passthrough=yes comment=""
add chain=prerouting in-interface=intranet connection-mark=dua action=mark-routing new-routing-mark=dua passthrough=no comment="" disabled=no
add chain=prerouting in-interface=proxy connection-state=new nth=1,2,0 action=mark-connection new-connection-mark=tiga passthrough=yes comment=""
add chain=prerouting in-interface=proxy connection-mark=tiga action=mark-routing new-routing-mark=tiga passthrough=no comment=""
add chain=prerouting in-interface=proxy connection-state=new nth=1,2,1 action=mark-connection new-connection-mark=empat passthrough=yes comment=""
add chain=prerouting in-interface=proxy connection-mark=empat action=mark-routing new-routing-mark=empat passthrough=no comment="" disabled=no
/ ip firewall natadd chain=srcnat out-interface=speedy-1 connection-mark=satu action=src-nat to-addresses=192.168.1.1 to-ports=0-65535 comment="" disabled=no
add chain=srcnat out-interface=speedy-2 connection-mark=dua action=src-nat to-addresses=192.168.2.1 to-ports=0-65535 comment="" disabled=no
nat add chain=dstnat protocol=tcp dst-port=80 action=redirect to-ports=3128
add chain=dstnat protocol=tcp dst-port=3128 action=redirect to-ports=3128
add chain=dstnat protocol=tcp dst-port=8080 action=redirect to-ports=3128
/ ip firewall connection trackingset enabled=yes tcp-syn-sent-timeout=2s tcp-syn-received-timeout=2s tcp-established-timeout=1d tcp-fin-wait-timeout=5s tcp-close-wait-timeout=5s tcp-last-ack-timeout=5s tcp-time-wait-timeout=5s tcp-close-timeout=5s udp-timeout=5s udp-stream-timeout=1m icmp-timeout=5s generic-timeout=5m tcp-syncookie=no
/ ip routeadd dst-address=0.0.0.0/0 gateway=192.168.1.1 scope=255 target-scope=10 routing-mark=satu comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=192.168.2.1 scope=255 target-scope=10 routing-mark=dua comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=192.168.1.1 scope=255 target-scope=10
/ ip proxyset enabled=yes port=3128 parent-proxy=192.168.10.1:3128 maximal-client-connecions=1000 maximal-server-connectons=1000
Ohya mikrotik yang saya gunakan untuk testing kali ini adalah versi bajakan 2.9.27, untuk versi 3 keatas silahkan lihat setting mangle-nya pada tulisan ini dan tulisan ini. ohya kalo pake bajakan saya sarankan setelah settingannya berjalan, silahkan beli Mikrotik ASLI ya!!


source: http://jauhdimata.com/load-balancing-mikrotik-proxy

Load balancing 7 WAN dengan mikrotik RB493 + proxy external

Mohon maaf sebelumnya routerboard yang benar RB493 salah tulis menjadi RB439. Judul penulis ganti menjadi Load balancing 7 WAN dengan mikrotik RB493 + proxy external, alamat link tetap agar pembaca baru tidak menemui kesulitan.
Manual produk RB493:
  1. Brochure
  2. Startup Guide
Proyek yang pernah penulis lakukan untuk load balancing di mikrotik router board RB493 dengan 7 WAN (speedy) ditambah satu linux untuk proxy server squid. Di sini dipakai dua metode load balancing:
  1. ECMP (Equal Cost Multi-Path) Routing untuk routing dari mikrotik sendiri.
  2. Policy Based Routing untuk routing dari client LAN dan proxy server.
Referensi:
  1. Routes, Equal Cost Multipath Routing, Policy Routing
  2. Mikrotik policy routing
Untuk deteksi koneksi internet yang putus di salah satu atau beberapa modem speedy digunakan teknik khusus yang saya beri nama dynamic routing and dead gateway detection yang source codenya bisa dilihat di gambar bawah.

Topologi
Topologi RB493 + 7 WAN + 1 Proxy

System resources RB493
system resource
Konfigurasi interface
interface list
Keterangan:
  1. eth1: local area network (lan) terlihat menerima trafik dari mikrotik sebesar 10.4Mbps (Tx).
  2. eth2: mikrotik menerima paket dari source http dan cache hit dari mesin proxy squid sebesar 9.9Mbps (Rx) dan forward trafik ke mesin proxy sebesar 3.8Mbps. Secara kasar cache hit: 9.9Mbps – 3.8Mbps = 6.1Mpbs
  3. eth3: modem adsl speedy wan1.
  4. eth4: modem adsl speedy wan2.
  5. eth5: modem adsl speedy wan3.
  6. eth6: modem adsl speedy wan4.
  7. eth7: modem adsl speedy wan5.
  8. eth8: modem adsl speedy wan6.
  9. eth9: modem adsl speedy wan7.

Routing list
routing list
Keterangan:
  1. Tujuh baris teratas membuat routing mark yang sesuai dengan koneksi ke spidi (wan1 – wan7).
  2. Baris yang ada comment “LB Router” itu metode loadbalancing dengan ECMP (Equal Cost Multi-Path) Routing.
  3. Untuk deteksi koneksi setiap modem speedy dari modem 1 s/d 7 (wan1 s/d wan7) maka dibuatkan routing statik dengan ip tujuan berturut-turut 202.134.1.10, 202.155.0.20, 125.160.0.97, 202.154.1.2, 218.100.27.179, 202.152.1.1, 125.167.72.1 (pada gambar terlihat di kolom destination).

Routing policy (ip route list)
routing policy

Mangle untuk loadbalancing n+th (policy based routing) dan queue management
ip firewall mangle
Keterangan:
  1. Baris 0 menandai paket icmp dari router ke internet.
  2. Baris 1 menandai paket dari client (user) melalui device lan ke router. Gunanya mangle ini agar trafik ini tidak kena bandwidth management.
  3. Baris 2 menandai paket cache hit dari proxy server eksternal ke client. Gunanya agar object cache hit dari proxy tidak dilimit atau dishaping.
  4. Baris 3 menandai paket dari client lan ke proxy non port 8080 protocol tcp.
  5. Baris 4 menandai paket lokal dari proxy ke client non port 8080 protocol tcp.
  6. Baris 5 menandai paket dari proxy ke client port 8080 protocol tcp.
  7. Baris 6 menandai paket dari internet dengan tujuan client.
  8. Baris 7 menandai paket dari client ke port 80 (www) yang dilewatkan secara transparent ke proxy eksternal.
  9. Baris 8 – 9 menandai paket dari client ke port 25 dan 6600-7000 protocol tcp agar selalu dilewatkan ke device wan tertentu.
  10. Baris 10 dan selanjutnya membuat loadbalancing dengan n+th untuk paket yang datang client dan proxy server.

N A T
ip firewall nat
Keterangan:
  1. Baris 0 dan 1 membelokkan trafik request dns dari client ke dns cache mikrotik.
  2. Baris 2 membelokkan trafik ke port 80/tcp dari client ke proxy server external.
  3. Baris 3 – 9 masquerade untuk koneksi client ke internet.
  4. Baris 10 – 16 masquerade untuk koneksi proxy server external ke internet.
  5. Baris 17 masquerade untuk koneksi client ke tujuan non proxy server.
  6. Baris 18 masquerade untuk koneksi proxy server ke tujuan non clients.

Bandwidth managemenet dengan Queue Simple
queue simple

Tool Netwatch
tool netwatch
Alat bantu netwatch akan memonitor koneksi lokal ke masing-masing modem adsl.

Source code dynamic routing & dead gateway detection
dynamic routing & dead gateway detection
Keterangan:
  1. Script di atas dijalankan per 1 menit melalui schedule.
  2. Saat dijalankan yang dilakukan adalah cek status (cek koneksi lokal) modem adsl speedy di tool netwatch.
  3. Selanjutnya adalah cek koneksi internet modem dengan ping ke ip tujuan tertentu yang telah diset routingnya secara statik agar melalui modem tersebut.
  4. Selain metode ping juga dilakukan pengamatan trafik yang lewat interface ke modem.
  5. Hal ini dilakukan berulang-ulang sampai semua modem adsl speedy selesai dimonitor baik koneksi lokal maupun internet.
  6. Jika ada salah satu atau beberapa koneksi internet modem putus maka dilakukan perhitungan kembali loadbalancing n+th dan penentuan kembali statik routing untuk tujuan ke port 25/tcp dan 6600-7000/tcp.
  7. Koneksi internet modem yang terputus akan ditulis di log.

Load Balancing n+th in action
Analisa ini untuk melihat apakah load balancing n+th dijalankan dengan benar. Untuk itu akan dimonitor trafik dari salah satu client, ip 192.168.0.37. Client menjalankan aplikasi Download Accelerator Plus (DAP) dengan membuka sesi download lebih dari 5. Buka Tools > Torch lalu isi seperti di bawah ini:
Interface: lan
Src. Address: 192.168.0.37
Dst. Address: 0.0.0.0/0
Protocol : tcp
Port  : any
Kotak Src. Address, Dst. Address, Protocol (pilih tcp) dan Port (pilih any) dicentang dahulu.
monitoring trafik dari client 192.168.0.37
Terlihat ip tujuan adalah 174.140.128.13, sekarang stop torch dan isikan parameter seperti di bawah ini untuk monitor trafik yang lewat interface wan1:
Interface: wan1
Src. Address: 174.140.128.13
Dst. Address: 0.0.0.0/0
Lakukan hal yang sama untuk monitor trafik yang lewat interface wan2 – wan7. Maka akan diperoleh gambar-gambar berikut:
wan1-client-37
wan2-client-37
wan3-client-37
wan4-client-37
wan5-client-37
wan6-client-37
wan7-client-37

Trafik monitoring mikrotik di device eth0 (LAN)
mrtg
Keterangan:
  1. Pukul 01:00-02:00, trafik mencapai limit bandwidth root yang diset 5Mbps (gambar tengah).
  2. Pukul 16:00 trafik loss sampai hampir 8Mbps saat bandwidth management dilepas (gambar kanan).
  3. Bahan bacaan:
  1. Load Balancing nth buat Mikrotik Ver 3.xx dan 2.9xx
  2. ECMP load balancing with masquerade
  3. ip firewall mangel NTH untuk load balance 
source : http://awarmanf.wordpress.com/2010/01/06/lb7wan-rb439-proxy-external/

3.21.2010

Transkrip Pidato Bung Tomo 10 November 1945

Bismillahiromannirrohim
Merdeka..!!
Sodara-sodara..! rakyat jelata diseluruh Indonesia, terutama sodara-sodara penduduk kota Surabaya.
Kita semuanya telah mengetahui, bahwa hari ini tentara inggris telah menyebarken pamflet-pamflet yang memberiken suatu ancaman kepada kita semua. Kita diwajibken untuk dalam waktu yang mereka tentuken, menyerahken senjata-senjata yang telah kita rebut dari tangannya tentara jepang. Mereka telah minta supaya kita datang pada mereka itudengan mengangkat tangan. Mereka telah minta supaya kitang datang pada mereka itu dengan dengan membawa bendera putih tanda bahwa kita menyerah kepada mereka.
This video was embedded using the YouTuber plugin by Roy Tanck. Adobe Flash Player is required to view the video.
Sodara-sodara didalam pertempuran-pertempuran yang lampau kita sekalian telah menunjuken bahwa rakyat Indonesia di Surabaya, pemuda-pemuda yang berasal dari Maluku, pemuda-pemuda yang berasal dari Sulawesi, pemuda-pemuda yang berasal dari pulau Bali, pemuda-pemuda yang berasal dari Kalimantan, pemuda-pemuda dari seluruh Sumatra, pemuda Aceh, pemuda Tapanuli dan seluruh pemuda Indonesia yang ada di Surabaya ini, didalam pasukan-pasukan mereka masing-masing, dengan pasukan-pasukan rakyat yang dibentuk dikampung-kampung telah menunjuken satu pertahanan yang tidak bisa dijebol, telah menunjuken satu kekuatan sehingga mereka itu terjepit dimana-mana. Hanya karena taktik yang licik daripada mereka itu sodara-sodara, dengan mendatangkan presiden dan pemimpin-pemimpin lainnya ke Surabaya ini, maka kita tunduk untuk meberhentikan pertempuran. Tetapi pada masa itu mereka memperkuat diri, dan setelah kuat sekarang inilah keadaannya.
Sodara-sodara kita semuanya, kita bangsa indonesia yang ada disurabaya ini akan menerima tantangan tentara inggris itu. Dan kalau pimpinan tentara inggris yang ada disurabaya ingin mendengarkan jawaban rakyat Indonesia, ingin mendengarkan jawaban seluruh pemuda Indonesia yang ada di surabaya ini.
  • Dengarkanlah ini..tentara inggris!!
  • Ini jawaban kita..!!
  • Ini jawaban rakyat surabaya,
  • Ini jawaban pemuda Indonesia kepada kau sekalian.
  • Hai tentara inggris..!!
  • Kau mengendaki bahwa kita ini akan membawa bendera putih untuk takluk kepadamu.
  • Kau menyuruh kita mengangkat tangan datang kepadamu
  • Kau menyuruh kita membawa senjata-senjata yang telah kita rampas dari tentara-tentara jepang untuk diserahkan kepadamu.
Tuntutan itu, walaupun kita tahu bahwa kau sekalaian mengancam kita untuk menggempur kita dengan dengan seluruh kekuatan yang ada, tetapi inilah jawaban kita, selama banteng-banteng indonesia masih mempunyai darah merah yang dapat membikin secarik kain putih, merah dan putih. Maka selama itu tidak akan kita menyerah kepada siapapun juga.
Sodara-sodara rakyat Surabaya, bersiaplah..!! keadaan genting. Tetapi saya peringatkan sekali lagi, jangan mulai menembak, baru kalau kita ditembak, maka kita akan ganti menyerang mereka itu. Kita tunjukkan bahwa kita orang ini benar-benar yang ingin merdeka. Dan untuk kita sodara-sodara, lebih baik kita hancur-lebur, dari pada tidak merdeka. Semboyan kita tetap..!! Merdeka atau mati. Dan Kita yakin sodara-sodara pada akhirnya pastilah kemenangan akan jatuh ketangan kita, sebab Alloh selalu berada dipihak pada yang benar. Percayalah sodara-sodara Tuhan akan melindungi kita sekalian.
Allohu Akbar…, Allohu Akbar…, Allohu Akbar.
Merdeka…!!
Transkrip Pidato Bung Tomo ini adalah potret pemuda era awal kemerdekaan, begitu kuat rasa nasionalismenya, begitu besar pengorbanannya, begitu cinta pada bangsa Indonesia ini. Bagaimana dengan kita, generasi selanjutnya..? apa yang telah kita lakukan pada bangsa ini? apa yang telah kita berikan pada negara ini? apa yang telah kita korbankan pada tanah air ini?