14
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

คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

Embed Size (px)

Citation preview

Page 1: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

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

Page 2: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

****** ภาคต่อจาก คู่มือ การติดตั้ง 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 เหมือนกันทุกประการ

Page 3: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

ต้องการเพ่ิม 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=""

Page 4: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

เร่ิมการเพ่ิม 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

Page 5: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

# 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

Page 6: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

# 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

Page 7: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

ข้ันตอนต่อไปน้ี ห้าม ~ERROR~ ใดๆ และ tun1 จะต้องปรากฏออกมา ..ถ้าไม่ท้ังสองก็เร่ิมใหม่

# /usr/sbin/chilli -c /etc/chilliTUN1.conf

จากนั้นก็ ifconfig ดูการเพ่ิม interface device on Chillispot -> TUN1

Page 8: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

จากนั้นลองใช้ค าส่ัง

# /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

Page 9: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

จากนั้นลองใช้ค าส่ัง restart service ของ chillispot ดู

( รับรอง tun1 มาแน่นอน ทุกๆครั้ง แม้จะ restart หรือ stop ,start : service )

# /etc/init.d/chilli restart

Page 10: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

~ยังไม่หมด~

~จะต้องไปท าการเพ่ิม การเข้า-ออก กับ 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

Page 11: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

Enjoy~! ทดสอบรับเน็ตจาก tun1 ดูครับ *ถึงจะเป็นขาออกคนล่ะคลาสกัน ท่ีไม่ใช่ 10.0.0.1 ท่านไม่ต้องกลัวว่า

Authen PHPwifi 1.0 จะไม่ท างานกับกับตัวโค้ด เพราะในตัวโค้ดในไฟล์ hotspotlogin.php ทีมงานได้รองรับให้ check เป็น ip ขาออกของท่าน

ที่ได้ก าหนดเอาไว้เรียบร้อยแล้ว ตรงส่วน param ที่ให้ include ตรงโค้ด java script ( จะเอา ไอพี ออกจาก chillispot ไอพี ไหนก็ได้ไม่มี ~error~ กับ PHPwifi )

Page 12: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot
Page 13: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

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

Page 14: คู่มือ การเพิ่ม tun0 ,tun1 ,tun2 ,tun ....xx บน Chillispot

## 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