+- 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 |
+-------------+
Cài các gói cần thiết
$ sudo apt install -y hostapd dnsmasq \
netfilter-persistent iptables-persistent
$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd
$ sudo systemctl enable dnsmasq
Cấu hình wireless interface
Với wlan0
là tên của wireless interface, sửa file /etc/dhcpcd.conf
như sau:
interface wlan0
static ip_address=192.168.3.1/24
nohook wpa_supplicant
Bật ip forward
Tạo file /etc/sysctl.d/routed-ap.conf
với nội dung:
net.ipv4.ip_forward=1
Thêm 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
Lưu những rule hiện tại để load tự động ở những lần khởi động tới:
$ sudo netfilter-persistent save
Cấu hình DHCP và DNS
Sửa file /etc/dnsmasq.conf
như sau:
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.1
Cấu hình hostap
Sửa file /etc/hostapd/hostapd.conf
như sau:
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
Đặt tên và mật khẩu cho hotspot tại dòng ssid=
và wpa_passphrase=
.
Khởi động lại Pi
$ sudo reboot
Tham khảo
- 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