How to setup Access Point (WiFi hotspot) on Debian

40,194

Here are scripts for creating WiFi AP:

  • SetupWiFi.sh - Sets up WiFi network and shares eth0 with wlan0. Change "ssid" and "wpa_passphrase" for setting WiFi SSID (AP name) and password.
  • StartWifi.sh - Starts WiFi. (SetupWiFi.sh already starts it so you can skip it first time.)
  • StopWiFi.sh - Stops it.

SetupWiFi.sh:

#!/bin/bash
apt-get install -y hostapd dnsmasq wireless-tools iw wvdial

sed -i 's#^DAEMON_CONF=.*#DAEMON_CONF=/etc/hostapd/hostapd.conf#' /etc/init.d/hostapd

cat <<EOF > /etc/dnsmasq.conf
log-facility=/var/log/dnsmasq.log
#address=/#/10.0.0.1
#address=/google.com/10.0.0.1
interface=wlan0
dhcp-range=10.0.0.10,10.0.0.250,12h
dhcp-option=3,10.0.0.1
dhcp-option=6,10.0.0.1
#no-resolv
log-queries
EOF

service dnsmasq start

ifconfig wlan0 up
ifconfig wlan0 10.0.0.1/24

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
echo '1' > /proc/sys/net/ipv4/ip_forward

cat <<EOF > /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
channel=1

ssid=WiFiAP
wpa=2
wpa_passphrase=YOUR_PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
# Change the broadcasted/multicasted keys after this many seconds.
wpa_group_rekey=600
# Change the master key after this many seconds. Master key is used as a basis
wpa_gmk_rekey=86400

EOF

service hostapd start

StartWiFi.sh:

#!/bin/bash
service hostapd start
service dnsmasq start

StopWiFi.sh:

#!/bin/bash
service hostapd stop
service dnsmasq stop

Notes:

  • Tested on Debian 7, but should work on newer version.
  • Make sure you are running superuser. (For newbies) make these files executable by using chmod +x 'SetupWiFi.sh'

Hope it helps.

Share:
40,194

Related videos on Youtube

WagnerMatosUK
Author by

WagnerMatosUK

Updated on September 18, 2022

Comments

  • WagnerMatosUK
    WagnerMatosUK over 1 year

    I'm trying to setup an AP got stuck. I'm using an Odroid U3 and the WiFi adapter is the Module 3 from Hardkernel. I'm also using a Debian Jessie.

    Not, I've got it to almost work: the Odroid has access to the internet and other devices (my phone and my tablet) can see the network, however when I try to connect to the network, I get the message: Unable to join the network "myNetwork".

    My hosts file is as follow:

    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    
    auto lo br0
    iface lo inet loopback
    
    allow-hotplug eth0
    iface eth0 inet manual
    
    allow-hotplug wlan0
    iface wlan0 inet manual
    
    # Bridge setup
    
    # for dhcp address
    #iface br0 inet dhcp
    # bridge_ports eth0 wlan0
    
    # for static ip
    iface br0 inet static
    bridge_ports eth0 wlan0
    # adapt with your network settings
    address 192.168.1.250
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.1.1
    fns-search localdomain
    

    my hostapd.conf file is:

        interface=wlan0
    driver=nl80211
    ctrl_interface=/var/run/hostapd
    ctrl_interface_group=0
    ssid=RaspAP
    hw_mode=g
    wpa=2
    channel=8
    wpa_passphrase=raspiwlan
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP
    rsn_pairwise=CCMP
    beacon_int=100
    auth_algs=3
    wmm_enabled=1
    

    and the result of ifconfig is:

        br0       Link encap:Ethernet  HWaddr 1e:fb:50:05:6b:da
              inet addr:192.168.1.250  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::1cfb:50ff:fe05:6bda/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:803 errors:0 dropped:0 overruns:0 frame:0
              TX packets:466 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:90238 (88.1 KiB)  TX bytes:48926 (47.7 KiB)
    
    eth0      Link encap:Ethernet  HWaddr 1e:fb:50:05:6b:da
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1838 errors:0 dropped:0 overruns:0 frame:0
              TX packets:466 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:557975 (544.8 KiB)  TX bytes:54146 (52.8 KiB)
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:390 errors:0 dropped:0 overruns:0 frame:0
              TX packets:390 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:25662 (25.0 KiB)  TX bytes:25662 (25.0 KiB)
    
    mon.wlan0 Link encap:UNSPEC  HWaddr 00-A8-2B-00-05-4D-00-00-00-00-00-00-00-00-00-00
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:21913 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:6729206 (6.4 MiB)  TX bytes:0 (0.0 B)
    
    wlan0     Link encap:Ethernet  HWaddr 00:a8:2b:00:05:4d
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:17 errors:0 dropped:0 overruns:0 frame:0
              TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:2828 (2.7 KiB)  TX bytes:2490 (2.4 KiB)
    

    After some research, I've found an answer on SO (unfortunately lost the link) where suggests that the problem might be related to dynamic ip addresses for the devices connecting to the Odroid, but I'm not sure that's case. Any suggestions?

    Many thanks

    • WagnerMatosUK
      WagnerMatosUK about 10 years
      For anyone interested in the subject, it turns out the problem is the WiFi adaptor (at least it seems that way), so I've ordered a new one with an Atheros chipset. Once it arrives I'll test and post the results.
    • Raymond Lagonda
      Raymond Lagonda over 9 years
      do you have any dhcp running? Your problems probably because of your client can not obtain ip.
    • edumgui
      edumgui over 9 years
      Recently I tested hostapd at home. Very easy with this post: nims11.wordpress.com/2012/04/27/… Take a look and tell us if you missed something ;-)
    • jredd
      jredd almost 9 years
      I have done this on my Rasberry Pi with Debian 7. There are a LOT of guides out there for doing this on a RPi, so I will not mention any one in particular. However, I suggest using dnsmasqd + hostapd. If you have an issue, make sure to not only restart the services, but also restarting networking-service can solve many issues. /etc/init.d/networking restart
  • haxpanel
    haxpanel about 8 years
    hey there, these scripts look very handy so that I'm trying to use them. The only difference is that I'm using wlan1 instead of eth0 for accessing the internet and wlan0 for sharing it. I just simply replaced the eth0 with wlan1 but no luck. Also, I set up the wlan1 in the interfaces file in order to connect to the hotspot. Any idea? :) Thanks
  • haxpanel
    haxpanel about 8 years
    I managed to make it work - this answer needs some fix
  • e-info128
    e-info128 about 7 years
    The source of response: offensive-security.com/kali-linux/…
  • Paulin Trognon
    Paulin Trognon over 6 years
    ifconfig has been deprecated in debian 9, does someone know how to update this script to make it work with debian 9?