Mengukur Sinyal WiFi Dengan Wavemon

Kemarin saya coba ubah D-Link DIR600 menjadi repeater dari access point yang sudah ada. Access point yang saya pakai sekarang adalah TP-Link TL-WR841ND v7. TP Link wireless router ini menggunakan DD-WRT sebagai sistem operasinya. Supaya memudahkan setup repeater-nya saya instal dulu DD-WRT pada D-Link wireless router tadi. Proses instalasinya cukup mudah mengikuti petunjuk dari halaman wiki DD-WRT & dari web ini. Ini contoh halaman konfigurasi DD-WRT untuk mengaktifkan wireless router sebagai repeater :

ddwrt-repeater

Sedikit tentang DD-WRT, DD-WRT adalah sistem operasi (firmware) berbasis Linux untuk wireless router/access point . Dengan menggunakan DD-WRT ada banyak pilihan fitur bagus yang tidak disediakan oleh firmware bawaan pabrik. Dulu saya mulai mencoba DD-WRT karena mencari fitur bandwidth control.

Setelah D-Link wireless router tadi sudah diset sebagai repeater, saya pasang D-Link ini dalam jarak lebih kurang 10 meter dari TP-Link wireless router. Saya cari juga bagaimana caranya membuktikan bahwa D-Link wifi itu sudah benar-benar-bekerja. Saat sebuah wireless router difungsikan sebagai repeater, nama SSID (jaringan WiFi) yang muncul cuma 1 mengikuti apa yang ada di master router-nya.

Sebenarnya kekuatan sinyal dari sebuah access point dapat dilihat dari hasil perintah iwlist seperti contoh ini :

ttirtawi@x220:~$ iwlist scanning
wlan0     Scan completed :
          Cell 01 - Address: 90:F6:52:43:82:44
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
                    Quality=50/70  Signal level=-60 dBm  
                    Encryption key:on
                    ESSID:"GBT733"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=00000044aff90270
                    Extra: Last beacon: 3120ms ago
                    IE: Unknown: 0006474254373333
                    IE: Unknown: 010882848B960C121824
                    IE: Unknown: 030106
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 2A0100
                    IE: Unknown: 32043048606C
                    IE: Unknown: DD180050F2020101020003A4000027A4000042435E0062322F00
                    IE: Unknown: 331A4C101BFFFF000000000000000000000000000000000000000000
                    IE: Unknown: 2D1A4C101BFFFF000000000000000000000000000000000000000000
                    IE: Unknown: 341606001B00000000000000000000000000000000000000
                    IE: Unknown: 3D1606001B00000000000000000000000000000000000000
                    IE: Unknown: 4A0E14000A002C01C800140005001900
                    IE: Unknown: 7F0101
                    IE: Unknown: DD0900037F01010000FF7F
                    IE: Unknown: DD0A00037F04010000000000
          Cell 02 - Address: FC:75:16:99:DF:0A
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
                    Quality=70/70  Signal level=-31 dBm  
                    Encryption key:on
                    ESSID:"GBT733"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
                              18 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=00000000070fdbad
                    Extra: Last beacon: 3116ms ago
                    IE: Unknown: 0006474254373333
                    IE: Unknown: 010882848B961224486C
                    IE: Unknown: 030106
                    IE: Unknown: 2A0100
                    IE: Unknown: 32040C183060
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00
                    IE: Unknown: 0B05000008127A
                    IE: Unknown: DD07000C4304000000
                    IE: Unknown: 0706444520010D10

lo        Interface doesn't support scanning.

eth0      Interface doesn't support scanning.

ttirtawi@x220:~$

iwlist menampilkan ada 2 cell dengan nama SSID yang sama “GBT733”. Bedanya Cell#02 (D-Link) memiliki kekuatan pancaran sinyal yang lebih bagus daripada Cell#01 (TPLink); ini karena saya berada lebih dekat dengan D-Link wireless router. Kekuatan sinyal WiFi tadi ditampilkan dalam satuan dB (karena angkanya negatif maka yang bilangannya lebih kecil dianggap lebih besar nilainya).

Saya masih penasaran aplikasi lain yang bisa dipakai untuk memonitor kekuatan sinyal WiFi ini. Saya temukan referensi yang membahas tentang wavemon. Ini adalah aplikasi Linux berbasis teks yang cukup bagus untuk menampilkan pergerakan kekuatan sinyal WiFi. Wavemon tersedia di repositori Ubuntu :

ttirtawi@x220:~$ apt-cache search wavemon
wavemon - Wireless Device Monitoring Application
ttirtawi@x220:~$

Ini hasil tangkapan layar saat wavemon mengukur sinyal dari TP Link pada jarak lebih kurang 10 meter :

no-repeater

Setelah saya hidupkan D-Link pada posisi yang sama, ada perbaikan kualitas sinyal (dengan catatan wireless adapter saya sudah pindah koneksi ke D-Link) :

with-repeater

Kekuatan sinyal WiFi ditunjukkan dengan garis kuning yang terus bergerak ke kiri dan kanan; seiring dengan kekuatan sinyal yang dipancarkan oleh access point. Link quality yang ditunjukkan dengan garis berwarna hijau juga ikut bergerak ke kanan dan ke kiri. Bila kekuatan sinyal melemah garisnya akan bergerak ke arah kiri dan warnanya berubah menjadi merah. Cukup menarik untuk dilihat pergerakan garis ini. Semakin jauh saya dari access point maka sinyalnya melemah dan garisnya merahnya menjadi semakin pendek bergerak ke arah kiri.

Jadi kesimpulan yang bisa saya dapat, menggunakan wireless router sebagai repeater berguna untuk menambah jangkauan sinyal WiFi dari access point yang sudah ada.

Menyambungkan iPhone Ke Speaker Secara Wireless

Apple punya teknologi yang namanya AirPlay. Teknologi ini memungkinkan pengguna gadget Apple untuk memainkan music, memutar video dari gadget-nya ke remote speaker atau remote monitor. Semuanya dilakukan secara tanpa kabel alias nirkabel alias wireless. Syaratnya speaker atau monitor yang dipakai mendukung teknologi AirPlay ini. AppleTV contohnya; Apple TV ini memungkinkan pengguna iPhone/iPad untuk melakukan streaming musik/video yang ada di handsetnya & menampilkannya di AppleTV. Tentu semua perangkat yang terlibat harus terhubung dalam jaringan WiFi yang sama.

Ternyata ada juga aplikasi gratis yang bisa jadi alternatif dari AppleTV. Saya baru coba XBMC. Aplikasi ini bisa dijalankan di berbagai macam platform, Windows, Linux, Mac, Android, bahkan RaspberryPi. Saya coba instal XBMC ini di Mac. Begitu dijalankan aplikasi ini langsung terbuka full screen seperti berikut ini :

20130308-204117.jpg

XBMC berfungsi sebagai media player. Anda bisa menggunakannya untuk menonton film, menyetel musik, menampilkan foto dari harddisk komputer Anda. Bahkan ada pilihan untuk mengakses data dari Windows file sharing melalui menu Samba (SMB).

Untuk mengaktifkan AirPlay, kita perlu masuk ke menu Settings, lalu ke menu Services seperti tampilan di bawah ini :

20130308-204152.jpg

Pada tampilan Services ada pilihan AirPlay, kita perlu mencentang pilihan “Allow XBMC to receive AirPlay content“. Ada juga pilihan untuk memasang password untuk melindungi service AirPlay untuk membatasi user tertentu saja yang bisa mengakses AirPlay.

20130308-204204.jpg

Begitu AirPlay sudah aktif, perangkat seperti iPhone atau iPad yang terhubung dalam jaringan WiFi akan otomatis mendeteksi adanya service AirPlay yang aktif. Tandanya di dekat tombol volume akan muncul ikon segitiga berwarna orange. Misalnya di aplikasi Music pada iPhone seperti tampilan di bawah ini :

20130308-202952.jpg

Bila saya tap ikon tersebut akan muncul XBMC yang sedang running pada Macbook saya.

20130308-203034.jpg

Bila saya tap pada XBMC, musik yang sedang diputar akan muncul suaranya pada speaker Macbook saya. Ajaib, musiknya bisa diputar tanpa terputus-putus meskipun ini dikirimkan lewat jaringan Wi-Fi. Tampilan XBMC di layar Mac juga langsung berubah seperti di bawah ini :

20130308-203423.jpg

Judul lagu, nama album, nama penyanyi, lengkap dengan gambar album juga ikut dikirimkan ke XBMC ini. Saya bisa menghubungkan Macbook dengan speaker home theather. Jadi bila ingin memainkan musik dari iPhone, saya tidak perlu lagi menyambungkan iPhone langsung ke speaker home theather. Cukup Macbook saja yang terhubung ke speaker.

Saya coba juga memutar video yang ada di iPhone. Video  dapat ditayangkan pada XBMC tanpa terputus-putus. Ini alternatif murah daripada membeli speaker lagi yang sudah dilengkapi dengan built-in AirPlay. Juga bisa dipakai untuk memanfaatkan speaker atau home theather yang sudah ada.

Mengaktifkan FTP Server Di Ubuntu Linux

Kemarin ada seorang rekan bertanya caranya mengakses server Linuxnya melalui FTP. Katanya dia sudah coba akses FTP ke servernya (servernya menggunakan Ubuntu kalau tidak salah) tapi mendapat error "Connection refused". Tentu saja langkah pertama yang saya sarankan adalah memeriksa apakah FTP servernya sudah aktif. Apakah port 21 (default port FTP) sudah listen di servernya. Ternyata belum ada FTP server yang aktif.

Secara default Ubuntu tidak menyertakan FTP server dalam paket instalasinya. Wajar bila kita coba FTP ke Ubuntu server akan mendapat gagal dengan pesan "Connection refused" :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
ftp: connect: Connection refused
ftp> bye
ttirtawi@macbook-air:~$ 

Untuk dapat mengakses FTP di Ubuntu, kita perlu menginstal paket FTP server terlebih dulu. Saya biasanya memilih vsftpd untuk keperluan ini.

ttirtawi@gbt733:~$ sudo apt-get install vsftpd
[sudo] password for ttirtawi: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  vsftpd
0 upgraded, 1 newly installed, 0 to remove and 256 not upgraded.
Need to get 0 B/132 kB of archives.
After this operation, 364 kB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously unselected package vsftpd.
(Reading database ... 190272 files and directories currently installed.)
Unpacking vsftpd (from .../vsftpd_2.3.5-3ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Setting up vsftpd (2.3.5-3ubuntu1) ...
vsftpd start/running, process 7570
Processing triggers for ureadahead ...
ttirtawi@gbt733:~$ 

Setelah paket vsftpd terinstal, aplikasi vsftpd akan otomatis bekerja dan menunggu di port 21 :

ttirtawi@gbt733:~$ netstat -ano | grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      off (0.00/0/0)
ttirtawi@gbt733:~$ 

Setelah itu kita bisa akses servernya via FTP :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): ttirtawi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Tapi kita belum bisa login ke FTP server sebagai user root :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> 

Meskipun kita sudah login & memasukkan password root yang benar, kita tetap tidak bisa otomatis login sebagai root. Akan selalu muncul pesan error Login incorrect seperti contoh di atas. Secara default, root tidak diperkenankan mengakses FTP server. File /etc/ftpusers mengatur daftar user yang tidak boleh login ke FTP server, termasuk root.

ttirtawi@gbt733:~$ cat /etc/ftpusers 
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

# root ###### Hapus baris ini atau beri tanda # di awal baris
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
ttirtawi@gbt733:~$ 

Dengan menghapus user root dari dalam file /etc/ftpusers atau cukup menambahkan tanda # di depan user root, maka root bisa mengakses FTP server.

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Router & Bandwidth Control Dengan Raspberry Pi

Akhirnya saya berhasil memanfaatkan RaspberryPi menjadi router dengan kemampuan mengatur kuota bandwidth internet. Saya ikuti beberapa petunjuk dari sumber-sumber berikut ini :

Susunan jaringannya menjadi seperti ini :

20130303-215947.jpg

  • Port Ethernet bawaan RaspberryPi (eth0) menjadi port WAN yang terhubung langsung dengan modem internet.
  • Adapter USB Ethernet (eth1) menjadi port LAN yang terhubung ke switch.
  • WiFi TP-Link tidak lagi dipakai sebagai DHCP server. Port WANnya pun tidak dipakai. Hanya difungsikan sebagai access-point. Client mendapat IP address dari Raspberry. Karena Wi-Fi ini menggunakan DD-WRT sebagai sistem operasinya, saya harus mematikan DHCP server & memilih untuk menggunakan DHCP Forwarder.

Ini adalah konfigurasi IP di RaspberryPi.

root@raspberrypi:~# cat /etc/network/interfaces 
auto lo

iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
    address 192.168.10.1
    netmask 255.255.255.0
    network 192.168.10.0
    broadcast 192.168.10.255
    dns-nameservers 192.168.10.1
root@raspberrypi:~#

Port eth0 diset menggunakan IP dinamis, IPnya didapat dari modem FirstMedia. Sementara port eth1 adalah port LAN sehingga menggunakan IP statis.

Untuk menjadikan Raspberry sebagai DHCP server di jaringan lokal saya perlu paket dnsmasq.

root@raspberrypi:~# apt-get install dnsmasq

Konfigurasi dnsmasq sangat simpel seperti berikut ini :

root@raspberrypi:~# cat /etc/dnsmasq.conf 
interface=eth1
dhcp-range=192.168.10.50,192.168.10.150,255.255.255.0,12h
root@raspberrypi:~# 

Saya hanya perlu mencantumkan di interface mana DHCP server akan beroperasi, tentu ini interface yang terhubung ke LAN. Dan satu lagi opsi yang dhcp-range, opsi ini mendefinisikan alamat IP mana saja yang disediakan oleh DHCP server. Sebenarnya masih banyak opsi yang bisa dipakai oleh dnsmasq, tapi untuk keperluan test ini hanya itu yang saya perlukan.

Proses routing dijalankan oleh perintah iptables. Di website Debian Administrator sudah ada contoh script yang memanfaatkan iptables sebagai router & juga sebagai firewall.

root@raspberrypi:~# cat /etc/network/if-up.d/router 
#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

# Notes : eth0 = WAN port / internet
#         eth1 = LAN port
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Don't forward from the outside to the inside.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward
root@raspberrypi:~#

Sementara untuk mengatur alokasi bandwidth aplikasi yang dipakai adalah tc. Konsep yang diterapkan untuk mengatur alokasi bandwidth ini adalah HTB (Hierarchical Token Bucket). Pengaturan bandwidth dilakukan dalam sistem hirarki. Saya contoh apa yang dijelaskan di web ini. Ada beberapa modifikasi yang saya tambahkan. Di web tadi hanya kecepatan download yang dibatasi. Ternyata untuk membatasi kecepatan upload, saya perlu tambahkan rule lain di port WANnya (dalam contoh kasus saya di port eth0).

root@raspberrypi:~# cat /etc/network/if-up.d/tcscript 
#!/bin/bash

# DOWNLOAD LIMIT
tc qdisc add dev eth1 root handle 1:0 htb default 10
tc class add dev eth1 parent 1:0 classid 1:10 htb rate 256kbit ceil 256kbit prio 0
tc class add dev eth1 parent 1:1 classid 1:5 htb rate 4864kbit ceil 4864kbit prio 1
tc filter add dev eth1 parent 1:0 prio 1 handle 5 fw flowid 1:5

# UPLOAD LIMIT
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:10 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:5 htb rate 4864kbit ceil 4864kbit prio 1
tc filter add dev eth0 parent 1:0 prio 1 handle 5 fw flowid 1:5

iptables -t mangle -N shaper-out
iptables -t mangle -N shaper-in

iptables -t mangle -I POSTROUTING -o eth1 -j shaper-in
iptables -t mangle -I PREROUTING -i eth1 -j shaper-out
iptables -t mangle -I PREROUTING -i eth0 -j shaper-in
iptables -t mangle -I POSTROUTING -o eth0 -j shaper-out

iptables -t mangle -A shaper-out -s 192.168.10.0/24 -j MARK --set-mark 1
iptables -t mangle -A shaper-in -d 192.168.10.0/24 -j MARK --set-mark 1

iptables -t mangle -A shaper-out -s 192.168.10.129 -j MARK --set-mark 5
iptables -t mangle -A shaper-in -d 192.168.10.129 -j MARK --set-mark 5
root@raspberrypi:~#

Di contoh script di atas, saya buat skenario sederhana yaitu hanya IP 192.168.10.129 (IP Macbook) yang diberi akses untuk menggunakan bandwidth sampai maksimum (4-5MB).

20130303-234031.jpg

Sementara semua client lain dalam jaringan 192.168.10.0/24 hanya bisa mendapat kecepatan download 256Kbps & kecepatan upload 128Kbps. Ternyata berhasil, dan ini contohnya hasil testing dengan iPhone :

20130303-233616.jpg

Kira-kira begitu pemanfaatan Raspberry Pi untuk mengontrol pemakaian bandwidth dalam jaringan. Masih banyak yang bisa dibahas dari topik ini. Mungkin nanti saya tuliskan lagi di tulisan-tulisan berikutnya.

USB Ethernet Adapter

20130228-232115.jpg

Saya hampir lupa pernah membeli USB Ethernet adapter ini. Tadinya saya membeli USB Ethernet ini untuk dipasangkan pada Macbook Air. Meskipun saya sudah punya Thunderbolt Ethernet, saya tidak bisa menggunakannya bila pada saat yang bersamaan saya sedang menggunakan monitor external. Akhirnya dulu saya putuskan untuk beli lagi Ethernet adapter tapi yang menggunakan koneksi USB. Saya beli USB Ethernet di Kaskus, kalau tidak salah harganya Rp100.000,-. Sayangnya begitu barang datang, adapter ini tidak bisa dipakai di Macbook saya. Adapter ini tidak dikenali sebagai Ethernet port.

Nah tadi saya baru ingat adapter ini, saya langsung terpikir untuk mencobanya pada Raspberry Pi. Wow, ternyata Raspberry Pi langsung mengenalinya sebagai Ethernet port.

Feb 28 21:21:42 raspberrypi kernel: [  289.862161] usb 1-1.3: new full-speed USB device number 4 using dwc_otg
Feb 28 21:21:42 raspberrypi kernel: [  289.963491] usb 1-1.3: New USB device found, idVendor=0fe6, idProduct=9700
Feb 28 21:21:42 raspberrypi kernel: [  289.963524] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
Feb 28 21:21:42 raspberrypi kernel: [  289.963543] usb 1-1.3: Product: USB 2.0 10/100M Ethernet Adaptor
Feb 28 21:21:42 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/bcm2708_usb/usb1/1-1/1-1.3"
Feb 28 21:21:42 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Feb 28 21:21:42 raspberrypi kernel: [  290.489580] dm9601 1-1.3:1.0: eth1: register 'dm9601' at usb-bcm2708_usb-1.3, Davicom DM9601 USB Ethernet, 00:e0:4c:53:44:58
Feb 28 21:21:42 raspberrypi kernel: [  290.491772] usbcore: registered new interface driver dm9601
Feb 28 21:21:42 raspberrypi kernel: [  290.720167] dm9601 1-1.3:1.0: eth1: link up, 100Mbps, full-duplex, lpa 0xFFFF

^C
root@raspberrypi:~# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:e0:4c:53:44:58  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@raspberrypi:~#

Untung jadi tidak sia-sia membeli adapter ini. Rasanya dengan port Ethernet tambahan ini saya bisa melanjutkan testing bandwidth controller.