Skip to content

Instantly share code, notes, and snippets.

@adiog
Created February 17, 2018 23:09
Show Gist options
  • Save adiog/394aaa55ecf49410fe7530df01bf500a to your computer and use it in GitHub Desktop.
Save adiog/394aaa55ecf49410fe7530df01bf500a to your computer and use it in GitHub Desktop.
Create Access Point on Debian/Ubuntu
#!/bin/bash
### CONFIG ###
ETH=enp4s0 # interface connected to the Internet
WLAN=wlp5s0 # interface serving as an Access Point
ACCESS_POINT_SSID=thinkpad
ACCESS_POINT_PASS=password
SERVER_IP=192.168.42.1
SERVER_SUBNET=192.168.42.0
CLIENT_IP_MIN=192.168.42.2
CLIENT_IP_MAX=192.168.42.3
##############
# install packages
sudo apt install hostapd isc-dhcp-server iptables
# stop services
sudo service networking stop
sudo service hostapd stop
sudo service isc-dhcp-server stop
# stop interfaces
sudo ifconfig ${ETH} down
sudo ifconfig ${WLAN} down
# setup interfaces
sudo ifconfig ${ETH} up
sudo dhclient ${ETH}
sudo ifconfig ${WLAN} up
sudo ifconfig ${WLAN} ${SERVER_IP}
# create hostapd config file
(
echo "interface=${WLAN}"
echo "driver=nl80211"
echo "ssid=${ACCESS_POINT_SSID}"
echo "hw_mode=g"
echo "channel=1"
echo "macaddr_acl=0"
echo "auth_algs=1"
echo "ignore_broadcast_ssid=0"
echo "wpa=2"
echo "wpa_passphrase=${ACCESS_POINT_PASS}"
echo "wpa_key_mgmt=WPA-PSK"
echo "wpa_pairwise=TKIP"
echo "rsn_pairwise=CCMP"
) | sudo tee /etc/default/hostapd
# register hostapd config file
(
echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"'
) | sudo tee /etc/default/hostapd
# create dhcpd config file
(
echo "default-lease-time 600;"
echo "max-lease-time 7200;"
echo ""
echo "authoritative;"
echo ""
echo "subnet ${SERVER_SUBNET} netmask 255.255.255.0 {"
echo " range ${CLIENT_IP_MIN} ${CLIENT_IP_MAX};"
echo " option routers ${SERVER_IP};"
echo " option domain-name-servers 8.8.8.8, 8.8.4.4;"
echo "}"
) | sudo tee /etc/dhcp/dhcpd.conf
# update routing rules
sudo iptables -t nat -A POSTROUTING -o ${ETH} -j MASQUERADE
sudo iptables -A FORWARD -i ${ETH} -o ${WLAN} -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i ${WLAN} -o ${ETH} -j ACCEPT
# apply routing rules
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# start dhcp daemon
sudo service isc-dhcp-server start
# start Access Point daemon
sudo service hostapd start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment