12 Februari 2012

Menjadikan Laptop Ubuntu Sebagai Access Point Hotspot Wifi

Sudah berbulan-bukan saya mencoba menjadikan laptop ubuntu saya menjadi hotspot wifi, tapi belum juga berhasil. Saya sudah googling dan menemukan banyak cara dan trik yang berbeda, namun belum ada yang berhasil untuk membuat laptop ubuntu saya menjadi hotspot wifi. Sampai akhirnya, beberapa menit yang lalu saya menemukan cara yang berhasil menjadikan laptop saya sebagai Acces Point hotspot wifi.

Berikut ini adalah langkah yang berhasil saya lakukan agar laptop saya menjadi Acces Point hotspot wifi.

  1. Buka terminal, dan install hostapd dengan mengetikan perintah
    sudo apt-get install hostapd
    Jika sebelumnya anda sudah mencoba trik lain, dan juga menggunakan hostapd, saya sarankan anda hapus yang lama dan semua konfigurasinya sebelum menginstall dengan perintah
    sudo apt-get purge hostapd
  2. Setelah instalasi selesai, ubah konfigurasi hostapd dengan perintah,
    sudo nano /etc/hostapd/hostapd.conf
    Tambahkan baris berikut pada bagian paling bawah
    #konfigurasi hostapd untuk hotspot wifi
    interface=wlan0
    driver=nl80211
    ssid=AP_pupil
    hw_mode=g
    channel=1
    
    #Jika ingin menggunakan password, hilangakan tanda (#)
    #pada baris-baris dibawah ini
    #untuk mengganti password, ganti nilai 
    #dari wpa_passphrase=<password_yang_anda_kehendaki>
    #wpa=1
    #wpa_passphrase=opensourcejaya
    #wpa_key_mgmt=WPA-PSK
    #wpa_pairwise=TKIP CCMP
    #wpa_ptk_rekey=600
  3. Install package dnsmasq
    sudo apt-get install dnsmasq
  4. Buka file konfigurasi dnsmasq
    sudo nano /etc/dnsmasq.conf
    Tambahkan baris-baris berikut di bagian paling bawah
    interface=wlan0
    dhcp-range=net:wlan0,192.168.0.100,192.168.0.150,255.255.255.0,1440m
    dhcp-option=wlan0,3,192.168.0.1
    dhcp-option=wlan0,6,208.67.222.222,208.67.220.220
  5. Package dnsmasq akan segera di eksekusi pada saat boot. Hal ini akan menyebabkan masalah jika kita terkoneksi ke network yang sudah memiliki server dhcp. Dengan demikian kita perlu mencegah agar dnsmasq tidak otomatis dijalankan saat boot, yaitu dengan perintah,
    sudo update-rc.d -f dnsmasq remove
  6. Sekarang kita buat script untuk mengendalikan sharing internet melalui wifi, dan simpan script tersebut di /usr/bin. Ketik perintah di terminal,
    sudo nano /usr/bin/ap_ctl
    Kemudian copy script dibawah ini yang saya dapat dari sumber saya.
    #!/bin/bash
    
    # broadcasting interface
    BROADCAST="wlan0"
    
    # receiving interface broadcast is connected to
    RECEIVE="ppp0"
    
    if [[ $1 == "-0" || $1 == "--start" ]]
     then
     ## 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.0.1
     sleep 2
    
     # launch dhcpd3 daemon
     # echo "INTERFACES=$BROADCAST" > /etc/default/dhcp
     # dhcpd3 $BROADCAST &
     dnsmasq
    
    elif [[ $1 == "-1" || $1 == "--stop" ]]
     then
     # send signal 2 to hostapd and dhcpd3
     killall -2 hostapd  dnsmasq
    
    elif [[ $1 == "-2" || $1 == "--ics" ]]
     then
     # create iptables rules
     iptables -A FORWARD -i $RECEIVE -o $BROADCAST -s 192.168.0.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
    
     # edit kernel configuration
     cp /etc/sysctl.conf /etc/sysctl.conf.ap_ctl
     echo "net.ipv4.conf.default.forwarding=1" >> /etc/sysctl.conf
     echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf
    
     # restart networking
     /etc/init.d/networking restart
    
    elif [[ $1 == "-3" || $1 == "--noics" ]]
     then
     # remove iptables rules
     iptables -D FORWARD 1
     iptables -D FORWARD 1
    
     # set kernel variable(s)
     echo 0 > /proc/sys/net/ipv4/conf/all/forwarding
    
     # revert kernel configuration
     mv -i /etc/sysctl.conf.ap_ctl /etc/sysctl.conf
    
     # restart networking
     /etc/init.d/networking restart
    
    else
     echo $0
     echo "A tool to manage hostapd and dhcpd3"
     echo "Usage:"
     echo "    -0 --start    Start hostapd and dhcpd3"
     echo "    -1 --stop    Stop hostapd and dhcpd3 with signal 2"
     echo "    -2 --ics    Activate internet connection sharing"
     echo "            between specified interfaces"
     echo "    -3 --noics    Undo internet connection sharing settings"
    fi
    
    exit 0
    Pada bagian RECEIVE, apabila menggunakan usbmodem sebagai koneksi laptop anda, ubah nilainya menjadi "ppp0", jika menggunakan kabel LAN, ubah nilainnya menjadi "eth0". Kemudian tekan ctrl + x, lalu tekan tombol y untuk menutup dan menyimpannya.
  7. Jadikan script yang dibuat tadi menjadi executable,
    sudo chmod +x /usr/bin/ap_ctl
  8. Untuk menjalankan hotspot wifi, ketik pada terminal
    sudo ap_ctl --start
    sudo ap_ctl --ics
  9. Untuk berhenti, ketik
    sudo ap_ctl --stop

Saya berhasil melakukan trik ini di lingkungan

  1. O/S = Ubuntu 10.04
  2. Laptop = Asus K43U
  3. Wireless card = Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

Sumber:

  1. http://ubuntuforums.org/showthread.php?t=1663788
  2. http://exain.wordpress.com/2011/03/31/making-a-wifi-hotspot-access-point-using-linux-wifi-lan-cardusb-adapter/



35 komentar:

  1. mantabbb,,,tx coba dlu

    BalasHapus
  2. akbartux@akbartux:~$ sudo ap_ctl --start
    Starting hostapd
    You can view the log at /var/log/hostapd.log
    Starting dnsmasq

    dnsmasq: failed to create listening socket for port 53: Address already in use

    BalasHapus
    Balasan
    1. Script ini membutuh kan port 53 agar bekerja dengan lancar. Kalau error seperti ini, karena port 53 sudah dipakai aplikasi lain. Gunakan perintah netstat -ntlp untuk mengetahui aplikasi apa yang menggunakan port 53, kemudian kill aplikasi tersebut, dan jalankan lagi script ini. Atau coba cara yang lebih simple, ketik urutan perintah berikut satu persatu:
      sudo ap_ctl --stop
      sudo ap_ctl --start
      sudo ap_ctl --ics

      Hapus
  3. belly@belly:~$ sudo ap_ctl --start
    Starting hostapd
    You can view the log at /var/log/hostapd.log
    Starting dnsmasq
    SIOCSIFFLAGS: Unknown error 132
    ioctl[SIOCSIFFLAGS]: Unknown error 132
    rmdir[ctrl_interface]: No such file or directory

    dnsmasq: failed to create listening socket: Address already in use

    bantuan nya mas. error

    BalasHapus
    Balasan
    1. Coba ke sini, http://linuxwireless.org/en/users/Drivers
      Apakah driver wifi anda support untuk AP (Access Point)?

      Hapus
    2. ini spesifikasi wifi ane gan. bingung ane lihat di link yang agan kasi, sepenglihatan ane bisa support deh gan.

      atau ada kemungkinan bermasalah karena ane sebelumnya permah coba tutorial ini tapi dengan cara sedikit berbeda. menggunakan dhcp3-server + hostapd juga, tapi sebelum ane menggunakan tutorial ini ane telah menghapus konfigurasi hostpad nyaseperti yang agan kasih tau, dengan cara : "sudo apt-get purge hostapd"

      ini spesifikasi wireles punya ane.

      *-network
      description: Wireless interface
      product: AR5001 Wireless Network Adapter
      vendor: Atheros Communications Inc.
      physical id: 0
      bus info: pci@0000:02:00.0
      logical name: wlan0
      version: 01
      serial: 00:16:e3:ac:09:06
      width: 64 bits
      clock: 33MHz
      capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical wireless
      configuration: broadcast=yes driver=ath5k latency=0 multicast=yes wireless=IEEE 802.11bg
      resources: irq:18 memory:c0100000-c010ffff

      Hapus
    3. Kalau dilihat dari spec sih emang bisa kayaknya. OK, sekarang tolong paste log yang ada di /var/log/hostapd.log ke sini.

      Oh ya, keterangan error "dnsmasq: failed to create listening socket: Address already in use" berarti sudah ada yang memakai port 53. Sebelum di start, mungkin sebaiknya di stop dulu, biar port 53 kosong.

      Atau bisa dengan perintah: netstat -ntlp
      untuk mengetahui aplikasi apa yang memakai port 53, kemudian kill aplikasi tersebut, baru jalankan lagi script ini.

      Hapus
  4. gan, sebelumnya ane pernah mencoba tutorial serupa tapi dengan aplikasi sedikit berbeda, yaitu dengan aplikasi "dhcp3-server + hostapd". sekarang aplikasinya "dhcp3-server" sudah ane remove " sudo apt-get remove dhcp3-server". trus ane jalankan lagi, hasilnya :

    sudo ap_ctl --start
    [sudo] password for belly:
    Starting hostapd
    You can view the log at /var/log/hostapd.log
    Starting dnsmasq
    SIOCSIFFLAGS: Unknown error 132
    ioctl[SIOCSIFFLAGS]: Unknown error 132
    rmdir[ctrl_interface]: No such file or directory

    dnsmasq: failed to bind DHCP server socket: Address already in use

    *error dnmasq berbeda dari sebelumnya gan.

    /var/log/hostapd.log:

    Configuration file: /etc/hostapd/hostapd.conf
    ctrl_interface_group=0
    nl80211 driver initialization failed.
    wlan0: Unable to setup interface.

    netstat -ntlp :
    netstat -ntlp
    (Not all processes could be identified, non-owned process info
    will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN -
    tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
    tcp6 0 0 :::53 :::* LISTEN -
    tcp6 0 0 ::1:631 :::* LISTEN -

    mohon solusinya gan.

    BalasHapus
  5. Saya hanya bisa membantu menerangkan maksud keterangan tiap error:
    rmdir[ctrl_interface]: No such file or directory, biasanya karena hardware tidak support dengan konfigurasi.

    nl80211 driver initialization failed. biasanya karena driver yang dipakai untuk hotspot tidak dapat dijalankan.

    Address already in use, sudah saya terangkan di komen sebelumnya.

    note: Maaf, saya sendiri juga tidak selalu berhasil menjalankan metode ini, di semua laptop yang saya coba. Teman-teman saya juga ada yang berhasil, ada yang tidak. Jadi, hardware memang sangat berpengaruh.

    BalasHapus
    Balasan
    1. o begitu ya gan ya. ane sudah berharap bisa menjalankan tutorial ini, biar bisa sharing koneksi ke sodara yang menggunakan. brarti hardware ane nag cocok ya gan ya.

      Hapus
    2. Wah, saya juga belum bisa memastikan hal itu. Googling terus, siapa tahu menemukan tips yang cocok. :)

      Hapus
  6. matiin port 53 pake netstat gimana ya gan?

    BalasHapus
    Balasan
    1. matiin aja aplikasi yang menggunakan port 53 mas:
      sudo kill [pid aplikasi]

      setelah itu untuk lebih meyakinkan lagi, jalankan:
      sudo ap_ctl --stop

      kemudian jalankan lagi hotspot:
      sudo ap_ctl --start
      sudo ap_ctl --ics

      Hapus
  7. saya sudah berhasil menjalankan tutorialnya mas, dan bisa connect.
    tetapi ketika saya jalankan perintah "sudo ap_ctl --ics"
    malah access point di laptop saya tidak bisa di access atau down. kira2 kenapa ya mas?

    BalasHapus
    Balasan
    1. sudo ap_ctl --start, adalah perintah untuk mulai menjalankan akses point

      sudo ap_ctl --ics, adalah perintah untuk mulai berbagi koneksi internet.

      Kalau ada error, bisa dilihat penyebabnya di log (/var/log/hostapd.log).

      Hapus
  8. Terima kasih ya mas. Laptop saya sudah bisa sharing wifi di ubuntu 12.04

    BalasHapus
  9. mas saya mau nanya kira2 knp yah saya tidak mengalami eror tapi di hp saya tidak ada ssid yang muncul?

    BalasHapus
    Balasan
    1. Coba koneksi dengan perangkat wifi lainnya. Untuk melihat log, ada di /var/log/hostapd.log

      Hapus
    2. ternyata di hostapd.lognya eror gini mas:
      Configuration file: /etc/hostapd/hostapd.conf
      nl80211: Register Action command failed: ret=-114 (Operation already in progress)
      nl80211: Register Action match - hexdump(len=1): 06
      nl80211: Failed to register Action frame processing - ignore for now
      nl80211: Add own interface ifindex 3
      nl80211: Failed to set interface 3 to mode 3: -95 (Operation not supported)
      nl80211: Failed to set interface 3 to mode 3: -95 (Operation not supported)
      nl80211: Interface mode change to 3 from 0 failed
      nl80211: Failed to set interface wlan0 into AP mode
      nl80211 driver initialization failed.
      ELOOP: remaining socket: sock=4 eloop_data=0x969d900 user_data=0x969dea0 handler=0x807c5e0
      ELOOP: remaining socket: sock=6 eloop_data=0x969fe18 user_data=(nil) handler=0x8086770
      itu knp yah?

      Hapus
    3. Coba cek di sini deh: http://linuxwireless.org/en/users/Drivers

      Mungkin hardware tidak support?

      Hapus
    4. Setting driver di hostapd.conf adalah nl80211 ( eN eL delapan nol dua satu satu), BUKAN n180211 ( eN satu delapan no dua satu satu ).

      :)

      Hapus
  10. ERROR: Calling a sysvinit script on a system using upstart isn't supported. Please use the 'service' command instead.

    sblm nya ane terimakasih .. penjelasan dari ente jelas bgt .. tp ane bingung ngartiin ini error ...

    ane koneksi yg mau d share modemUSB gsm yg ane konekin pakai sakis3g

    dan ini hardware wlan ane

    root@kup:/etc# lspci |grep Wireless
    05:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000 [Condor Peak]

    BalasHapus
    Balasan
    1. Coba cek dan analisa isi di log (/var/log/hostapd.log).

      Hapus
  11. Asyik nih beritanya, Kalo koneksinya menggunakan wifi bisa gk mas?
    kalo saya baca menggunakan kabel lan sama usb modem.

    BalasHapus
    Balasan
    1. well, sepertinya nggak bisa. Soalnya kalau koneksi ke internet menggunakan wifi, trus disebar lagi menggunakan wifi itu istilahnya repeater, bukan hotspot.

      Lagipula, interface untuk koneksi internet harus berbeda dengan interface yang digunakan untuk mem-broadcast.

      Hapus
  12. kakak,punya saia ada error seperti ini ya,mohon solusinya..
    andri@andri-Compaq-510:~$ sudo ap_ctl --start
    /usr/bin/ap_ctl: 1: /usr/bin/ap_ctl: !/bin/bash: not found
    /usr/bin/ap_ctl: 9: /usr/bin/ap_ctl: [[: not found
    /usr/bin/ap_ctl: 9: /usr/bin/ap_ctl: --start: not found
    /usr/bin/ap_ctl: 30: /usr/bin/ap_ctl: [[: not found
    /usr/bin/ap_ctl: 30: /usr/bin/ap_ctl: --start: not found
    /usr/bin/ap_ctl: 35: /usr/bin/ap_ctl: [[: not found
    /usr/bin/ap_ctl: 35: /usr/bin/ap_ctl: --start: not found
    /usr/bin/ap_ctl: 53: /usr/bin/ap_ctl: [[: not found
    /usr/bin/ap_ctl: 53: /usr/bin/ap_ctl: --start: not found
    /usr/bin/ap_ctl
    A tool to manage hostapd and dhcpd3
    Usage:
    -0 --start Start hostapd and dhcpd3
    -1 --stop Stop hostapd and dhcpd3 with signal 2
    -2 --ics Activate internet connection sharing
    between specified interfaces
    -3 --noics Undo internet connection sharing settings

    BalasHapus
    Balasan
    1. Coba ikuti tips dari awal, dan lebih hati2 ketika copast.

      Hapus
  13. gan numpang nanya nih , spesifikasi untuk motherboard yang bisa digunain sabagai akses point apa aja? terus iso yang ngedukungnya apa aja?

    BalasHapus
    Balasan
    1. Bukan motherboard, tapi wifi card yang harus diperhatikan. coba cek di sini: http://linuxwireless.org/en/users/Drivers

      iso maksudnya pa ya??? tips ini sudah berhasil saya coba di Ubuntu dan Debian, mungkin turunan Debian yang lainnya juga bisa.

      Hapus
  14. bisa mas, makasih toturialnya

    BalasHapus
  15. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  16. kak,etika saya jalankan perintah "sudo ap_ctl --ics"malah access point di laptop saya tidak bisa di access atau down.saya coba cek di log malah keluar permission definied.mohon solusinya

    BalasHapus
    Balasan
    1. hem, bagaimana dengan command2 sebelumnya, seperti "sudo ap_ctl --start"?

      Mengenai permission denied, mungkin karena user yang dipakai bukan termasuk anggota group sudoer. tapi agak aneh karena seharusnya diketahui ketika menjalankan command "sudo ap_ctl --start"

      BTW, pakai distro apa? soalnya saya sudah coba di Debian dan Ubuntu, keduanya sukses.

      Hapus
  17. waktu ngejalanin "sudo ap_ctl --star" muncul ini " bad option at line 18 of /etc/dnsmaq.conf"
    pakai ubuntu

    BalasHapus
    Balasan
    1. nah tuh, ada keterangan lokasi error, di file /etc/dnsmasq.conf
      Coba cek di file itu, apakah sesuai dengan petunjuk. Dan lagipula, setelah install dnsmasq, file /etc/dnsmasq.conf sudah ada isinya. Isi yang sudah ada jangan di hapus. Cukup tambahkan konfigurasi di petunjuk pada akhir konfigurasi aslinya.

      Hapus