Upload
arthid-naraballobh
View
156
Download
23
Embed Size (px)
Citation preview
Chillispot
Add Tun0 ,Tun1 ,Tun2 ,Tun…x
บน
ทุกตระกลู OS Server ท้ัง Unix และ Linux
*** รูปแบบ
เลือกการ์ดแลนที่เราต้องการใช้งานเป็น PPPoE ที่เอาไว้ส าหรับท า Mutiwan LoadBalance
ในตัวอย่าง จาก Server ของผม
eth0 ------| รับเน็ตมาจาก DHCP ADSL Router WAN 1 = 192.168.1.254
||------- > Multiwan Loadbalance
eth1 ------| รับเน็ตมาจาก DHCP Router WAN 2 = 192.168.2.254
eth2 ----- Squid proxy ----- Chillispot : TUN0 : IP Gateway = 10.0.0.1
eth3 ----- Squid proxy ----- Chillispot : TUN1 : IP Gateway = 11.0.0.1
****** ภาคต่อจาก คู่มือ การติดตั้ง PHPwifi 1.0
ในข้ันตอนนี้จะขอข้ามมาในข้ันตอนการติดตั้ง การเพิ่ม Tun1 เข้าไปเลยน่ะครับ
จากเดิมเราได้ติดตั้ง Chillispot ไปแล้ว คือ tun0
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.0.1 P-t-P:10.0.0.1 Mask:255.255.0.0
UP POINTOPOINT RUNNING MTU:1500 Metric:1
RX packets:4636 errors:0 dropped:0 overruns:0 frame:0
TX packets:6268 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:847017 (827.1 KiB) TX bytes:5733912 (5.4 MiB)
คร่าวน้ีเราจะมาท าการเพ่ิม tun1 ให้ Chillispot กันต่อเลย
*หมายเหตุเพ่ิมเติม
ถ้าท่านใดต้องการติดตั้งมากกว่า tun1 ข้ึนไป ..ก็แค่วนกลับมาท าตามข้ันการเพิ่มแบบเดิมเท่านั้น
copy ,config ,run attr เหมือนกันทุกประการ
ต้องการเพ่ิม tun1 ในการ์ดแลน eth3
Lan card ท่ีจะท าก็ต้องท า none เหมือนเดิม
ตัวอย่าง
ของการ์ดแลน eth3 บน CentOS 5 up
# nano /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
BOOTPROTO=none
HWADDR=00:16:6f:9c:7b:45
ONBOOT=yes
ตัวอย่าง
ของการ์ดแลน eth3 บน Ubuntu 8.04 Server
# nano /etc/network/interfaces
auto eth3
ตัวอย่าง
ของการ์ดแลน rl3 (device lan card ตัวอย่าง) บน FreeBSD
# vi /etc/rc.conf
ifconfig_rl3=""
เร่ิมการเพ่ิม tun1
ท าการ copy ไฟล์ /etc/chilli.conf เพ่ือน ามาเป็นไฟล์ต้นแบบท่ีจะท า tun1
# cp /etc/chilli.conf /etc/chilliTUN1.conf
ในขั้นตอนนี้เราได้ copy ไฟล์ chilli.conf พร้อมกับเปลี่ยนช่ือเป็นอะไรก็ได้ที่ดูครองจองกัน
ในตัวอย่างตั้งช่ือเป็น chiiliTUN1.conf (ตั้งช่ือไรก็ได้)
จากนั้นก็ไปท าการแก้ไขค่า config ในไฟล์ /etc/chilliTUN1.conf
*ในตัวอย่างนี้ได้ท าการติดตั้ง squid proxy server ใน PHPwifi 1.0 ไปแล้วน่ะครับ
# nano +38 /etc/chilliTUN1.conf
แก้จากเดิม
net 10.0.0.0/24
แก้เป็น คลาส ใหม่
(เพราะการเพ่ิม tun นั้น ไอพีของการ์ดแลนที่จะท าต้องเป็นคนละ คลาส กัน ..ไม่งั้น ~error~)
net 11.0.0.0/24
# nano +45 /etc/chilliTUN1.conf
แก้จากเดิม
dynip 10.0.0.11/24
แก้เป็น คลาส ใหม่
dynip 11.0.0.11/24
# nano +59 /etc/chilliTUN1.conf
แก้จากเดิม
dns1 192.168.1.1
dns2 192.168.1.254
แก้เป็น โดยการใส่เครื่องหมาย # แทน ให้ chillispot ไปอ่านค่า dns จาก /etc/resolv.conf เอง
#dns1 192.168.1.1
#dns2 192.168.1.254
# nano +176 /etc/chilliTUN1.conf
เป็น การ์ดแลน ท่ีต้องการท า tun1 เพ่ิม (ในตัวอย่างเป็น device ของทาง Linux)
แก้เป็น
dhcpif eth3
# nano +196 /etc/chilliTUN1.conf
แก้จากเดิม
uamserver http://10.0.0.1/phpwifi/hotspotlogin.php
แก้เป็น คลาส ใหม่ให้การ์ดแลน eth3 ส าหรับหน้า ล็อกอิน
uamserver http://11.0.0.1/phpwifi/hotspotlogin.php
# nano +212 /etc/chilliTUN1.conf
แก้จากเดิม
uamlisten 10.0.0.1
แก้เป็น คลาส ใหม่
uamlisten 11.0.0.1
# nano +218 /etc/chilliTUN1.conf
แก้จากเดิม
# TAG: kick user online # Example
# /bin/echo User-Name=love| /usr/bin/radclient -x 127.0.0.1:3779 disconnect testing123
coaport 3779
แก้เป็น port ใหม่ (ในส่วนนี้ พอร์ต การ kill user ไม่ให้ซ้ ากัน ไม่ง้ัน ~error~)
# TAG: kick user online # Example
# /bin/echo User-Name=love| /usr/bin/radclient -x 127.0.0.1:3779 disconnect testing123
coaport 3780
*เพิ่มเติม
ถ้าต้องการหา port ท่ีไม่ได้ใช้งานก็ไป cat ไฟล์ใน /etc/services ดูได้เลยครับ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ส าหรับท่านใดท่ีได้ติดตั้ง squid proxy ไปแล้ว ..ท าการปรับแต่ง chillispot ไปแล้ว
ก็ไปท าการ config เปลี่ยน คลาส ได้เลย
# nano +174 /etc/chilliTUN1.conf
แก้เป็น
# TAG: proxylisten
# IP address to listen to
# Normally you do not need to uncomment this tag.
proxylisten 11.0.0.1
และเล่ือนลงมาอีกใกล้ๆกัน
# TAG: proxyclient
# Client(s) from which we accept radius requests
# Normally you do not need to uncomment this tag.
proxyclient 11.0.0.1/24
ข้ันตอนต่อไปน้ี ห้าม ~ERROR~ ใดๆ และ tun1 จะต้องปรากฏออกมา ..ถ้าไม่ท้ังสองก็เร่ิมใหม่
# /usr/sbin/chilli -c /etc/chilliTUN1.conf
จากนั้นก็ ifconfig ดูการเพ่ิม interface device on Chillispot -> TUN1
จากนั้นลองใช้ค าส่ัง
# /etc/init.d/chilli restart ….
….
# ifconfig
รับรอง Tun1 จะหายไป
เพราะในชุดค าส่ัง service chillispot ไม่มีการส่ัง /usr/sbin/chilli -c /etc/chilliTUN1.conf ในตัว service chilli ของมันเอง ถ้า server reboot หรือ restart service chilli ทุกครั้ง tun1 ก็จะมีปัญหาทุกครั้ง คือหายไปนั้นเองครับ ส่วนวิธีแก้ก็ไม่ยากครับ คือ ไปท าการใส่ชุดค าสั่ง ในตัว service ของ chillispot โดยตรงเลย
# nano /etc/init.d/chilli
เล่ือนลงไปแถวๆ บริเวณท้ายไฟล์ เพ่ือท าการแทรกค าส่ังเข้าไปในบรรทัดโค้ดส าคัญ
*แทรกเข้าไปตามแถบสีเขียวได้เลย # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload)
stop start /usr/sbin/chilli -c /etc/chilliTUN1.conf RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/chilli ] ; then
stop start RETVAL=$? fi ;; status) status chilli
RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL
จากนั้นลองใช้ค าส่ัง restart service ของ chillispot ดู
( รับรอง tun1 มาแน่นอน ทุกๆครั้ง แม้จะ restart หรือ stop ,start : service )
# /etc/init.d/chilli restart
~ยังไม่หมด~
~จะต้องไปท าการเพ่ิม การเข้า-ออก กับ firewall ทุกคร้ัง
ในตัวอย่าง ~ขอยกแบบเป็นของทาง CentOS
Firewall ตัวอย่างนี้ได้ติดตั้ง squid proxy server ท างานที่ พอร์ต 3128 แล้วน่ะครับ
ถ้ายังไม่ได้ติดตั้ง squid proxy server ก็เปลี่ยนเป็นตัวเลข 80 แทนน่ะครับ ## Squid Proxy Allow transparent proxy $IPTABLES -A INPUT -p tcp -m tcp --dport 3128 --syn -j ACCEPT ## Squid Proxy Allow transparent proxy for Tun1 $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp --dport 3128 --syn -j DROP $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 11.0.0.0/24 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 11.0.0.0/16 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 11.0.0.0/8 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 127.0.0.0/8 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
*จากนั้นท่านก็ท าการ restart service ของ firrwall ของแต่ล่ะ OS Server ของท่านได้เลยครับ
# sh /etc/firewall.iptables
~อย่าลืมถ้าได้ติดต้ัง squid proxy server ให้ไปเพิ่ม ไอพี subnet ตรงโหมดการ block ป้องกันการแอบใช้
เพ่ิม 11.0.0.0/24
Enjoy~! ทดสอบรับเน็ตจาก tun1 ดูครับ *ถึงจะเป็นขาออกคนล่ะคลาสกัน ท่ีไม่ใช่ 10.0.0.1 ท่านไม่ต้องกลัวว่า
Authen PHPwifi 1.0 จะไม่ท างานกับกับตัวโค้ด เพราะในตัวโค้ดในไฟล์ hotspotlogin.php ทีมงานได้รองรับให้ check เป็น ip ขาออกของท่าน
ที่ได้ก าหนดเอาไว้เรียบร้อยแล้ว ตรงส่วน param ที่ให้ include ตรงโค้ด java script ( จะเอา ไอพี ออกจาก chillispot ไอพี ไหนก็ได้ไม่มี ~error~ กับ PHPwifi )
IPTABLES="/sbin/iptables"
EXTIF1="eth0" EXTIF2="eth1"
INTIF1="eth2" INTIF2="eth3"
#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 $EXTIF1. Reject everything else. $IPTABLES -A INPUT -i $EXTIF1 -p tcp -m tcp --dport 20 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF1 -p tcp -m tcp --dport 21 --syn -j ACCEPT $IPTABLES -A INPUT -i $EXTIF1 -p tcp -m tcp --dport 22 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF1 -p tcp -m tcp --dport 80 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF1 -p tcp -m tcp --dport 443 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF1 -p tcp -m tcp --dport 10000 --syn -j ACCEPT $IPTABLES -A INPUT -i $EXTIF1 -j REJECT
#Forward port $EXTIF1
$IPTABLES -A FORWARD -i $EXTIF1 -j ACCEPT $IPTABLES -A FORWARD -o $EXTIF1 -j ACCEPT
#Forward port $EXTIF2
$IPTABLES -A FORWARD -i $EXTIF2 -j ACCEPT $IPTABLES -A FORWARD -o $EXTIF2 -j ACCEPT
#Allow related and established from $INTIF. Drop everything else.
$IPTABLES -A INPUT -i $INTIF1 -j DROP $IPTABLES -A INPUT -i $INTIF2 -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 20 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp --dport 21 --syn -j ACCEPT $IPTABLES -A INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
$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 -p tcp -m tcp --dport 10000 --syn -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 $INTIF1 -j DROP $IPTABLES -A FORWARD -o $INTIF1 -j DROP
$IPTABLES -A FORWARD -i $INTIF2 -j DROP
$IPTABLES -A FORWARD -o $INTIF2 -j DROP
#Enable NAT on output device $IPTABLES -t nat -A POSTROUTING -o $EXTIF1 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o $EXTIF2 -j MASQUERADE
## Squid Proxy Allow transparent proxy
$IPTABLES -A INPUT -p tcp -m tcp --dport 3128 --syn -j ACCEPT ## Squid Proxy Allow transparent proxy for Tun0
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 3128 --syn -j DROP $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 10.0.0.0/24 --dport 80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 10.0.0.0/16 --dport 80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 10.0.0.0/8 --dport 80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 127.0.0.0/8 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
## Squid Proxy Allow transparent proxy
$IPTABLES -A INPUT -p tcp -m tcp --dport 3128 --syn -j ACCEPT ## Squid Proxy Allow transparent proxy for Tun1
$IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp --dport 3128 --syn -j DROP $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 11.0.0.0/24 --dport 80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 11.0.0.0/16 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 11.0.0.0/8 --dport 80 -j RETURN
$IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp -d 127.0.0.0/8 --dport 80 -j RETURN $IPTABLES -t nat -A PREROUTING -i tun1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128