วันจันทร์ที่ 7 กุมภาพันธ์ พ.ศ. 2554

การติดตั้ง chillispot server สำหรับ WIFI แบบ web login (24-01-2550)

การติดตั้ง chillispot server สำหรับ WIFI แบบ web login (24-01-2550) 

Contributed by วิบูลย์   
Monday, 15 January 2007
วิบูลย์ วราสิทธิชัย wiboon.w (at) psu.ac.th 

เวบไซต์ที่เกี่ยวข้อง http://www.opensource.psu.ac.th
แหล่งข้อมูลต้นฉบับ chillispot คือ http://www.chillispot.org

ประวัติการปรับปรุง
ครั้งที่ 1   16-01-2550   โดย: วิบูลย์ วราสิทธิชัย
ครั้งที่ 2   23-01-2550   โดย: วิบูลย์ วราสิทธิชัย
ครั้งที่ 3   24-01-2550   โดย: วิบูลย์ วราสิทธิชัย

เป็นคำแนะนำติดตั้งจัดการปรับแต่ง Linux server เป็น Wireless LAN Access Point Controller ด้วยโปรแกรม chillispot แบบ web login

ข้อมูลเครือข่าย

  • eth0 คือ แลนการ์ดใบที่ 1 ต่อกับอินเทอร์เน็ต ได้รับแจก ip จาก dhcp server ในอินเทอร์เน็ต
  • eth1 คือ แลนการ์ดใบที่ 2 ต่อกับแอคเซสพอยต์ ได้รับแจก ip จาก chillispot server
  • แอคเซสพอยต์ได้รับแจก ip จาก chillispot server
  • ไคลเอนต์ที่มาต่อกับแอคเซสพอยต์ได้รับแจก ip จาก chillispot server ส่งต่อโดยแอคเซสพอยต์
  • chillispot server 1 เครื่อง ติดตั้งโปรแกรมดังนี้
    - fedora core 6
    - freeradius 1.1 (rpm)
    - apache 2.2.3 (rpm)
    - chillispot 1.1.0 (rpm)

สิ่งที่จะต้องทำก่อน

ก. การติดตั้ง Linux Fedora Core 6
  1. ในขั้นตอนการติดตั้งช่วงแรก
    ให้เลือก Package selection เป็น Software Development
     
  2. ในขั้นตอนการติดตั้งหลังจากรีบูตเข้าสู่การคอนฟิกระบบ
    ให้ปิด SeLinux โดยเปลี่ยนจาก enforcing เป็น disabled
    ให้สร้าง user account ไว้ใช้งาน ตั้งชื่อเป็น chilli มี password เป็น abcd1234
ข. การปรับแต่งระบบลินุกซ์หลังการติดตั้ง
  1. ยกเลิการตั้งค่า update อัตโนมัติ ด้วยคำสั่งดังนี้คือ
    service  yum-updatesd  stop
    chkconfig  yum-updatesd  off
     
  2. ตั้งเวลาให้ตรงกับสากลด้วยคำสั่ง /usr/sbin/ntpdate -u <ชื่อเซิร์ฟเวอร์>
    โดยที่
    time.psu.ac.th เป็น ntp server ภายใน ม.อ. ใช้คำสั่ง
    /usr/sbin/ntpdate -u time.psu.ac.th

    pool.ntp.org เป็น ntp server ที่เป็นสากลโดยตรง ใช้คำสั่ง
    /usr/sbin/ntpdate -u pool.ntp.org

    ต้องการให้ทุกครั้งที่บูทเครื่องมีการตั้งเวลาใหม่ ให้แก้ไขแฟ้ม /etc/rc.local
    เพิ่มบรรทัดข้อความว่า /usr/sbin/ntpdate -u time.psu.ac.th

    ตั้งเวลาให้ตรงกับสากลทุกวัน ให้สร้างแฟ้มข้อมูลชื่อ /etc/cron.daily/ntp.cron มีข้อมูลว่า
    #!/bin/sh
    /usr/sbin/ntpdate -u time.psu.ac.th
     
  3. หากต้องการให้แสดงภาษาไทยที่จัดระดับถูกต้อง
    ให้ติดตั้งฟอนต์ไทยเพิ่ม ดาวน์โหลดและติดตั้งได้จาก
    (LAB)
    ftp://172.16.16.16/pub/chillispot/thai-ui-ttf-1.0-2.noarch.rpm
    (PSU)
    ftp://ftp.psu.ac.th/pub/thaifonts/thai-ui-ttf-1.0-2.noarch.rpm
    หลังติดตั้งแล้ว ให้ปิด browser ทิ้งให้หมด
    แล้วเปิดใหม่เพื่อดูผลงานได้เลย
     
  4. แก้ไข locale เพื่อให้ระบบแสดงภาษาตามต้องการ
    โดยการแก้ไขแฟ้ม /etc/sysconfig/i18n
    ต้องการภาษาอังกฤษแบบ ascii แทน default ที่เป็น UTF8
    จากบรรทัดข้อความเดิม LANG="en_US.UTF-8"
    เป็นข้อความว่า LANG="en_US"
ค. การ update packages ด้วยโปรแกรม Yum สำหรับมหาวิทยาลัยสงขลานครินทร์
  1. แก้ไขให้ชี้ update server มาอยู่ที่ repository server ของเราด้วยวิธีการคือ
    ลบแฟ้มใน directory /etc/yum.repos.d  ทิ้งทั้งหมด
    เพราะต้นฉบับ yum ที่ติดตั้งมีข้อมูลระบุให้ชี้ไปที่ server ต่างประเทศ ด้วยคำสั่ง
    rm -f  /etc/yum.repos.d/*

    แล้วสร้างแฟ้ม 3 แฟ้มขึ้นมาใหม่ โดยระบุ repository server เป็น ftp.psu.ac.th
    สร้างแฟ้ม /etc/yum.repos.d/psu-fedora.repo ให้มีข้อมูลดังนี้
    [base]
    name=Fedora Core $releasever - $basearch - Base
    baseurl=ftp://ftp.psu.ac.th/pub/yum/fedora/core/6/base
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

    สร้างแฟ้ม /etc/yum.repos.d/psu-fedora-extras.repo ให้มีข้อมูลดังนี้
    [extras]
    name=Fedora Extras $releasever - $basearch
    baseurl=ftp://ftp.psu.ac.th/pub/yum/fedora/core/6/extras
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
    gpgcheck=1

    สร้างแฟ้ม /etc/yum.repos.d/psu-fedora-updates.repo ให้มีข้อมูลดังนี้
    [updates]
    name=Fedora Updates $releasever - $basearch
    baseurl=ftp://ftp.psu.ac.th/pub/yum/fedora/updates/6/i386
    enabled=1
    gpgcheck=0

    สั่งปรับปรุงรายชื่อ package ให้ทันสมัยตามแหล่งข้อมูลต้นทาง
    yum check-update

    สั่งปรับปรุง/ติดตั้ง package ให้ทันสมัย
    yum update
ง. การติดตั้ง radius server ด้วยโปรแกรม freeradius
  1. ติดตั้งโปรแกรม freeradius ด้วยคำสั่ง
    yum install freeradius
     
  2. แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
    chkconfig radiusd on
     
  3. สั่งให้ทำงานด้วยคำสั่งว่า
    service  radiusd  start
     
  4. แฟ้มที่เกี่ยวข้อง
    /var/log/radius/radius.log
    /etc/raddb/radiusd.conf
    /etc/raddb/clients.conf
     
  5. เมื่อให้ radiusd ทำงานแล้ว เริ่มขั้นตอนทดสอบระบบโดยป้อนตัวอย่างคำสั่งดังนี้
    radtest chilli abcd1234 localhost 0 testing123

    จะมีการแจ้งว่า Access-Reject
    เป็นสาเหตุเนื่องจากไม่มีสิทธิในการอ่านแฟ้ม /etc/shadow ของระบบ
     
  6. แก้ไขให้อ่านแฟ้ม /etc/shadow ได้
    โดยแก้ไขแฟ้ม /etc/raddb/radiusd.conf

    ทำการ comment ยกเลิกบรรทัดข้อความจากเดิม
    user = radiusd
    group = radiusd
    ให้เป็น
    #user = radiusd
    #group = radiusd

    เสร็จแล้วให้ restart ระบบ radiusd ใหม่ด้วยคำสั่ง service radiusd restart
     
  7. ต่อไปลองป้อนตัวอย่างคำสั่งเดิมเพื่อทดสอบดังนี้
    radtest chilli abcd1234 localhost 0 testing123

    จะมีการแจ้งว่า Access-Accept ถูกต้องตามต้องการ
จ. การติดตั้ง web server ด้วยโปรแกรม Apache (6-10-2549)
  1. ติดตั้งโปรแกรม httpd พร้อมคู่มือ ด้วยคำสั่ง
    yum install httpd
    yum install httpd-manual
    yum install mod_ssl
     
  2. แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
    chkconfig httpd on
     
  3. สั่งให้ทำงานด้วยคำสั่งว่า
    service httpd start
     
  4. ปรับแต่งระบบทำได้โดยการแก้ไขแฟ้ม /etc/httpd/conf/httpd.conf

    [การทำให้รองรับระบบภาษาไทย]
    เดิมมีบรรทัดว่า # DefaultLanguage nl
    ให้เพิ่มบรรทัดใหม่ข้อความว่า DefaultLanguage th
    (ห้ามมีเครื่องหมาย # อยู่ข้างหน้า)

    เดิมมีบรรทัดว่า AddLanguage ... ซึ่งเป็นภาษาอื่นๆ
    ให้เพิ่มบรรทัดใหม่ข้อความว่า AddLanguage th .th

    เดิมมีบรรทัดว่า LanguagePriority en ca cs da de ....
    ให้เพิ่มข้อความอักษร th แทรกเข้าไป
    กลายเป็น LanguagePriority th en ca ca da de ....

    เดิมมีบรรทัดว่า AddDefaultCharset UTF-8
    ให้เพิ่มเครื่องหมาย # นำหน้าบรรทัดกลายเป็นว่า #AddDefaultCharset UTF-8

    ให้เพิ่มบรรทัดใหม่ข้อความว่า AddCharset TIS-620       .tis-620  .th

    [การทำให้ www server แสดงผลรายการชื่อแฟ้มใน directory]
    ให้ลบคำว่า Indexes ออกจากพื้นที่
    <Directory "/var/www/html">
    ....
    </Directory>
    จากตัวอย่างข้อความเดิมคือ Options Indexes FollowSymLinks
    แก้ไขใหม่เป็น    Options FollowSymLinks
     
  5. ให้ระบบอ่านค่าที่ปรับใหม่ได้ด้วยคำสั่ง
    service httpd restart

ขั้นตอนติดตั้ง Chillispot server สำหรับ WIFI แบบ web login

  1. เนื่องจาก chillispot จะเป็น dhcp server เอง ดังนี้นจะต้องเช็คว่าในเครื่องไม่มี dhcp server รันอยู่ ถ้ามีอยู่ก็หยุดดังนี้
    service dhcpd stop
     
  2. แก้ไขแฟ้ม /etc/sysctl.conf  ให้มีค่าดังตัวอย่างนี้
    บรรทัดที่ 7 เดิม net.ipv4.ip_forward = 0
    แก้ไขเป็น net.ipv4.ip_forward = 1
  3. รันคำสั่ง echo "1" > /proc/sys/net/ipv4/ip_forward
    เพื่อให้มีผลทันที ให้ forward packet ทำตัวเป็นเราเตอร์ได้
     
  4. แก้ไขแฟ้ม /etc/sysconfig/network-scripts/ifcfg-eth1 ให้มีค่าดังตัวอย่างนี้
    DEVICE=eth1
    ONBOOT=yes
    BOOTPROTO=none
     
  5. แก้ไขแฟ้ม /etc/raddb/clients.conf  ของโปรแกรม freeradius ให้มีค่าดังตัวอย่างนี้
    client 127.0.0.1 {
    ...
    บรรทัดที่ 35 เดิม secret = testing123
    แก้ไขเป็น secret = mytestkey
    ...
    }
     
  6. รีสตาร์ท radiusd ใหม่ ด้วยคำสั่ง
    service radiusd restart
  7. สร้าง unix user account สำหรับทดสอบ หากยังไม่มี ด้วยคำสั่งดังนี้
    adduser chilli
    เปลี่ยนรหัสผ่านด้วยคำสั่งดังนี้
    passwd chilli
    ป้อนรหัสผ่านง่าย ๆ เป็น abcd1234
  8. ทดสอบ radius อีกครั้งด้วย secret อันใหม่ ดังนี้
    radtest chilli abcd1234 localhost 0 mytestkey
      
  9. ดาวน์โหลดโปรแกรม chillispot ด้วยคำสั่ง wget ดังนี้
    (LAB)
    wget ftp://172.16.16.16/pub/chillispot/chillispot-1.1.0.i386.rpm
    (PSU)
    wget ftp://ftp.psu.ac.th/pub/chillispot/chillispot-1.1.0.i386.rpm

    แล้วติดตั้ง package rpm ด้วยคำสั่งดังนี้
    rpm -Uvh chillispot-1.1.0.i386.rpm
     
  10. แฟ้มที่เกี่ยวข้อง
    • /etc/chilli.conf
    • /var/www/cgi-bin/hotspotlogin.cgi
    • /var/www/html/welcome.html
    • /etc/firewall.iptables
       
  11. แก้ไขแฟ้ม /etc/chilli.conf ให้มีค่าดังตัวอย่างนี้
    [หัวข้อ TUN parameters]
    บรรทัดที่ 38 เดิม net 192.168.182.0/24
    แก้ไขเป็น net 10.0.1.0/24

    [หัวข้อ Radius parameters]
    บรรทัดที่ 113 เดิม radiusserver1 rad01.chillispot.org
    แก้ไขเป็น radiusserver1 127.0.0.1

    บรรทัดที่ 120 เดิม radiusserver2 rad02.chillispot.org
    แก้ไขเป็น radiusserver2 127.0.0.1

    บรรทัดที่ 139 เดิม #radiussecret testing123
    แก้ไขเป็น radiussecret mytestkey
    (ตรงกับ radius secret ในแฟ้ม /etc/raddb/clients.conf ของ freeradius)

    [หัวข้อ Universal access method (UAM) parameters]
    บรรทัดที่ 237 เดิม #uamserver https://radius.chillispot.org/hotspotlogin
    แก้ไขเป็น uamserver https://10.0.1.1/cgi-bin/hotspotlogin.cgi

    บรรทัดที่ 244 เดิม #uamhomepage http://192.168.182.1/welcome.html
    แก้ไขเป็น uamhomepage http://10.0.1.1/welcome.html

    บรรทัดที่ 248 เดิม #uamsecret ht2eb8ej6s4et3rg1ulp
    แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น uamsecret ht2eb8ej6s4et3rg1ulp
    (หรือแก้ไขเป็นรหัสใหม่ แต่ต้องเหมือนกับในแฟ้ม hotspotlogin.cgi ในข้อถัดไป)

    บรรทัดที่ 253 เดิม #uamlisten 192.168.182.1
    แก้ไขเป็น uamlisten 10.0.1.1
     
  12. ให้คัดลอกแฟ้ม firewall.iptables ด้วยคำสั่ง
    cp /usr/share/doc/chillispot-1.1.0/firewall.iptables /etc
     
  13. ให้คัดลอกแฟ้ม hotspotlogin.cgi ด้วยคำสั่ง
    cp /usr/share/doc/chillispot-1.1.0/hotspotlogin.cgi /var/www/cgi-bin/
     
  14. แก้ไขแฟ้ม /var/www/cgi-bin/hotspotlogin.cgi ให้มีค่าดังตัวอย่างนี้
    บรรทัดที่ 27 เดิม #$uamsecret = "ht2eb8ej6s4et3rg1ulp";
    แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น $uamsecret = "ht2eb8ej6s4et3rg1ulp";

    บรรทัดที่ 31 เดิม #$userpassword=1;
    แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น $userpassword=1;
     
  15. สร้างแฟ้ม /var/www/html/welcome.html ให้มีค่าดังตัวอย่างนี้
    <html>
    <head>
    <title>Welcome to Our Hotspot, Wireless Network.</title>
    </head>
    <body>
    <center>
    <H1><font color="red">TESTING ONLY</font></H1>
    <img src="chillispot.png">
    <H3><font color="blue">Welcome to Our Hotspot, Wireless Network.</font></H3>
    <p>You are connected to an authentication and restricted network access point.
    <H3><a href="http://10.0.1.1:3990/prelogin">Click here to login</a></H3>
    <p>
    <p>Enjoy.
    </center>
    </body>
    </html>

    ถ้าต้องการรูป chillispot.png ให้ดาวน์โหลดได้ที่นี่
    (LAB)
    wget http://172.16.16.16/pub/chillispot/chillispot.png
    (PSU)
    wget http://mamboeasy.psu.ac.th/~wiboon.w/images/stories/chillispot/chillispot.png

    แล้วคัดลอกแฟ้มนี้ไปไว้ใน /var/www/html ด้วยคำสั่งดังนี้
    cp chillispot.png /var/www/html
     
  16. ก่อนที่จะสตาร์ท chillispot ให้ไปทำการคอนฟิกแอคเซสพอยน์/ไวร์เลสเราเตอร์ ให้พร้อมใช้งาน โดยทำตามเอกสารของแต่ละรุ่น ความต้องการคือ ให้ทำ factory defaults แล้วกำหนดให้มันจะต้องรับ dhcp ip จาก chillispot และตัวมันเองจะต้องไม่ทำหน้าที่แจก ip รวมทั้งแก้ไข ESSID ตั้งชื่อใหม่ด้วย
  17. สั่งให้ firewall.iptables ทำงานด้วยคำสั่งว่า
    sh /etc/firewall.iptables
  18. สั่งให้ chillispot ทำงานด้วยคำสั่งว่า
    service  chilli  start
    Starting chilli:                                     [  OK  ]
  19. ตรวจสอบการทำงานของ chiilispot ว่าสร้างอินเทอร์เฟส tun0 พร้อมใช้งานและมีเลข IP เป็น 10.0.1.1 โดยที่อินเทอร์เฟส eth1 จะไม่มี IP ใด ๆ ส่วน eth0 ก็เป็นเลข IP ที่รับจากเน็ตที่เซิร์ฟเวอร์นี้ต่ออยู่เหมือนเดิม ดังตัวอย่าง
    รันคำสั่ง ifconfig จะได้ผลลัพธ์ดังนี้
    eth0      Link encap:Ethernet  HWaddr 00:04:E2:24:DE:32
              inet addr:192.168.2.52  Bcast:192.168.2.255  Mask:255.255.255.0
              inet6 addr: fe80::204:e2ff:fe24:de32/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:847253 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:89766 dropped:0 overruns:0 carrier:169976
              collisions:0 txqueuelen:1000
              RX bytes:495145717 (472.2 MiB)  TX bytes:0 (0.0 b)
              Interrupt:11 Base address:0x8000
    eth1      Link encap:Ethernet  HWaddr 00:50:04:B8:6A:4A
              inet6 addr: fe80::250:4ff:feb8:6a4a/64 Scope:Link
              UP BROADCAST RUNNING  MTU:1500  Metric:1
              RX packets:381 errors:0 dropped:0 overruns:0 frame:0
              TX packets:381 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:48850 (47.7 KiB)  TX bytes:184386 (180.0 KiB)
              Interrupt:10 Base address:0xe000
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:95 errors:0 dropped:0 overruns:0 frame:0
              TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:23879 (23.3 KiB)  TX bytes:23879 (23.3 KiB)
    tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
              inet addr:10.0.1.1  P-t-P:10.0.1.1  Mask:255.255.255.0
              UP POINTOPOINT RUNNING  MTU:1500  Metric:1
              RX packets:319 errors:0 dropped:0 overruns:0 frame:0
              TX packets:369 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:500
              RX bytes:33964 (33.1 KiB)  TX bytes:175949 (171.8 KiB)
  20. ให้จดเลข Mac address ของโน้ตบุ๊คที่จะนำมาทดสอบการเชื่อมต่อกับ chillispot
    และรันคำสั่งตรวจสอบว่าโน้ตบุ๊คได้ IP Address จาก chillispot ดังนี้
    tail -f /var/log/messages
    จะได้ผลลัพธ์แสดงคล้าย ๆ ตังอย่างข้างล่างนี้
    Jan 24 11:12:38 localhost chillispot[12822]: ChilliSpot 1.1.0. Copyright 2002-2005 Mondru AB. Licensed under GPL. See http://www.chillispot.org for credits.
    Jan 24 11:12:38 localhost kernel: ADDRCONF(NETDEV_CHANGE): tun0: link becomes ready
    Jan 24 11:12:38 localhost kernel: eth1:  setting full-duplex.
    Jan 24 11:12:47 localhost chillispot[12822]: chilli.c: 3509: New DHCP request from MAC=00-0D-ED-56-13-96
    Jan 24 11:12:47 localhost chillispot[12822]: chilli.c: 3479: Client MAC=00-0D-ED-56-13-96 assigned IP 10.0.1.2
    Jan 24 11:14:42 localhost chillispot[12822]: chilli.c: 3509: New DHCP request from MAC=00-13-02-69-41-FA
    Jan 24 11:14:42 localhost chillispot[12822]: chilli.c: 3479: Client MAC=00-13-02-69-41-FA assigned IP 10.0.1.3
    Jan 24 11:15:12 localhost chillispot[12822]: chilli.c: 3759: Successful UAM login from username=chilli IP=10.0.1.3
    โดยที่ 10.0.1.2 จะเป็น IP ของแอคเซสพอยน์ และ 10.0.1.3 จะเป็น IP ของโน้ตบุ๊คตัวแรกที่เชื่อมต่อ
  21. เริ่มขั้นตอนทดสอบระบบที่เครื่องโน้ตบุคดังนี้
    เริ่มทำการคอนเนค WIFI
    คลิกที่นี่เพื่อดูรูป

    ที่บราวเซอร์ให้ยกเลิกการเซ็ตพร็อกซี่เซิร์ฟเวอร์

    ที่บราวเซอร์ที่มีการเซ็ตหน้าโฮมเพจไว้ จะถูก redirect ไปยัง welcome.html ทันทีเมื่อเรียกโปรแกรม คลิกที่นี่เพื่อดูรูป

    คลิกที่ข้อความ Click here to login แล้วจะมีหน้าต่างเพื่อให้ใส่ username และ password
    คลิกที่นี่เพื่อดูรูป

    เมื่อ login เข้าได้สำเร็จจะมีหน้าต่าง logged in พร้อมเวลาเริ่มนับ และเอาไว้ใช้สำหรับ logout
    คลิกที่นี่เพื่อดูรูป
  22. แก้ไขแฟ้ม /etc/rc.local เพื่อให้ firewall.iptables และ chilli มีผลทำงานด้วยเมื่อรีบูตเครื่องใหม่
    เพิ่มบรรทัด
    sh /etc/firewall.iptables
    service chilli start
     
  23. รีบูตเครื่องเซิร์ฟเวอร์ 1 ครั้ง
  24. ถึงขั้นตอนนี้เป็นอันเปิดใช้ระบบ chillispot แบบ web login ได้แล้ว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น