CoovaChilli เป็นโปรแกรมบริหารจัดการ ควบคุมการเข้าใช้งานระบบเครือข่าย เช่นสามารถกำหนดให้ผู้ใช้งาน WiFi ต้องล็อกอินก่อนจะใช้งานอินเทอร์เน็ตได้ หรือที่เรียกว่า Captive Portal
เรามาดูวิธีการดาวน์โหลด คอมไพล์ซอร์ซโค้ด CoovaChilli แล้วสร้างเป็นไฟล์ .deb เพื่อติดตั้ง บน Ubuntu 18.04 กัน
ในที่นี้จะทดลองติดตั้งบน Ubuntu 18.04 ที่เพิ่งลงเสร็จใหม่ๆ
ติดตั้งแพ็คเกจที่ใช้ในการคอมไพล์
ก่อนอื่นต้องติดตั้งแพ็คเกจ Ubuntu ที่จำเป็นต้องใช้ในการคอมไพล์ซอร์ซโค้ด CoovaChilli
alice@coova:~$ sudo apt install -y haserl alice@coova:~$ sudo apt install -y devscripts debhelper alice@coova:~$ sudo apt install -y gengetopt alice@coova:~$ sudo apt install -y libssl-dev libjson-c-dev
ดาวน์โหลดซอร์ซโค้ด CoovaChilli
เข้าเว็บไซต์ CoovaChilli คลิกที่ลิงก์ Download
แล้วคลิกลิงก์ดาวน์โหลด Source code (tar.gz)
เวอร์ชันล่าสุด ณ ตอนที่เขียนบทความนี้ คือ 1.4
ใช้คำสั่ง tar เพื่อแตกไฟล์ที่ดาวน์โหลดมา
alice@coova:~$ tar zxf coova-chilli-1.4.tar.gz alice@coova:~$ cd coova-chilli-1.4/
คอมไพล์ซอร์ซโค้ด
รันคำสั่ง debuild เพื่อคอมไพล์ซอร์ซโค้ดแล้วสร้างเป็นไฟล์ .deb
alice@coova:~/coova-chilli-1.4$ debuild dpkg-buildpackage -rfakeroot -us -uc -ui dpkg-buildpackage: info: source package coova-chilli dpkg-buildpackage: info: source version 1.3.0 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by David Bird (Coova Technologies) <support@coova.com> dpkg-source --before-build coova-chilli-1.4 dpkg-buildpackage: info: host architecture amd64 fakeroot debian/rules clean ... ^~~~~~~~~~~ DES_set_key ms_chap.c:110:3: error: implicit declaration of function ‘des_ecb_encrypt’; did you mean ‘DES_ecb_encrypt’? [-Werror=implicit-function-declaration] des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1); ^~~~~~~~~~~~~~~ DES_ecb_encrypt ms_chap.c:110:20: error: ‘des_cblock’ undeclared (first use in this function); did you mean ‘DES_cblock’? des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1); ^~~~~~~~~~ DES_cblock ms_chap.c:110:32: error: expected expression before ‘)’ token des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1); ^ cc1: all warnings being treated as errors Makefile:938: recipe for target 'ms_chap.lo' failed make[4]: *** [ms_chap.lo] Error 1 make[4]: Leaving directory '/home/alice/coova-chilli-1.4/src' Makefile:981: recipe for target 'all-recursive' failed make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory '/home/alice/coova-chilli-1.4/src' Makefile:417: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory '/home/alice/coova-chilli-1.4' Makefile:345: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/home/alice/coova-chilli-1.4' debian/rules:34: recipe for target 'build' failed make: *** [build] Error 2 dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 debuild: fatal error at line 1152: dpkg-buildpackage -rfakeroot -us -uc -ui failed
หากคอมไพล์แล้วขึ้นข้อความ error เหมือนด้านบน สาเหตุเป็นเพราะว่า ตัว CoovaChilli ยังคงใช้ OpenSSL 1.0
ลองติดตั้งแพ็คเกจ libssl1.0-dev
alice@portal:~/coova-chilli-1.4$ sudo apt install -y libssl1.0-dev
หมายเหตุ การติดตั้ง libssl1.0-dev จะลบ libssl-dev ออกจากระบบ
รันคำสั่ง debuild อีกครั้ง
alice@coova:~/coova-chilli-1.4$ debuild dpkg-buildpackage -rfakeroot -us -uc -ui dpkg-buildpackage: info: source package coova-chilli dpkg-buildpackage: info: source version 1.3.0 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by David Bird (Coova Technologies) <support@coova.com> dpkg-source --before-build coova-chilli-1.4 dpkg-buildpackage: info: host architecture amd64 dpkg-checkbuilddeps: error: Unmet build dependencies: libssl-dev dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting dpkg-buildpackage: warning: (Use -d flag to override.) debuild: fatal error at line 1152: dpkg-buildpackage -rfakeroot -us -uc -ui failed
เจออีก error เป็นเพราะไฟล์ที่ใช้ในการคอมไพล์ระบุว่าต้องมีแพ็คเกจ libssl-dev ซึ่งตอนนี้เราดันติดตั้ง libssl1.0-dev ไปแทนที่
วิธีการแก้ไขคือระบุออปชัน -d เพื่อบังคับให้คอมไพล์ไปเลย
รันคำสั่ง debuild ระบุออปชัน -d
alice@coova:~/coova-chilli-1.4$ debuild -d
dpkg-buildpackage -rfakeroot -d -us -uc -ui
dpkg-buildpackage: info: source package coova-chilli
dpkg-buildpackage: info: source version 1.3.0
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by David Bird (Coova Technologies) <support@coova.com>
dpkg-source --before-build coova-chilli-1.4
dpkg-buildpackage: info: host architecture amd64
fakeroot debian/rules clean
...
dpkg-deb: warning: conffile name '/etc/default/chilli' is duplicated
dpkg-deb: warning: conffile name '/etc/init.d/chilli' is duplicated
dpkg-deb: warning: ignoring 2 warnings about the control file(s)
dpkg-deb: building package 'coova-chilli' in '../coova-chilli_1.3.0_amd64.deb'.
...
ผลลัพธ์ที่ได้จากการรันคำสั่ง debuild จะมีไฟล์ต่างๆ ถูกสร้างขึ้นมา อยู่ในไดเรกทอรีข้างนอกหนึ่งขั้น (../) โดยจะมีไฟล์ .deb ซึ่งเป็นไฟล์แพ็คเกจ ที่สามารถนำไปไปติดตั้งบน Ubuntu ได้
cd ออกไปหนึ่งขั้น เพื่อดูรายชื่อไฟล์ที่ถูกสร้างขึ้น
alice@coova:~/coova-chilli-1.4$ cd ..
alice@coova:~$ ls -1
coova-chilli_1.3.0_amd64.build
coova-chilli_1.3.0_amd64.buildinfo
coova-chilli_1.3.0_amd64.changes
coova-chilli_1.3.0_amd64.deb
coova-chilli_1.3.0.dsc
coova-chilli_1.3.0.tar.gz
coova-chilli-1.4
coova-chilli-1.4.tar.gz
coova-chilli-dbgsym_1.3.0_amd64.ddeb
หมายเหตุ ตัวเลขเวอร์ชันในชื่อไฟล์แสดงเป็น 1.3 ซึ่งไม่ตรงกับเวอร์ชันของซอร์ซโค้ดที่เราใช้คอมไพล์ แต่ในที่นี้ขอไม่แก้ไขละกัน
ติดตั้งแพ็คเกจ CoovaChilli
ใช้คำสั่ง dpkg -i ติดตั้งไฟล์ .deb
alice@coova:~$ sudo dpkg -i coova-chilli_1.3.0_amd64.deb Selecting previously unselected package coova-chilli. (Reading database ... 79850 files and directories currently installed.) Preparing to unpack coova-chilli_1.3.0_amd64.deb ... Unpacking coova-chilli (1.3.0) ... Setting up coova-chilli (1.3.0) ... Chilli default off. Look at /etc/default/chilli Processing triggers for libc-bin (2.27-3ubuntu1) ... Processing triggers for systemd (237-3ubuntu10.15) ... Processing triggers for ureadahead (0.100.0-20) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
หลังการรันคำสั่ง dpkg -i แนะนำให้รัน apt install -f
alice@coova:~$ sudo apt install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
libssl-doc
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
ลบแพ็คเกจที่ไม่จำเป็นออก
alice@coova:~$ sudo apt autoremove -y
ถึงตอนนี้เราก็มี CoovaChilli ติดตั้งเรียบร้อยแล้ว
ลองใช้คำสั่ง chilli ระบุออปชัน –version เพื่อดูข้อมูลเวอร์ชัน
alice@coova:~$ chilli --version
chilli[23315]: (Re)processing options [/var/run/chilli.23315.cfg.bin]
chilli[23316]: running chilli_opt on /var/run/chilli.23315.cfg.bin
coova-chilli 1.4
แนะนำนะครับ