Có thể bạn là chủ kinh doanh cung cấp Wi-Fi miễn phí cho khách; có thể bạn có khán giả bắt buộc và định bán quyền truy cập mạng Wi-Fi, hoặc chỉ muốn nhắc nhẹ khách về quy tắc dùng mạng nhà? Bạn sẽ học cách biến Raspberry Pi thành captive portal Wi-Fi access point.
Tại sao cần captive portal?
Nếu bạn từng thử truy cập Wi-Fi mở tại quán cà phê, nhà hàng, khách sạn, phòng gym, chỉ để gặp màn hình đăng nhập từ chối cho tiến hành trước khi nhập thông tin (thường là email), bạn đã quen captive portal!
Captive portal là trang web tự mở trong trình duyệt mặc định của người dùng hoặc tải khi họ thử truy cập trang web. Người dùng thường phải hoàn thành hành động trước khi rời captive portal.
Mặc dù thường dùng bởi doanh nghiệp, captive portal cũng có thể bổ sung hữu ích cho mạng nhà. Ví dụ, tạo mạng riêng cho con, kèm kiểm soát cha mẹ và captive portal nhắc nhẹ con rằng bạn tin tưởng chúng dùng web có trách nhiệm – phòng khi chúng đủ khôn dùng VPN.
Chuẩn bị
Để hoàn thành hướng dẫn, bạn cần:
- Raspberry Pi chạy Raspberry Pi OS
- Cáp nguồn tương thích Pi
- Bàn phím ngoại vi và cách gắn vào Pi
- Cáp HDMI hoặc micro HDMI tùy model Pi
- Màn hình ngoại vi
- Cáp Ethernet. Vì biến Pi thành access point không dây, bạn cần kết nối qua Ethernet thay vì Wi-Fi. Điều này cũng nghĩa là không dùng được Raspberry Pi 2 hoặc Pi Zero vì thiếu cổng Ethernet hoặc card không dây.
Bắt đầu: cập nhật Raspberry Pi
Gắn bàn phím, màn hình, cáp Ethernet, sau đó cắm nguồn Pi. Sau khi boot, mở terminal và gõ lệnh sau để cập nhật:
sudo apt update && sudo apt -y upgrade
Khởi động lại Pi bằng lệnh:
sudo reboot
Sau khi reboot, mọi thứ cập nhật.
Thiết lập Wireless Access Point cho Raspberry Pi
Có vài cách biến Pi thành access point đầy đủ, nhưng hướng dẫn này dùng RaspAP vì dễ thiết lập.
Để cài RaspAP, mở Terminal và chạy:
curl -sL https://install.raspap.com | bash
Tiếp, reboot Pi:
reboot
Sau khi Pi chạy lại, access point Wi-Fi cấu hình với thiết lập sau:
- Địa chỉ IP: 10.3.141.1
- Tên người dùng: admin
- Mật khẩu: secret
- Phạm vi DHCP: 10.3.141.50 đến 10.3.141.255
- SSID: raspi-webgui
- Mật khẩu Wi-Fi: ChangeMe
Để test access point, lấy thiết bị hỗ trợ Wi-Fi và kiểm tra cài đặt mạng. Bạn thấy tùy chọn kết nối mạng mới "raspi-webgui".
Kết nối mạng này, nhập mật khẩu. Mặc định RaspAP là "ChangeMe", gõ vào hộp cấu hình mạng, bấm "Connect", bạn kết nối access point Pi mới!
Bảo mật Access Point Wi-Fi
Trước khi tiến xa, cập nhật "ChangeMe" thành mật khẩu an toàn hơn, qua giao diện web RaspAP:
1. Mở trình duyệt web nếu chưa.
2. Thanh địa chỉ, nhập: 10.3.141.1.
Khi hỏi, nhập user "admin" và pass "secret". Bây giờ xem giao diện web RaspAP chính.
3. Menu bên trái, chọn "Hotspot -> Security".
4. Tìm phần "PSK" và nhập mật khẩu bạn muốn cho access point Wi-Fi – đảm bảo an toàn!
5. Bấm "Save Settings".
Tạo Captive Portal với Nodogsplash
Giờ access point chạy, bạn sẵn sàng bảo mật nó bằng captive portal.
Captive portal sẽ dựng bằng giải pháp Nodogsplash, nhưng trước cần cài gói libmicrohttpd-dev, chứa code dùng compile Nodogsplash.
Trên Pi, chạy lệnh:
sudo apt install git libmicrohttpd-dev
Khi đã có gói libmicrohttpd-dev, clone repo chứa code Nodogsplash:
cd ~ && git clone https://github.com/nodogsplash/nodogsplash.git
Sau khi Raspbian clone xong code, bạn sẵn sàng compile và cài Nodogsplash:
cd ~/nodogsplash && make && sudo make install
Nodogsplash giờ cài trên Pi.
Cấu hình Captive Portal
Tiếp, cần trỏ Nodogsplash về địa chỉ Gateway, là giao diện router kết nối mạng cục bộ. RaspAP mặc định 10.3.141.1, nên sửa file cấu hình Nodogsplash để lắng nghe địa chỉ này.
Để sửa Gateway address, mở file cấu hình Nodogsplash:
sudo nano /etc/nodogsplash/nodogsplash.conf
Thêm sau:
GatewayInterface wlan0 GatewayAddress 10.3.141.1 MaxClients 250 AuthIdleTimeout 480
Sau khi thay đổi, lưu file nhấn Ctrl + O, rồi Ctrl + X.
Khởi động captive portal bằng lệnh:
sudo nodogsplash
Captive portal giờ hoạt động. Để test, thử kết nối hotspot Wi-Fi.
Bạn sẽ thấy captive portal mặc định Nodogsplash.
Đảm bảo Portal luôn trực tuyến
Sau khi kiểm tra captive portal hoạt động đúng, cần đảm bảo Nodogsplash tự chạy khi boot.
Thiết lập Nodogsplash tự chạy bằng cách sửa file "rc.local". Trong Terminal Pi, chạy:
sudo nano /etc/rc.local
Tìm dòng:
exit 0
Ngay trên nó, thêm:
nodogsplash
Lưu thay đổi nhấn Ctrl + O, rồi Ctrl + X.
Cách tùy chỉnh Captive Portal
Lúc này bạn có hotspot Wi-Fi bảo vệ bằng captive portal. Tuy nhiên, vẫn dùng trang mặc định Nodogsplash, nên phần cuối hãy xem cách truy cập code điều khiển trang portal và chỉnh sửa đơn giản.
Để tùy chỉnh trang mặc định Nodogsplash, mở file "splash.html":
sudo nano /etc/nodogsplash/htdocs/splash.html
Bây giờ thêm hình ảnh, văn bản vào portal và xóa nội dung hiện có. Ví dụ, ảnh dưới thay đổi văn bản hiển thị trên captive portal.
Khi hài lòng chỉnh sửa, lưu nhấn Ctrl + O, rồi Ctrl + X.
Thử kết nối lại hotspot Wi-Fi, bạn thấy portal mới.
Lưu ý tùy OS và trình duyệt, bạn có thể cần xóa cache trình duyệt để thấy portal cập nhật.
Ngoài access point, bạn cũng có thể biến Pi thành ad-blocker hoặc web server cá nhân.
Bạn dùng captive portal mới như thế nào? Chào đón khách mạng nhà, đặt quy tắc, hay công cụ quảng bá kinh doanh? Cho biết ở bình luận!