Posts Tagged OpenWrt

DLINK DIR-300 A1 OpenWRT Multi WAN Router Versi 2

Update 09-Januari-2013:
Silahkan mereferensi artikel sebelumnya yang sudah terupdate.

Artikel ini merupakan update dari https://tohenk.wordpress.com/2010/10/25/d-link-dir-300-sebagai-router-wireless-multi-wan-dengan-openwrt/, dengan perbedaan:

  1. OpenWRT trunk rev. 27025.
  2. Kernel 2.6.38.7.
  3. Wifi menggunakan ath5k (mac80211), sebelumnya madwifi.

Langkah-langkah yang digunakan masih mengacu pada artikel pertama, hanya untuk file vmlinux dan rootfs dapat diambil di sini:

Jika sebelumnya RedBoot sudah diupdate maka tidak diperlukan update lagi, langsung flash device dengan firmware di atas.

Semua konfigurasi juga mengacu pada artikel sebelumnya, perbedaan hanya pada konfigurasi wireless (/etc/config/wireless):

config 'wifi-device' 'wlan0'
	option 'type' 'mac80211'
	option 'channel' '11'
	option 'macaddr' '00:11:22:33:44:55'
	option 'hwmode' '11g'
	option 'country' 'ID'

	# REMOVE THIS LINE TO ENABLE WIFI:
	option 'disabled' '0'

config 'wifi-iface'
	option 'device' 'wlan0'
	option 'network' 'lan'
	option 'mode' 'ap'
	option 'ssid' 'OpenWRT'
	option 'encryption' 'psk2'
	option 'key' 'secretkey'
	option 'wps_pushbutton' '1'
	option 'wps_pin' '12345678'

Sedangkan konfigurasi LED WIFI pada /etc/sysctl.conf tidak diperlukan lagi, karena driver wifi yang digunakan adalah mac80211 (saat kompilasi firmware ini, LED belum bisa bekerja pada driver ath5k AHB).

, ,

2 Comments

D-LINK DIR-300 Sebagai Router Wireless Multi WAN dengan OpenWrt

OpenWrt sebagai distribusi Linux untuk Sistem Embedded, dengan fleksibilitas dan banyaknya paket-paket aplikasi, dapat diterapkan pada D-LINK DIR-300 REV. A1, sehingga dapat dijadikan sebagai Router Wireless Multi WAN dengan Load Balancing.

Langkah-langkahnya secara garis besar adalah:

  1. Mengganti RedBoot.
  2. Flash OpenWrt.
  3. Konfigurasi OpenWrt untuk Multi WAN Load Balancing.
  4. Mengaktifkan WiFi Protected Setup (WPS).
  5. Konfigurasi LED dan Tombol WPS.

Bahan-bahan yang perlu dipersiapkan adalah:

  1. PC dengan OS Windows.
  2. TFTPD32.
  3. ap61.ram dan ap61.rom.
  4. Utility RedBoot.
  5. Firmware OpenWrt (vmlinux, rootfs).

Firmware OpenWrt di atas adalah OpenWrt trunk revisi 23620 35061 khusus untuk DIR-300 dengan beberapa fitur:

  1. Menggunakan Linux Kernel 2.6.35.7 3.3.8.
  2. LED GPIO dan GPIO Button yang sudah disesuaikan dan berfungsi baik.
  3. Skrip hostapd.sh pada paket wpad sudah dimodifikasi untuk mendukung WPS.
  4. Paket-paket yang terdapat dalam firmware: wpad (full), hostapd-utils, multiwan, ifstat, iperf, iptraf, tcpdump, ntpdate, macchanger.

Persiapan:

  1. Install TFTPD32 dan pastikan file-file ap61.ram, ap61.rom, openwrt-atheros-dir-300-a1-vmlinux-patched.lzma, openwrt-atheros-dir-300-a1-root.squashfs dapat dilayani oleh TFTPD32 Server.
  2. Ekstrak RedBoot.zip ke suatu folder, di dalamnya terdapat file-file Putty.exe, redboot.cmd, dan redboot2.cmd.

Mengganti RedBoot

Catatan:
Penggantian RedBoot ini cukup dilakukan sekali saja, jika ingin flash ulang OpenWrt tidak perlu dilakukan lagi.

RedBoot asli DIR-300 perlu diganti dikarenakan tidak memiliki fungsi-fungsi fis yang lengkap. Secara umum, penggantian RedBoot ini sama dengan flashing DD-WRT pada DIR-300.

  1. Matikan DIR-300, colokkan kabel lan pada port wan dan atur IP komputer pada 192.168.20.80/24.
  2. Jalankan TFTPD32 Server.
  3. Jalankan file redboot2.cmd, lalu nyalakan DIR-300 dan tunggu hingga jendela Putty tampil. Mungkin perlu mencoba beberapa kali untuk mendapatkan prompt RedBoot>.
  4. Pada prompt RedBoot> ketik perintah-perintah berikut:
    load ap61.ram
    go

    Setelah perintah go, jendela Putty akan tidak bereaksi. Hal ini normal, tutup jendela Putty dan lanjutkan langkah berikutnya.

  5. Cabut lalu colokkan kabel lan pada port lan 1-4, atur IP komputer pada 192.168.1.2/24, pastikan juga TFTPD32 Server siap melayani pada alamat IP baru tersebut. Jalankan file redboot.cmd hingga Prompt DD-WRT> ditampilkan.
  6. Ketik perintah-perintah berikut, dan pastikan jangan matikan atau mencabut kabel lan.
    DD-WRT> ip_address -l 192.168.1.1/24 -h 192.168.1.2
    IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
    Default server: 192.168.1.2
    DD-WRT> fis init
    About to initialize [format] FLASH image system - continue (y/n)? y
    *** Initialize FLASH Image System
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x807f0000-0x80800000 at 0xbffe0000: .
    DD-WRT> load -r -b %{FREEMEMLO} ap61.rom
    Using default protocol (TFTP)
    Raw file loaded 0x80080000-0x800a8717, assumed entry at 0x80080000
    DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
    An image named 'RedBoot' exists - continue (y/n)? y
    ... Erase from 0xbfc00000-0xbfc30000: ...
    ... Program from 0x80080000-0x800a8718 at 0xbfc00000: ...
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x807f0000-0x80800000 at 0xbffe0000: .
    DD-WRT> reset

Flashing OpenWrt

Setelah RedBoot di-upgrade, firmware OpenWrt siap diflash ke DIR-300.

  1. Matikan DIR-300, colokkan kabel lan pada port lan 1-4 dan atur IP komputer pada 192.168.1.2/24.
  2. Jalankan TFTPD32 Server.
  3. Jalankan file redboot.cmd, lalu nyalakan DIR-300 dan tunggu hingga jendela Putty tampil.
  4. Pada prompt DD-WRT> ketik perintah-perintah berikut:
    == Executing boot script in 0.740 seconds - enter ^C to abort
    ^C
    DD-WRT> ip_address -l 192.168.1.1/24 -h 192.168.1.2
    IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
    Default server: 192.168.1.2
    DD-WRT> load -r -b %{FREEMEMLO} openwrt-atheros-dir-300-a1-vmlinux-patched.lzma
    Using default protocol (TFTP)
    Raw file loaded 0x80040800-0x801107ff, assumed entry at 0x80040800
    DD-WRT> fis init
    About to initialize [format] FLASH image system - continue (y/n)? y
    *** Initialize FLASH Image System
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
    DD-WRT> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
    ... Erase from 0xbfc30000-0xbfd00000: .............
    ... Program from 0x80040800-0x80110800 at 0xbfc30000: .............
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
    DD-WRT> load -r -b %{FREEMEMLO} openwrt-atheros-dir-300-a1-root.squashfs
    Using default protocol (TFTP)
    Raw file loaded 0x80040800-0x802807ff, assumed entry at 0x80040800
    DD-WRT> fis create -e 0 -r 0x80041000 -l 0x2e0000 rootfs
    ... Erase from 0xbfd00000-0xbffe0000: ..............................................
    ... Program from 0x80040800-0x80280800 at 0xbfd00000: ....................................
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
    DD-WRT> fconfig -d
    Run script at boot: true ? true
    Boot script:
    Enter script, terminate with empty line
    >> fis load -l vmlinux.bin.l7
    >> exec
    >>
    Boot script timeout (1000ms resolution): 1 ? 1
    Use BOOTP for network configuration: false ? false
    Gateway IP address:  ?
    Local IP address: 192.168.1.1 ?
    Local IP address mask: 255.255.255.0 ?
    Default server IP address:  ?
    Console baud rate: 9600 ?
    GDB connection port: 9000 ?
    Force console for special debug messages: false ?
    Network debug at boot time: false ?
    Update RedBoot non-volatile configuration - continue (y/n)? y
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
    DD-WRT> reset

Konfigurasi OpenWrt untuk Multi WAN Load Balancing

Pada contoh berikut, LAN berada pada network 192.168.1.0/24, WAN 1 berada ada pada network 192.168.10.0/24, dan WAN 2 berada pada network 192.168.11.0/24.

Konek ke router dengan telnet menggunakan Putty ke ip 192.168.1.1, pada shell berikan perintah passwd untuk mengganti password root. Pemberian password root otomatis akan menonaktifkan telnet dan mengaktifkan SSH. Untuk selanjutnya koneksi ke router dapat menggunakan SSH.

/etc/config/network

Konfigurasi loopback dan LAN:

config 'interface' 'loopback'
        option 'ifname' 'lo'
        option 'proto' 'static'
        option 'ipaddr' '127.0.0.1'
        option 'netmask' '255.0.0.0'

config 'interface' 'lan'
        option 'type' 'bridge'
        option 'proto' 'static'
        option 'ipaddr' '192.168.1.1'
        option 'netmask' '255.255.255.0'
        option 'ifname' 'eth0.1'

Konfigurasi berikut ini membagi swith menjadi 3 vlan, yaitu LAN (eth0.1) port dengan label 2 – 4, WAN 1 (eth0.2) dengan label 1, dan WAN 2 (eth0.3) dengan label wan:

config 'switch' 'eth0'
        option 'name' 'eth0'
        option 'reset' '1'
        option 'enable_vlan' '1'

config 'switch_vlan' 'eth0_1'
        option 'device' 'eth0'
        option 'vlan' '1'
        option 'ports' '0 1 2 5t'

config 'switch_vlan' 'eth0_2'
        option 'device' 'eth0'
        option 'vlan' '2'
        option 'ports' '3 5t'

config 'switch_vlan' 'eth0_3'
        option 'device' 'eth0'
        option 'vlan' '3'
        option 'ports' '4 5t'

Konfigurasi WAN 1 dan WAN 2:

config 'interface' 'wan1'
        option 'ifname' 'eth0.2'
        option 'proto' 'static'
        option 'ipaddr' '192.168.10.100'
        option 'netmask' '255.255.255.0'
        option 'gateway' '192.168.10.1'
        option 'dns' '180.131.144.144 180.131.145.145'

config 'interface' 'wan2'
        option 'ifname' 'eth0.3'
        option 'proto' 'static'
        option 'ipaddr' '192.168.11.100'
        option 'netmask' '255.255.255.0'
        option 'gateway' '192.168.11.1'
        option 'dns' '208.67.222.222 208.67.220.220'

/etc/config/firewall

Secara default zona wan dalam konfigurasi firewall adalah interface wan, sedangkan konfigurasi di atas menggunakan interface wan1 dan wan2.

config zone
        option name             wan
        option input    REJECT
        option output   ACCEPT
        option forward  REJECT
        option masq             1
        option mtu_fix  1
        option network  'wan1 wan2'

/etc/config/multiwan

Ini adalah konfigurasi load balancing dan failover untuk multi wan.

config 'multiwan' 'config'
        option 'default_route' 'balancer'
        # health_monitor below is defaulted to parallel, and can be set to
        # serial to save system resources.
        option 'health_monitor' 'serial'
        # option 'debug' '1'

config 'interface' 'wan1'
        option 'weight' '10'
        option 'health_interval' '10'
        option 'icmp_hosts' 'gateway'
        # icmp_count is defaulted to 1, and can be increased to reduce
        # false positives.
        option 'icmp_count' '3'
        option 'timeout' '3'
        option 'health_fail_retries' '3'
        option 'health_recovery_retries' '5'
        option 'failover_to' 'wan2'
        option 'dns' 'auto'

config 'interface' 'wan2'
        option 'weight' '10'
        option 'health_interval' '10'
        option 'icmp_hosts' 'gateway'
        option 'icmp_count' '3'
        option 'timeout' '3'
        option 'health_fail_retries' '3'
        option 'health_recovery_retries' '5'
        option 'failover_to' 'wan1'
        option 'dns' 'auto'

config 'mwanfw'
       option 'src' '192.168.1.0/24'
       option 'dst' 'ftp.netlab7.com'
       option 'proto' 'tcp'
       option 'ports' '21'
       option 'wanrule' 'wan2'

# VoIP traffic goes through wan
# config 'mwanfw'
        # option 'src' '192.168.1.0/24'
        # option 'proto' 'udp'
        # option 'port_type' 'source-ports'
        # option 'ports' '5060,16384:16482'
        # option 'wanrule' 'wan'

config 'mwanfw'
       option 'src' '192.168.0.3'
       option 'proto' 'icmp'
       option 'wanrule' 'balancer'

config 'mwanfw'
       option 'dst' 'www.whatismyip.com'
       option 'wanrule' 'fastbalancer'

/etc/config/dhcp

Konfigurasi berikut perlu ditambahkan untuk mengabaikan permintaan DHCP pada WAN 1 dan WAN 2.

config dhcp wan1
        option interface        wan1
        option ignore   1

config dhcp wan2
        option interface        wan2
        option ignore   1

Reboot router dengan memberikan perintah reboot pada shell.

Mengaktifkan WiFi Protected Setup (WPS)

/etc/config/wireless

Konfigurasi wireless berikut menggunakan WPA2-Personal. Sesuaikan SSID dan passphrase (key) dengan konfigurasi wireless anda. Sedangkan wps_pin dapat diisi dengan PIN yang terdapat pada label di bawah DIR-300.

config 'wifi-device' 'wifi0'
        option 'type' 'atheros'
        option 'channel' '3'
        option 'disabled' '0'
        option 'country' '360'

config 'wifi-iface'
        option 'device' 'wifi0'
        option 'network' 'lan'
        option 'mode' 'ap'
        option 'ssid' 'SSID'
        option 'encryption' 'psk2'
        option 'key' 'mysecret'
        option 'wps_pushbutton' '1'
        option 'wps_pin' '12345678'

Update 09-Januari-2013:

config 'wifi-device' 'wlan0'
	option 'type' 'mac80211'
	option 'channel' '11'
	option 'macaddr' '00:11:22:33:44:55'
	option 'hwmode' '11g'
	option 'country' 'ID'

	# REMOVE THIS LINE TO ENABLE WIFI:
	option 'disabled' '0'

config 'wifi-iface'
	option 'device' 'wlan0'
	option 'network' 'lan'
	option 'mode' 'ap'
	option 'ssid' 'OpenWRT'
	option 'encryption' 'psk2'
	option 'key' 'secretkey'
	option 'wps_pushbutton' '1'
	option 'wps_pin' '12345678'

Konfigurasi LED dan Tombol WPS

LED wireless pada DIR-300 menggunakan nomor pin 2, untuk itu perlu ditambahkan baris berikut ke /etc/sysctl.conf:

dev.wifi0.ledpin=2

Untuk membuat LED system menyala dan mati dengan jeda tertentu, gunakan konfigurasi /etc/config/system dan tambahkan baris-baris berikut:

config 'led'
        option 'sysfs' 'dir300:green:system'
        option 'trigger' 'timer'
        option 'delayon' '1000'
        option 'delayoff' '1000'

Tombol WPS ketika ditekan akan mengaktikan LED wps biru, /etc/hotplug.d/button/50-wps (dari paket hostapd-utils):

local wps_led_blue wps_led_red wps_led_red_state
wps_led_blue=/sys/class/leds/dir300:blue:wps/brightness
wps_led_red=/sys/class/leds/dir300:red:wps/brightness

if [ "$ACTION" = "pressed" -a "$BUTTON" = "wps" ]; then
	for dir in /var/run/hostapd-*; do
		[ -d "$dir" ] || continue
		wps_led_red_state=`cat $wps_led_red`
		echo 0 > $wps_led_red
		echo 1 > $wps_led_blue
		hostapd_cli -p "$dir" wps_pbc
		sleep 10
		echo 0 > $wps_led_blue
		echo $wps_led_red_state > $wps_led_red
	done
fi

Update 09-Januari-2013:

local wps_led_blue wps_led_red wps_led_red_state
wps_led_blue=/sys/class/leds/dir300:blue:wps/brightness
wps_led_red=/sys/class/leds/dir300:red:wps/brightness

if [ "$ACTION" = "pressed" -a "$BUTTON" = "wps" ]; then
	for dir in /var/run/hostapd-*; do
		[ -d "$dir" ] || continue
		wps_led_red_state=`cat $wps_led_red`
		echo 0 > $wps_led_red
		echo 1 > $wps_led_blue
		wpa_cli -p "$dir" wps_pbc
		sleep 10
		echo 0 > $wps_led_blue
		echo $wps_led_red_state > $wps_led_red
	done
fi

Reboot router untuk mengaplikasikan perubahan.

Jika anda ingin mengkompilasi sendiri firmware OpenWrt, lalukan patch pada build root OpenWrt. File konfigurasi OpenWrt lebih lengkap dapat dilihat di Wiki OpenWrt./li

, , , ,

4 Comments

Instalasi OpenWrt pada EnGenius(Senao) EOC-2610

OpenWrt merupakan firmware open source untuk embedded device yang menggunakan metode packaging agar device dapat dikustomisasi sesuai keinginan.

Metode instalasi OpenWrt ini hampir sama dengan FONERA. Instalasi OpenWrt ini cukup aman, mengingat fimware asli dapat dikembalikan lagi jika sudah tidak ingin menggunakan OpenWrt lagi. Untuk detailnya lihat di sini.

Firmware OpenWrt untuk EOC-2610 yang berbasis pada Atheros WiSOC yaitu:

Langkah-langkah:

  1. Atur ip address komputer pada subnet 192.168.1.0/24, misal 192.168.1.20 netmask 255.255.255.0.
  2. Persiapkan TFTP Server, untuk Windows dapat menggunakan TFTPD32. Jika anda menggunakan Ubuntu install paket atftpd dengan: sudo apt-get install atftpd.
  3. Taruh kedua file firmware OpenWrt pada rootdir TFTP server. Untuk windows, rootdir dapat diatur setelah menjalankan TFTPD32. Untuk Ubuntu, rootdir atftpd server ada di /var/lib/tftpboot (membutuhkan akses root).
  4. Download utiliti command line untuk RedBoot. Untuk windows download di http://download.musabaqah.com/openwrt/eoc-2610/tools/RedBoot.zip, dan untuk Ubuntu download di http://download.musabaqah.com/openwrt/eoc-2610/tools/RedBoot.tar.gz. Ekstrak arsip tersebut ke suatu folder. Untuk Ubuntu, anda perlu juga menginstall putty dengan: sudo apt-get install putty.
  5. Matikan device, kemudian jalankan utility redboot.cmd/redboot.sh dari arsip pada langkah 4. Kemudian nyalakan kembali device, tunggu hingga jendela putty menampilkan prompt RedBoot>. Jika putty tidak menampilkan prompt tersebut, anda perlu mengulang-ulang langkah ini.
  6. Ketik perintah-perintah berikut (yang berhuruf tebal):
    RedBoot> ip_address -l 192.168.1.1/24 -h 192.168.1.20
    IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
    Default server: 192.168.1.20
    RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
    Using default protocol (TFTP)
    Raw file loaded 0x80041000-0x80100fff, assumed entry at 0x80041000
    RedBoot> fis init -f
    About to initialize [format] FLASH image system - continue (y/n)? y
    *** Initialize FLASH Image System
    ... Erase from 0xa8030000-0xa87e0000: ...........................................................................................................................
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    RedBoot> fis create256 -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
    ... Erase from 0xa8030000-0xa80f0000: ............
    ... Program from 0x80041000-0x80101000 at 0xa8030000: ............
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    RedBoot> fis free
      0xA80F0000 .. 0xA87E0000
  7. Perintah fis free di atas digunakan untuk mengkalkulasi ukuran rootfs pada flash, mengingat ukuran kernel/vmlinux dapat berbeda-beda terlebih lagi jika anda meng-kompilasi dan meng-konfigurasi sendiri fimware OpenWrt. Catat alamat awal dan akhir kemudian kalkulasi ukuran rootfs menggunakan calculator. Pada contoh di atas ukuran rootfs = 0xA87E0000 – 0xA80F0000 = 0x6F0000 (parameter -l). Catat juga alamat awal untuk flashing rootfs = 0xA80F0000 (parameter -f). Kemudian lanjutkan dengan perintah-perintah berikut (INGAT, SESUAIKAN PERINTAH-PERINTAH INI SESUAI DENGAN KALKULASI DI ATAS):
    RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
    Using default protocol (TFTP)
    Raw file loaded 0x80041000-0x801e0fff, assumed entry at 0x80041000
    RedBoot> fis create256 -f 0xa80f0000 -l 0x6f0000 -e 0 rootfs
    ... Erase from 0xa80f0000-0xa87e0000: ...............................................................................................................
    ... Program from 0x80041000-0x801e1000 at 0xa80f0000: ..........................
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    RedBoot> reset
  8. Device kemudian reboot, coba ping ke ip 192.168.1.1, dan jika sudah tersambung ke ip tersebut, gunakan telnet untuk mengakses shell dan berikan perintah passwd untuk mengganti password device.
  9. Langkah selanjutnya anda tinggal mengkonfigurasi device. Secara default Backfire 10.03 sudah menyertakan antarmuka web LuCI. Cukup buka browser ke alamat http://192.168.1.1/. Jika anda familiar dengan shell linux, anda bisa menggunakan SSH untuk mengkonfigurasi OpenWrt.
  10. Dokumentasi konfigurasi OpenWrt lebih lanjut dapat dilihat di http://wiki.openwrt.org/doc/configuring.

Sebagai informasi tambahan, saat ini masih ada beberapa kekurangan OpenWrt pada EOC-2610 yaitu:

  • Perintah reboot tidak berfungsi (berfungsi ketika hanya lan saja yang aktif, ketika pertama kali sesudah instalasi, setelah wireless aktif perintah tersebut tidak berfungsi – client mode).
  • Tx Power tidak sama dengan firmware asli dari EnGenius (maksimal 19dBm, power offset tidak tersedia).

Alternatif lain, terdapat firmware versi X-Wrt dengan console webif yang menyediakan konfigurasi OpenWrt melalui web browser yang lebih lengkap (vmlinux, rootfs).

, , , ,

15 Comments