+- RPi -------+
+---+ 192.168.1.2 | +- Laptop ----+
| | WLAN AP +-))) (((-+ WLAN Client |
| | 192.168.3.1 | | 192.168.3.2 |
| +-------------+ +-------------+
+- Router ----+ |
| Firewall | | +- PC#1 ------+
(Internet)---WAN-+ DHCP server +-LAN-+---+ 192.168.1.3 |
| 192.168.1.1 | | +-------------+
+-------------+ |
| +- PC#2 ------+
+---+ 192.168.1.4 |
+-------------+Dependencies
$ sudo apt install -y hostapd dnsmasq \
netfilter-persistent iptables-persistent
$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd
$ sudo systemctl enable dnsmasqConfigure wireless interface
With wlan0 is your wireless interface, open /etc/dhcpcd.conf and set:
interface wlan0
static ip_address=192.168.3.1/24
nohook wpa_supplicantEnable ip forward
Create file /etc/sysctl.d/routed-ap.conf with content:
net.ipv4.ip_forward=1Add firewall rule
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
$ sudo iptables -A INPUT -j ACCEPT
$ sudo iptables -A OUTPUT -j ACCEPT
Save the current rules to load them at boot:
$ sudo netfilter-persistent saveConfigure DHCP and DNS
Edit /etc/dnsmasq.conf:
interface=wlan0
dhcp-range=192.168.3.2,192.168.3.10,255.255.255.0,24h
domain=wlan
address=/gw.wlan/192.168.3.1Configure hostap
Edit /etc/hostapd/hostapd.conf:
country_code=US
interface=wlan0
ssid=HOTSPOTNAME
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=SECRETPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Set your hotspot name and password for other to access at line ssid= and wpa_passphrase=.
Reboot
$ sudo rebootReferences
- https://www.raspberrypi.com/documentation/computers/configuration.html#setting-up-a-routed-wireless-access-point
- https://superuser.com/questions/616642/how-to-use-nat-iptables-rules-for-hostapd
Comments