เนื่องจาก chillispot จะเป็น dhcp server เอง ดังนี้นจะต้องเช็คว่าในเครื่องไม่มี dhcp server รันอยู่ ถ้ามีอยู่ก็หยุดดังนี้
service dhcpd stopแก้ไขแฟ้ม /etc/sysctl.conf ให้มีค่าดังตัวอย่างนี้
บรรทัดที่ 7 เดิม net.ipv4.ip_forward = 0
แก้ไขเป็น net.ipv4.ip_forward = 1รันคำสั่ง echo "1" > /proc/sys/net/ipv4/ip_forward
เพื่อให้มีผลทันที ให้ forward packet ทำตัวเป็นเราเตอร์ได้- แก้ไขแฟ้ม /etc/sysconfig/network-scripts/ifcfg-eth1 ให้มีค่าดังตัวอย่างนี้
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
DHCP_HOSTNAME=kthakon.radius.com - แก้ไขแฟ้ม /etc/raddb/clients.conf ของโปรแกรม freeradius ให้มีค่าดังตัวอย่างนี้
client 10.114.0.0/24 {
...
บรรทัดที่ 35 เดิม secret = testing123
แก้ไขเป็น secret = testing
...
} - รีสตาร์ท radiusd ใหม่ ด้วยคำสั่ง
service radiusd restar - ดาวน์โหลดโปรแกรม chillispot และติดตั้งผ่าน browser ด้วยการคลิกที่ลิงค์นี้
ftp://ftp.psu.ac.th/pub/chillispot/chillispot-1.1.0.i386.rpm
หรือ
ดาวน์โหลดด้วยคำสั่ง wget ดังนี้
wget ftp://ftp.psu.ac.th/pub/chillispot/chillispot-1.1.0.i386.rpm
แล้วติดตั้ง package rpm ด้วยคำสั่งดังนี้
rpm -Uvh chillispot-1.1.0.i386.rpm - แฟ้มที่เกี่ยวข้อง
- /etc/chilli.conf
- /var/www/cgi-bin/hotspotlogin.cgi
- /var/www/html/welcome.html
- /etc/firewall.iptables
- แก้ไขแฟ้ม /etc/chilli.conf ให้มีค่าดังตัวอย่างนี้
[หัวข้อ TUN parameters]
บรรทัดที่ 38 เดิม net 192.168.182.0/24
แก้ไขเป็น net 10.114.0.0/24
[หัวข้อ Radius parameters]
บรรทัดที่ 113 เดิม radiusserver1 rad01.chillispot.org
แก้ไขเป็น radiusserver1 10.114.0.2
บรรทัดที่ 120 เดิม radiusserver2 rad02.chillispot.org
แก้ไขเป็น radiusserver2 10.114.0.2
บรรทัดที่ 139 เดิม #radiussecret testing123
แก้ไขเป็น radiussecret testing
(ตรงกับ radius secret ในแฟ้ม /etc/raddb/clients.conf ของ freeradius)
[หัวข้อ Universal access method (UAM) parameters]
บรรทัดที่ 237 เดิม #uamserver https://radius.chillispot.org/hotspotlogin
แก้ไขเป็น uamserver https://10.114.0.1/cgi-bin/hotspotlogin.cgi
บรรทัดที่ 244 เดิม #uamhomepage http://192.168.182.1/welcome.html
แก้ไขเป็น uamhomepage http://10.114.0.1/welcome.html
บรรทัดที่ 248 เดิม #uamsecret ht2eb8ej6s4et3rg1ulp
แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น uamsecret secretshilli
(หรือแก้ไขเป็นรหัสใหม่ แต่ต้องเหมือนกับในแฟ้ม hotspotlogin.cgi ในข้อถัดไป)
บรรทัดที่ 253 เดิม #uamlisten 192.168.182.1
แก้ไขเป็น uamlisten 10.114.0.1 - ให้คัดลอกแฟ้ม firewall.iptables ด้วยคำสั่ง
cp /usr/share/doc/chillispot-1.1.0/firewall.iptables /etc - ให้คัดลอกแฟ้ม hotspotlogin.cgi ด้วยคำสั่ง
cp /usr/share/doc/chillispot-1.1.0/hotspotlogin.cgi /var/www/cgi-bin/ - แก้ไขแฟ้ม /var/www/cgi-bin/hotspotlogin.cgi ให้มีค่าดังตัวอย่างนี้
บรรทัดที่ 27 เดิม #$uamsecret = "ht2eb8ej6s4et3rg1ulp";
แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น $uamsecret = "secretchilli";
บรรทัดที่ 31 เดิม #$userpassword=1;
แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น $userpassword=1; - สร้างแฟ้ม /var/www/html/welcome.html ให้มีค่าดังตัวอย่างนี
o Our Hotspot, Wireless Network.
save เป็น code html นะครับอย่าลืม !TESTING ONLY
Welcome to Our Hotspot, Wireless Network.
You are connected to an authentication and restricted network access point.
Click here to login
Enjoy.
Welcome to Our Hotspot, Wireless Network.
ถ้าต้องการรูป chillispot.png ให้ดาวน์โหลดได้จาก ที่นี่ แล้วคัดลอกแฟ้มนี้ไปไว้ใน /var/www/html ด้วยคำสั่งดังนี้
wget http://mamboeasy.psu.ac.th/~wiboon.w/images/stories/chillispot/chillispot.png
cp chillispot.png /var/www/html - ก่อนที่จะสตาร์ท chillispot ให้ไปทำการคอนฟิกแอคเซสพอยน์/ไวร์เลสเราเตอร์ ให้พร้อมใช้งาน โดยทำตามเอกสารของแต่ละรุ่น ความต้องการคือ ให้ทำ factory defaults แล้วกำหนดให้มันจะต้องรับ dhcp ip จาก chillispot และตัวมันเองจะต้องไม่ทำหน้าที่แจก ip รวมทั้งแก้ไข ESSID ตั้งชื่อใหม่ด้วย ตามเอกสารของพี่ wiboon
- สั่งให้ firewall.iptables ทำงานด้วยคำสั่งว่า
sh /etc/firewall.iptables - สั่งให้ chillispot ทำงานด้วยคำสั่งว่า
service chilli start
Starting chilli: [ OK ] - ดุ IP [root@kthakon src]# ifconfig
เ นื่องจาก chillispot ต้องใช้พอร์ท 1812 และ 1813 ในการหน้าที่เป็น proxy radius จึงต้องแก้ให้ radius server คอยรับ request ที่พอร์ทหมายเลข 1645 และ 1646 แทน
ให้แก้ไขแฟ้ม /etc/raddb/radiusd.conf
บรรทัดที่ 207 แก้ port = 0 เป็น port = 1645เมื่อแก้ไขเสร็จแล้วให้รีสตาร์ทใหม่ด้วยคำสั่ง
service radiusd restart
ลองทดสอบด้วยคำสั่งตัวอย่าง
radtest user1 wunca16 10.0.1.1:1645 0 mytestkey
จะมีการแจ้งว่า Access-Accept ถูกต้องตามต้องการแก้ไขแฟ้ม /etc/chilli.conf ให้มีค่าดังตัวอย่างนี้
[หัวข้อ Radius parameters]
บรรทัดที่ 127 เดิม #radiusauthport 1812
แก้ไขเป็น radiusauthport 1645
บรรทัดที่ 134 เดิม #radiusacctport 1813
แก้ไขเป็น radiusacctport 1646
บรรทัดที่ 139 ตรวจสอบว่าเป็น radiussecret mytestkey
(ตรงกับ radius secret ในแฟ้ม /etc/raddb/clients.conf ของ freeradius)
[หัวข้อ Radius proxy parameters]
บรรทัดที่ 174 เดิม #proxylisten 10.0.0.1
แก้ไขเป็น proxylisten 10.114.0.1
บรรทัดที่ 180 เดิม #proxyport 1645
แก้ไขเป็น proxyport 1812
บรรทัดที่ 185 เดิม #proxyclient 10.114.0.0/24
แก้ไขเป็น proxyclient 10.0.1.0/24
บรรทัดที่ 191 เดิม #proxysecret testing123
แก้ไขเป็น proxysecret testingแก้ไขแฟ้ม /etc/firewall.iptables
ไปที่บรรทัดที่ 33 จะมีบรรทัดเดิมคือ
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
เพิ่มใต้บรรทัดที่ 33 ดังตัวอย่างนี้
$IPTABLES -A INPUT -i tun0 -p udp -m udp --dport 1812 -j ACCEPT
และสั่งรันไฟร์วอลล์ใหม่
sh /etc/firewall.iptablesสั่งให้ chillispot อ่านแฟ้มคอนฟิกใหม่ด้วยคำสั่งว่า
service chilli reload- แก้ไข file /etc/firewall.iptables ดังนี้้
- #!/bin/sh
#
# Firewall script for ChilliSpot
# A Wireless LAN Access Point Controller
#
# Uses $EXTIF (eth0) as the external interface (Internet or intranet) and
# $INTIF (eth1) as the internal interface (access points).
#
#
# SUMMARY
# * All connections originating from chilli are allowed.
# * Only ssh is allowed in on external interface.
# * Nothing is allowed in on internal interface.
# * Forwarding is allowed to and from the external interface, but disallowed
# to and from the internal interface.
# * NAT is enabled on the external interface.
IPTABLES="/sbin/iptables"
EXTIF="ppp0"
INTIF="eth1"
#Flush all rules
$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -F -t mangle
#Set default behaviour
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
#Allow related and established on all interfaces (input)
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Allow releated, established and ssh on $EXTIF. Reject everything else.
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j REJECT
#Allow related and established from $INTIF. Drop everything else.
$IPTABLES -A INPUT -i $INTIF -j DROP
#Allow http and https on other interfaces (input).
#This is only needed if authentication server is on same server as chilli
$IPTABLES -A INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp --dport 443 --syn -j ACCEPT
$IPTABLES -A INPUT -i tun0 -p udp -m udp --dport 1812 -j ACCEPT
#Allow 3990 on other interfaces (input).
$IPTABLES -A INPUT -p tcp -m tcp --dport 3990 --syn -j ACCEPT
#Allow ICMP echo on other interfaces (input).
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#Allow everything on loopback interface.
$IPTABLES -A INPUT -i lo -j ACCEPT
# Drop everything to and from $INTIF (forward)
# This means that access points can only be managed from ChilliSpot
$IPTABLES -A FORWARD -i $INTIF -j DROP
$IPTABLES -A FORWARD -o $INTIF -j DROP
#Enable NAT on output device
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
$IPTABLES -t nat -A PREROUTING -s 10.114.0.0/24 -p udp --dport 53 -j DNAT --to 10.114.0.1
eth0 Link encap:Ethernet HWaddr 00:0D:61:E1:FB:28
inet addr:10.114.0.2 Bcast:10.114.255.255 Mask:255.255.0.0
inet6 addr: fe80::20d:61ff:fee1:fb28/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12804 errors:0 dropped:0 overruns:0 frame:0
TX packets:3548 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4090246 (3.9 MiB) TX bytes:459774 (448.9 KiB)
Interrupt:11 Base address:0xe000
eth1 Link encap:Ethernet HWaddr 00:04:E2:D3:23:01
inet6 addr: fe80::204:e2ff:fed3:2301/64 Scope:Link
UP BROADCAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:5 dropped:0 overruns:0 carrier:10
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x4000
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:3223 errors:0 dropped:0 overruns:0 frame:0
TX packets:3223 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3202251 (3.0 MiB) TX bytes:3202251 (3.0 MiB)
tun0 Link encap:UNSPEC HWaddr E9-FE-3B-13-18-00-F4-3F-00-00-00-00-00-00-00-00
inet addr:10.114.0.1 P-t-P:10.114.0.1 Mask:255.255.255.0
UP POINTOPOINT RUNNING MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 b) TX bytes:517 (517.0 b)
[root@kthakon src]#