Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีทำให้ Raspberry Pi กลายเป็น Captive Portal Wi-Fi Access Point

คุณอาจเป็นเจ้าของธุรกิจที่เสนอ Wi-Fi ฟรีให้ลูกค้า; หรือมีกลุ่มเป้าหมายและวางแผนขายการเข้าถึง Wi-Fi network; หรืออยากให้แขกได้รับการเตือนเป็นมิตรเรื่องจรรยาบรรณการใช้ home network? คุณจะเรียนรู้ที่นี่วิธีทำให้ Raspberry Pi กลายเป็น captive portal Wi-Fi access point

ทำไมต้องมี captive portal?

หากเคยพยายามเข้าถึง Wi-Fi network ที่ดูเปิดอยู่ที่คาเฟ่ ร้านอาหาร โรงแรม หรือโรงยิม แต่ถูกทักทายด้วยหน้าจอ login ที่ไม่อนุญาตให้ดำเนินต่อก่อนกรอกข้อมูล (มักเป็น email) คุณคุ้นเคยกับ captive portals แล้ว!

Captive portal คือ webpage ที่เปิดอัตโนมัติในเบราว์เซอร์เริ่มต้นของผู้ใช้ หรือโหลดเมื่อพยายามเข้าชม webpage ผู้ใช้มักต้องทำ action ใดๆ ก่อนจะผ่าน captive portal ได้

แม้ใช้ทั่วไปในธุรกิจ captive portals ยังสามารถเป็นการเพิ่มที่มีประโยชน์สำหรับ home network เช่น สร้าง network แยกสำหรับลูก พร้อม parental controls และ captive portal ที่เตือนเบาๆ ว่าเชื่อมั่นว่าพวกเขาจะใช้เว็บอย่างรับผิดชอบ — เผื่อพวกเขาเก่งเทคโนโลยีพอรู้ว่า VPN ทำงานยังไง

สิ่งที่ต้องการ

เพื่อทำ tutorial นี้ ต้องการ:

  • Raspberry Pi ที่รัน Raspberry Pi OS
  • Power cable ที่เข้ากับ Pi ของคุณ
  • External keyboard และวิธีต่อกับ Pi
  • HDMI หรือ micro HDMI cable ขึ้นอยู่กับรุ่น Pi
  • External monitor
  • Ethernet cable เนื่องจากทำให้ Pi เป็น wireless access point ต้องเชื่อมผ่าน Ethernet ไม่ใช่ Wi-Fi หมายความว่าจะไม่ทำงานกับ Raspberry Pi 2 หรือ Raspberry Pi Zero เพราะขาด Ethernet port หรือ wireless card

เริ่มต้น: อัปเดต Raspberry Pi

ต่อ external keyboard, monitor และ ethernet cable แล้วต่อ Pi เข้า power source บูทเสร็จ เปิด terminal พิมพ์คำสั่งอัปเดต:

sudo apt update && sudo apt -y upgrade

Reboot Pi:

sudo reboot

Reboot เสร็จ ทุกอย่าง up-to-date แล้ว

ตั้งค่า wireless access point สำหรับ Raspberry Pi

มีหลายวิธีทำให้ Pi เป็น access point ใช้ RaspAP ใน tutorial นี้ เพราะ setup ง่าย

ติดตั้ง RaspAP software: เปิด Terminal รัน:

curl -sL https://install.raspap.com | bash

Reboot Pi อีกครั้ง:

reboot

Pi กลับมาทำงานแล้ว Wi-Fi access point จะถูกตั้งค่าด้วย:

  • IP address: 10.3.141.1
  • Username: admin
  • Password: secret
  • DHCP range: 10.3.141.50 ถึง 10.3.141.255
  • SSID: raspi-webgui
  • Wi-Fi Password: ChangeMe

ทดสอบ access point: จับอุปกรณ์ Wi-Fi ใดๆ เช็ค network settings ควรเห็น "raspi-webgui" network ใหม่

เชื่อมต่อ network นี้ จะขอรหัสผ่าน RaspAP default password คือ "ChangeMe" พิมพ์ในกล่อง network config คลิก "Connect" จะเชื่อมต่อกับ Raspberry Pi access point ใหม่!

รักษาความปลอดภัย Wi-Fi access point

ก่อนไปต่อ อัปเดต "ChangeMe" เป็นรหัสผ่านปลอดภัยมากขึ้น ผ่าน RaspAP web interface:

  1. เปิดเว็บเบราว์เซอร์หากยังไม่ได้เปิด
  2. ใน address bar ใส่: 10.3.141.1
  3. เมื่อถาม ใส่ username "admin" และ password "secret" จะเห็น RaspAP web interface หลัก
  4. ในเมนูซ้าย เลือก "Hotspot -> Security"
  5. หาส่วน "PSK" ใส่รหัสผ่านที่ต้องการสำหรับ Wi-Fi access point — ให้ปลอดภัย!
  6. คลิก "Save Settings"

สร้าง captive portal ด้วย Nodogsplash

ตอนนี้ access point ทำงานแล้ว พร้อม secure ด้วย captive portal

Captive portal จะสร้างด้วย Nodogsplash captive portal solution แต่ต้องติดตั้งแพ็กเกจ libmicrohttpd-dev ก่อน เพราะมีโค้ดที่จะใช้ compile Nodogsplash

บน Raspberry Pi รัน:

sudo apt install git libmicrohttpd-dev

ได้ libmicrohttpd-dev แล้ว clone repository ที่มีโค้ด Nodogsplash ทั้งหมด:

cd ~
git clone https://github.com/nodogsplash/nodogsplash.git

Raspbian clone code เสร็จ พร้อม compile และติดตั้ง Nodogsplash software:

cd ~/nodogsplash
make
sudo make install

Nodogsplash ติดตั้งบน Raspberry Pi แล้ว

ตั้งค่า captive portal

ต่อไป ต้องชี้ Nodogsplash ไปที่ Gateway address ซึ่งคือ router interface ที่เชื่อมต่อ local network RaspAP ใช้ 10.3.141.1 โดยค่าเริ่มต้น จึงต้องแก้ไข Nodogsplash config file ให้ listen บน address นี้

แก้ไข Gateway address: เปิด Nodogsplash config file:

sudo nano /etc/nodogsplash/nodogsplash.conf

เพิ่มข้อมูลต่อไปนี้:

GatewayInterface wlan0
GatewayAddress 10.3.141.1
MaxClients 250
AuthIdleTimeout 480

บันทึกไฟล์: Ctrl+O ตามด้วย Ctrl+X

เริ่ม captive portal:

sudo nodogsplash

Captive portal ทำงานแล้ว ทดสอบโดยเชื่อมต่อ Wi-Fi hotspot

ควรได้รับการต้อนรับจาก Nodogsplash default captive portal

ทำให้ portal ออนไลน์ตลอด

ตรวจสอบ captive portal ทำงานถูกต้องแล้ว ต้องทำให้ Nodogsplash เริ่มอัตโนมัติตอนบูต

ตั้งค่า Nodogsplash เริ่มอัตโนมัติโดยแก้ไขไฟล์ "rc.local" ใน Raspberry Pi Terminal รัน:

sudo nano /etc/rc.local

หาบรรทัด:

exit 0

ด้านบนโดยตรง เพิ่ม:

nodogsplash

บันทึก: Ctrl+O ตามด้วย Ctrl+X

วิธีปรับแต่ง captive portal

ตอนนี้มี Wi-Fi hotspot ที่ป้องกันด้วย captive portal แต่ยังใช้หน้า Nodogsplash default ส่วนสุดท้ายนี้ดูวิธีเข้าถึงโค้ดควบคุมหน้า captive portal และแก้ไขง่ายๆ

ปรับแต่งหน้า Nodogsplash default: เปิดไฟล์ "splash.html"

sudo nano /etc/nodogsplash/htdocs/splash.html

เพิ่มรูปภาพและข้อความ ลบเนื้อหาเดิมได้ ตัวอย่างในรูปข้างล่าง กำลังเปลี่ยนข้อความที่แสดงบน captive portal

พอใจกับการแก้ไข บันทึก: Ctrl+O ตามด้วย Ctrl+X

ลองเชื่อมต่อ Wi-Fi hotspot ใหม่ ควรเห็น captive portal ที่ปรับแต่งใหม่

หมายเหตุ: ขึ้นกับ OS และเบราว์เซอร์ อาจต้อง clear browser cache เพื่อเห็น captive portal ที่อัปเดต

นอกจาก Wi-Fi access point ยังสามารถทำให้ Raspberry Pi เป็น ad-blocker หรือ personal web server ได้

คุณใช้ captive portal ที่สร้างใหม่นี้ทำอะไร? ต้อนรับคนเข้ามา home network, กำหนดกฎพื้นฐาน, หรือเครื่องมือช่วย promote ธุรกิจ? บอกในความคิดเห็นด้านล่าง!