Bug pada hostapd nampaknya menjadi penyebab kegagalan pengguna Ubuntu 14.04 dan atau versi sebelumnya untuk mengaktifkan WiFi LAN dengan pesan-pesan kesalahan seperti:
nl80211: Could not configure driver mode
nl80211 driver initialization failed.
hostapd_free_hapd_data: Interface wlan0 wasn't started
dan mungkin pesan kesalahan lain yang sejenis.
Tutorial berikut ini hanya akan memodifikasi panduan-panduan lain yang sebelumnya sudah ada guna mengatasi masalah yang muncul serta untuk mengoptimalkan pemanfaatan script yang telah banyak digunakan. Sebagai contoh, kami menggunakan sebuah USB WLAN untuk access point dan USB modem yang akan digunakan berbagi pakai koneksi internet.
Install paket-paket yang dibutuhkan seperti hostapd dan dnsmasq dengan perintah:
sudo apt-get install hostapd dnsmasq
Edit konfigurasi hostapd dengan perintah:
sudo gedit /etc/hostapd/hostapd.conf
Isi file hostapd.conf tersebut dengan baris-baris berikut:
interface=wlan0
driver=nl80211
ignore_broadcast_ssid=0
ssid=wifiku
hw_mode=g
channel=1
wpa=3
wpa_passphrase=passwod8
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Silahkan sesuaikan dengan kondisi dan kebutuhan Anda. Parameter interface=wlan0 adalah dengan asumsi hanya terdapat satu buah WLAN pada komputer dan dikenali sebagai wlan0, pada pengguna lain boleh jadi dikenali sebagai wlan1 atau lainnya (gunakan perintah ifconfig untuk memeriksa). Parameter ignore_broadcast_ssid=0 dapat diubah menjadi bernilai 1 jika Anda ingin menyembunyikan SSID. Parameter ssid=wifiku silahkan sesuaikan dengan nama SSID yang ingin digunakan. Parameter wpa_passphrase=passwod8 silahkan sesuaikan dengan password yang Anda gunakan, cukup dengan delapan karakter saja lalu simpan perubahan.
Edit konfigurasi dnsmasq dengan perintah:
sudo gedit /etc/dnsmasq.conf
Tambahkan ke bagian akhir file dnsmasq.conf baris-baris berikut ini:
interface=wlan0
dhcp-range=net:wlan0,192.168.137.100,192.168.137.150,255.255.255.0,1440m
dhcp-option=wlan0,3,192.168.137.1
dhcp-option=wlan0,6,8.8.8.8,8.8.4.4
Simpan perubahan.
Hentikan service hostapd dan dnsmasq:
sudo service hostapd stop
sudo service dnsmasq stop
Disable service hostapd dan dnsmasq supaya tidak langsung jalan saat booting:
sudo update-rc.d hostapd disable
sudo update-rc.d dnsmasq disable
Buat script ap_ctl untuk menjalankan fungsi access point dan sharing internet dengan perintah:
sudo gedit /usr/bin/ap_ctl
Isi dengan script berikut ini:
#!/bin/bash
# broadcasting interface
BROADCAST="wlan0"
# receiving interface broadcast is connected to
RECEIVE="$2"
if [[ $1 == "-1" || $1 == "--on" ]]
then
# send signal 2 to hostapd and dhcpd3
echo "Checking hostapd and dnsmasq services"
killall -2 hostapd dnsmasq
sleep 2
# fix on Ubuntu 14.04
nmcli nm wifi off
rfkill unblock wlan
## start hostapd
echo "Starting hostapd"
echo " You can view the log at /var/log/hostapd.log"
# launch hostapd daemon
hostapd -d /etc/hostapd/hostapd.conf > /var/log/hostapd.log &
## start dhcp server
echo "Starting dnsmasq"
# set IP address
ifconfig $BROADCAST 192.168.137.1
sleep 2
# launch dhcpd3 daemon
# echo "INTERFACES=$BROADCAST" > /etc/default/dhcp
# dhcpd3 $BROADCAST &
dnsmasq
# set kernel variable(s)
echo 0 > /proc/sys/net/ipv4/conf/all/forwarding
# restart networking
/etc/init.d/networking restart
elif [[ $1 == "-0" || $1 == "--off" ]]
then
# send signal 2 to hostapd and dhcpd3
killall -2 hostapd dnsmasq
# fix on Ubuntu 14.04
nmcli nm wifi on
# set kernel variable(s)
echo 0 > /proc/sys/net/ipv4/conf/all/forwarding
# restart networking
/etc/init.d/networking restart
##------ AP ICS ------------------------------------------#
elif [[ $1 == "-i" || $1 == "--start" ]]
then
# send signal 2 to hostapd and dhcpd3
echo "Checking hostapd and dnsmasq services"
killall -2 hostapd dnsmasq
sleep 2
# fix on Ubuntu 14.04
nmcli nm wifi off
rfkill unblock wlan
## start hostapd
echo "Starting hostapd"
echo " You can view the log at /var/log/hostapd.log"
# launch hostapd daemon
hostapd -d /etc/hostapd/hostapd.conf > /var/log/hostapd.log &
## start dhcp server
echo "Starting dnsmasq"
# set IP address
ifconfig $BROADCAST 192.168.137.1
sleep 2
# launch dhcpd3 daemon
# echo "INTERFACES=$BROADCAST" > /etc/default/dhcp
# dhcpd3 $BROADCAST &
dnsmasq
sleep 2
# create iptables rules (from --ics)
iptables -A FORWARD -i $RECEIVE -o $BROADCAST -s 192.168.137.1/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
# set kernel variable(s)
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
# restart networking
/etc/init.d/networking restart
elif [[ $1 == "-s" || $1 == "--stop" ]]
then
# send signal 2 to hostapd and dhcpd3
killall -2 hostapd dnsmasq
# fix on Ubuntu 14.04
nmcli nm wifi on
# remove iptables rules (from --noics)
iptables -D FORWARD 1
iptables -D FORWARD 1
# set kernel variable(s)
echo 0 > /proc/sys/net/ipv4/conf/all/forwarding
# restart networking
/etc/init.d/networking restart
else
echo $0 "A tool to manage hostapd and dnsmasq/dhcpd3"
echo
echo "Usage: ap_ctl [OPTION]"
echo " -1, --on Start hostapd and dnsmasq/dhcpd3"
echo " -0, --off Stop hostapd and dnsmasq/dhcpd3"
echo " --help display this help and exit"
echo
echo "Usage: ap_ctl [OPTION] [ICS_INTERFACE]"
echo " -i, --start Start ICS, hostapd and dnsmasq/dhcpd3"
echo " -s, --stop Stop ICS, hostapd and dnsmasq/dhcpd3"
echo
echo "Examples:"
echo " ap_ctl --on Start hostapd and dnsmasq/dhcpd3 without ICS"
echo " ap_ctl -i ppp0 Start hostapd and dnsmasq/dhcpd3 with ICS"
echo
echo
fi
exit 0
Simpan, lalu jadikan executable dengan perintah:
sudo chmod +x /usr/bin/ap_ctl
Untuk menggunakan, jalankan terminal lalu ketik perintah:
sudo ap_ctl -1 atau sudo ap_ctl --on Untuk menjalankan fungsi accsess point tanpa sharing internet.
sudo ap_ctl -0 atau sudo ap_ctl --off Untuk menghentikan fungsi accsess point dan kembali menjadi WiFi client.
sudo ap_ctl -i ppp0 atau sudo ap_ctl --start ppp0 Untuk menjalankan fungsi accsess point dengn ICS melalui interface ppp0 (modem USB).
sudo ap_ctl -s atau sudo ap_ctl --stop Untuk menghentikan fungsi accsess point dengn ICS dan kembali menjadi WiFi client).
sudo ap_ctl --help Untuk menampilkan bantuan penggunaan.
Jika sharing internet Anda lakukan melalu ethernet misalnya eth0 maka ubah parameter "ppp0" menjadi "eth1" misalnya: sudo ap_ctl -i eth0.
Selamat mencoba...
Berikut adalah link-link terkait masalah ini:
http://ubuntu-indonesia.com/forums/ubbthreads.php/topics/92502/1
http://wireless.kernel.org/en/users/Documentation/hostapd
https://bugs.launchpad.net/ubuntu/+source/wpa/+bug/1289047
Lalu bagai mana Membut Hotspot WiFi Access Point Dengan Windows 7? Jika ada waktu pada artikel berikutnya... :D
Dipublikasikan di: