หลังจากที่ได้ คอนไพล์ซอร์ซโค้ดและติดตั้ง 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
หลังจากล็อกอินถูกต้อง ก็จะสามารถใช้งานอินเทอร์เน็ตได้