คอนฟิก CoovaChilli ทำหน้าที่เป็น WiFi Captive Portal เบื้องต้น

หลังจากที่ได้ คอนไพล์ซอร์ซโค้ดและติดตั้ง CoovaChilli บน Ubuntu 18.04 ตอนนี้เรามาลองคอนฟิก CoovaChilli ให้ทำหน้าที่เป็น Captive Portal เบื้องต้นกัน เพื่อให้ผู้ใช้งาน WiFi ล็อกอินก่อนใช้อินเทอร์เน็ตได้

ในบทความนี้ ทดลองบนเซิร์ฟเวอร์ที่ติดตั้ง Ubuntu 18.04 และมีพอร์ตแลนอยู่ 3 พอร์ต

  • enp0s3 10.0.2.15/24 ทำหน้าที่เป็นพอร์ต WAN เชื่อมต่อกับอินเทอร์เน็ต
  • enp0s8 192.168.56.105/24 เป็นพอร์ตสำหรับการ ssh เข้าเซิร์ฟเวอร์
  • enp0s9  ยังไม่ได้คอนฟิก จะใช้เป็นพอร์ตที่เชื่อมต่อกับ Access Point

เริ่มต้นแก้ไขไฟล์คอนฟิก chilli โดยเปลี่ยนค่าตัวแปร START_CHILLI เป็นค่า 1

alice@coova:~$ sudo vi /etc/default/chilli
START_CHILLI=1
CONFFILE="/etc/chilli.conf"
HS_USER="chilli"

cd เข้าไปใน ไดเรกทอรี /etc/chilli/ ซึ่งเป็นที่เก็บไฟล์คอนฟิกของ chilli

alice@coova:~$ cd /etc/chilli/

alice@coova:/etc/chilli$ ls -l
total 52
-rw-r--r-- 1 root root    6619 Oct 20 2012 defaults
-rwsr-x--- 1 root chilli   611 Oct 20 2012 down.sh
-rwxr-xr-x 1 root root   13648 Oct 20 2012 functions
-rw-r--r-- 1 root root     687 Oct 20 2012 gui-config-default.ini
-rwxr-xr-x 1 root root     567 Oct 20 2012 newmulti.sh
-rwsr-x--- 1 root chilli  2879 Oct 20 2012 up.sh
-rwxr-xr-x 1 root root    1896 Oct 20 2012 wpad.dat
drwxr-xr-x 2 chilli root  4096 Mar 13 13:54 www
-rwxr-xr-x 1 root root    1025 Oct 20 2012 wwwsh

copy ไฟล์ defaults เป็นชื่อไฟล์ config

alice@coova:/etc/chilli$ sudo cp defaults config

แก้ไขค่าคอนฟิกพอร์ตในไฟล์ config โดยในที่นี้จะคอนฟิกพอร์ตดังนี้

  • enp0s3 เป็นพอร์ต WAN สำหรับเชื่อมต่อกับอินเทอร์เน็ต
  • enp0s9 เป็นพอร์ต LAN สำหรับเชื่อมต่อเข้ากับอุปกรณ์ Access Point

ตัวอย่างการแก้ไขค่าคอนฟิกพอร์ตในไฟล์ config

alice@portal:/etc/chilli$ sudo vi config
...
HS_WANIF=enp0s3           # WAN Interface toward the Internet
HS_LANIF=enp0s9           # Subscriber Interface for client
HS_NETWORK=10.1.0.0       # HotSpot Network (must include 
HS_NETMASK=255.255.255.0  # HotSpot Network Netmask
HS_UAMLISTEN=10.1.0.1     # HotSpot IP Address
HS_UAMPORT=3990           # HotSpot UAM Port
HS_UAMUIPORT=4990         # HotSpot UAM "UI" Port

# OpenDNS Servers
HS_DNS1=8.8.4.4
HS_DNS2=8.8.8.8

เพื่อความง่ายในการทดสอบเบื้องต้น เราจะทดสอบการล็อกอินก่อนใช้ WiFi ด้วย username, password แบบ local users คือเก็บเป็นไฟล์ในไดเรกทอรีคอนฟิกนี้เลย

แก้ไขไฟล์ config โดยเอาเครื่องหมาย # ออกจากหน้าบรรทัด HS_USELOCALUSERS=on

alice@coova:/etc/chilli$ sudo vi config
...
HS_USELOCALUSERS=on # To use the /etc/chilli/localusers file

สร้างไฟล์เก็บ username, password แบบ local ในไฟล์ localusers โดย username, password จะคั่นด้วยเครื่องหมาย :

alice@coova:/etc/chilli$ sudo vi localusers
bob:password1

สร้างไฟล์ ipup.sh เพื่อให้รันหลังจากรันเซอร์วิส chilli โดยเซิร์ฟเวอร์ที่รัน chilli นี้จะทำ MASQUERADE หรือ NAT เพื่อให้ผู้ใช้งานที่ต่อ WiFi สามารถออกเน็ตผ่านทางพอร์ต  WAN ที่คอนฟิกไว้ในไฟล์ config ได้ เช่นในที่นี้คือพอร์ต enp0s3

alice@coova:/etc/chilli$ sudo vi ipup.sh
#!/bin/sh
#
# Allow IP masquerading through this box
/sbin/iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

รันคำสั่ง chmod แก้ไขให้ไฟล์ ipup.sh สามารถรัน (execute) ได้

alice@coova:/etc/chilli$ sudo chmod 755 /etc/chilli/ipup.sh

รันเซอร์วิส chilli

alice@coova:/etc/chilli$ sudo systemctl start chilli

alice@coova:/etc/chilli$ sudo systemctl status chilli
● chilli.service - LSB: Start CoovaChilli daemon at boot time
   Loaded: loaded (/etc/init.d/chilli; generated)
   Active: active (running) since Thu 2019-03-14 09:33:21 UTC; 9s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1456 ExecStart=/etc/init.d/chilli start ...
    Tasks: 1 (limit: 2320)
   CGroup: /system.slice/chilli.service
           └─1540 /usr/sbin/chilli -c /etc/chilli.conf

หากลองรันคำสั่ง ip addr จะเห็นพอร์ต tun0 ถูกสร้างขึ้นมาใหม่ โดยจะถูกคอนฟิก ip เป็น 10.1.0.1 ตามที่เราระบุในไฟล์ config

ต่ออุปกรณ์ Access Point เข้ากับพอร์ต enp0s9 ของเซิร์ฟเวอร์ แล้วคอนฟิก Access Point ให้เป็นแบบ Open

ทดลองใช้มือถือต่อเข้ากับ WiFi ของ Access Point สักพักจะมีหน้าจอให้ล็อกอิน

กรอก username, password ที่กำหนดไว้ในไฟล์ localusers

ตัวอย่างหน้าจอล็อกอินก่อนเข้าใช้งาน WiFi ของ CoovaChilli

หลังจากล็อกอินถูกต้อง ก็จะสามารถใช้งานอินเทอร์เน็ตได้

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.