วันศุกร์ที่ 28 กุมภาพันธ์ พ.ศ. 2557

รัน Multiple instances สำหรับ Coova-Chilli 1.3.0

สวัสดีกันอีกครั้งสำหรับบล็อกประสบการณ์ดีๆ ของการใช้งาน OpenSource เซิร์ฟเวอร์ หลังจากที่ผู้เขียนได้วุ่นวายกับการแก้ไข PAGE ERROR 404 บนBlogSpot ตามลิงค์ที่แปะไว้ให้แล้ว http://www.thaiseoservices.com/2014/02/page-error-404-blogspot.html แต่วันนี้รายงาน PAGE ERROR 404 ยังมีมาอีกถึงหลายร้อยหน้า คงต้องใช้เวลาแก้กันใหม่อีกรอบหนึ่ง ส่วนวิธีการจะได้รวบรวมเป็นเอกสารกันไว้ให้ศึกษากันอีกครั้งหนึ่ง

มาวันนี้ผู้เขียนจะพาวกกลับมาที่วิธีการ "รัน Multiple instances สำหรับ Coova-Chilli 1.3.0" กัน ทำไมต้องรันโปรแกรม Coova-Chilli หลายๆ instances โดยปกติ ในหนึ่ง instance จะรันโปรแกรม Coova-Chilli เพียงแค่เน็ตเวิร์คเดียว กรณีที่เราจะทดสอบนี้มีการสร้างเน็ตเวิร์คถึง 3 เน็ตเวิร์ค หรือ 3 Vlans ดังนั้นเราจึงมีความจำเป็นต้องรัน Coova-Chilli 3 ครั้งด้วย

 
VLAN 11 --/usr/local/etc/chilli/eth1.11
             --/usr/local/etc/chilli/eth1.11/chilli.conf
             --/usr/local/etc/chilli/eth1.11/main.conf
             --/usr/local/etc/chilli/eth1.11/local.conf
             --/usr/local/etc/chilli/eth1.11/hs.conf

VLAN 12  --/usr/local/etc/chilli/eth1.12
              --/usr/local/etc/chilli/eth1.12/chilli.conf
              --/usr/local/etc/chilli/eth1.12/main.conf
              --/usr/local/etc/chilli/eth1.12/local.conf
              --/usr/local/etc/chilli/eth1.12/hs.conf

VLAN 13  --/usr/local/etc/chilli/eth1.13
              --/usr/local/etc/chilli/eth1.13/chilli.conf
              --/usr/local/etc/chilli/eth1.13/main.conf
              --/usr/local/etc/chilli/eth1.13/local.conf
              --/usr/local/etc/chilli/eth1.13/hs.conf

ตัวอย่างไฟล์คอนฟิกของ VLAN 11
# cat /usr/local/etc/chilli/eth1.11/chilli.conf
include /usr/local/etc/chilli/eth1.11/main.conf
include /usr/local/etc/chilli/eth1.11/hs.conf
include /usr/local/etc/chilli/eth1.11/local.conf
ipup=/usr/local/etc/chilli/up.sh
ipdown=/usr/local/etc/chilli/down.sh

# cat /usr/local/etc/chilli/eth1.11/main.conf
cmdsocket       /usr/local/var/run/chilli.eth1.11.sock
unixipc         chilli.eth1.11.ipc
pidfile         /usr/local/var/run/chilli.eth1.11.pid
net             192.168.11.0/255.255.255.0
uamlisten       192.168.11.254
uamport         3110
dhcpif          eth1.11
uamallowed      "192.168.11.0/24,192.168.1.0/24"
domain "lan110"
dns1 "192.168.11.254"
dns2 "192.168.11.254"
uamhomepage http://192.168.11.254:3120/prelogin
wwwdir /usr/local/etc/chilli/www
wwwbin /usr/local/etc/chilli/wwwsh
uamuiport 4110
locationname "PG vlan 110"
radiuslocationname "PG_vlan_110"
radiuslocationid "isocc=,cc=,ac=,network=Coova,"

# cat /usr/local/etc/chilli/eth1.11/hs.conf
radiusserver1   "127.0.0.1"
radiusserver2   "127.0.0.1"
radiussecret    "testing123"
radiusauthport  1812
radiusacctport  1813
uamserver       "https://192.168.11.254/cgi-bin/hotspotlogin.cgi"
radiusnasid     "nas120"
papalwaysok
uamaliasname "pg2 vlan110"

ส่วนสคริปที่ใช้ทำการเริ่มการทำงานก็เป็น /usr/local/etc/init.d/chilli โดยให้คอมเมนท์สองบรรทัดนี้ เพราะเราไม่ต้องการให้เครื่องมือของ Coova-Chilli สร้างคอนฟิกใหม่ทุกครั้งที่เริ่มการทำงาน 
#writeconfig
#radiusconfig
ผู้เขียนทดลองสตาร์ทเซอร์วิส ปรากฏว่า VLAN 11 ทำงานได้สมบูรณ์ แต่ VLAN 12 และ VLAN 13 ไม่ทำงาน ผู้เขียนเลยเพิ่มคำสั่ง sleep 10 เข้าไปที่ก่อนบรรทัดสุดท้ายของ start รูทีนก็สามารถสตาร์ทเซอร์วิสได้ครบทุก VLANs

วันพุธที่ 26 กุมภาพันธ์ พ.ศ. 2557

วางแผนการดำเนินการระบบเครือข่าย ClearOS 6.4 + Coova-Chilli 1.3.0 + vlan + dd-wrt

สวัสดียามบ่ายแก่ๆ ของวันพุธที่ 26 กุมภาพันธ์ พ.ศ.2557 กันอีกครั้งหลังจากที่ผู้เขียนทดสอบการเซ็ทอัพระบบ ClearOS 6.4 + Coova-Chilli 1.3.0 และ WRT54GL เพื่อแบ่ง VLANs ได้สำเร็จ ตามความต้องการตามภาพรวมข้างล่าง ก็ถึงเวลาที่จะได้รวบรวมเอกสารที่ได้ปฏิบัติงาน เพื่อให้เป็นประโยชน์กับหลายๆ ท่านที่สนใจ นำไปต่อยอดพัฒนากันได้ต่อไปในภายภาคหน้า

ผู้เขียนเคยเขียนบทความดำเนินการ Joomla 2.5 free seo tool สไตล์ประหยัดงบประมาณ ตามลิงค์ที่ให้ไว้บนตัวเครื่อง ClearOS 6.4 เมื่อหลายวันก่อนไปแล้ว แต่เพื่อเป็นการเพิ่มฟังก์ชั่นการทำงานของตัว Internet Gateway กันอย่างเต็มที่จึงได้เริ่มนำการทดสอบตามแผนผังด้านหลังมาแนะนำกัน

มองภาพรวมของการทำงานหรือว่า network scenario ตามรูปด้านล่าง
ต้องการสร้างระบบ Internet Gateway โดยใช้ ClearOS 6.4 รันโปรแกรม Coova-Chilli เพื่อทำหน้าที่เป็น Captive Portal มีเครื่องลูกข่ายแบ่งเป็น 2 VLANs คือ VLAN 12 และ VLAN 13 อาศัยอุปกรณ์ Linksys WRT54GL ลงซอฟต์แวร์ DD-WRT เป็นตัวจัดการ VLANs และ Trunk
 
         Internet |       ClearOS 6.4        | DD-WRT       | VLAN 12
                     |   Coova-Chilli-1.3.0    | WRT54GL     | VLAN 13
 
ตัวซอฟต์แวร์  DD-WRT บนอุปกรณ์ Linksys WRT54GL จะถูกใช้งานทั้งหมด 3 Ports คือ PORT 4 เป็น Trunk, PORT 3 ใช้งาน VLAN 13 และ PORT 2 ใช้งาน VLAN 12

 
        DD-WRT |4--------- PORT Trunk
                     |3----------VLAN 13
                     |2----------VLAN 12

ตัวเครื่องเซิร์ฟเวอร์ที่รัน Coova-Chilli จะสร้างขึ้นมา 2 instances เพื่อรองรับ VLAN 12 ใช้อินเทอร์เฟส eth1.12 ส่วนอินสแตนที่สองใช้อินเทอร์เฟส eth1.13 ตัวอุปกรณ์ Coova-Chilli ไม่ต้องจ่ายไอพีแอดเดรสอัตโนมัติ(disable internal dhcp server)

โดยขั้นตอนการทำงานสามารถดูเอกสารประกอบการทำได้ดังนี้

1.

2.
3.

4.
 


วันอังคารที่ 25 กุมภาพันธ์ พ.ศ. 2557

สร้าง VLAN และ TRUNK บน DD-WRT ในอุปกรณ์ Linksys WRT54GL

สวัสดีกันอีกครั้งสำหรับเวบบล็อกดีๆ s-techthai.com เพื่อแลกเปลี่ยนประสบการณ์ดีๆ กับการใช้งานซอฟต์แวร์ Opensource หลังจากที่ผู้เขียนได้ทดลองสร้าง VLAN บนลินุกส์ ClearOS 6.4 ไปเมื่อครั้งที่แล้ว มาครั้งนี้จะเป็นการทดสอบว่า vlan ที่เราสร้างขึ้นจะสามารถเชื่อมต่อกับวงอื่นๆ ในระบบเครือข่ายคอมพิวเตอร์ของเราได้หรือไม่

ก่อนที่ผู้เขียนจะเริ่มคล่องกับการใช้งาน blogspot ผู้เขียนได้ทำการแก้ไข 404 page error ให้ทำการรีไดเรคไปยังหน้าหลัก ตามลิงค์ที่ผู้เขียนแปะไว้ให้ http://www.thaiseoservices.com/2014/02/page-error-404-blogspot.html ทำให้เริ่มคุ้นเคยกับการใช้งานเวบบล็อก แน่นอนที่สุดสามารถอัพเดทข้อมูลได้สะดวกและรวดเร็วนั่นเอง

 ความสำคัญในเนื้อหานี้ คงหนีไม่พ้นอุปกรณ์ที่ทำหน้าที่เป็น VLAN Switching มันคงไม่เป็นการยากหากผู้เขียนสามารถไปหยิบยืมหรือมีอุปกรณ์ L2 switching ที่รองรับพอร์ท Trunk อีกทั้งงานนี้ก็อยู่ในขั้นการทดลอง การจะลงทุนซื้อหาอุปกรณ์ L2 switching ราคาห้าพันกว่าบาทคงมากเกินความจำเป็น พอดีไปเหลือบเห็นเจ้านี่ Linksys WRT54GL ที่ลงโอเอส dd-wrt เรียบร้อยแล้ว พร้อมคู่มือกำหนดค่าให้กับ VLAN ตามลิงค์ที่แปะให้นี้   http://www.dd-wrt.com/wiki/index.php/Switched_Ports

หน้าตาของระบบทดสอบก็จะทำการคอนฟิกอุปกรณ์ dd-wrt ตามแบนด้านล่างนี้
PORT 2[2] -> VLAN 12
PORT 3[1] -> VLAN 13
PORT 4[0] -> TRUNK PORT
ก่อนอื่นเรามาทำความเข้าใจเกี่ยวกับพอร์ต Trunk กันก่อน พอร์ต Trunk คือพอร์ตที่สามารถเพิ่ม Tag โปรโตคอล 802.1q ได้ในแพ็จเกจเลเยอร์ 2 เพื่อเชื่อมต่อระหว่างอุปกรณ์ตั้งแต่ 2 ตัวขึ้นไปให้สามารถใช้งาน VLAN ข้ามอุปกรณ์กันได้ หากอุปกรณ์ใดไม่มีพอร์ต Trunk การเชื่อมต่อกับอุปกรณ์ตัวอื่นๆ ก็ต้องลากสายไปพ่วงแทน ยกตัวอย่าง หากเราสร้าง 10 VLANs ก็ต้องลากสายแลน 10 เส้น แต่หากเรามี Trunk ก็ใช้สายแลนเพียงแค่เส้นเดียวเพื่อบรรจุข้อมูลหรือ Tag ของทั้ง 10 VLAN ได้

มาดู VLAN มาตรฐานของอุปกรณ์ dd-wrt กัน จะมีอยู่แค่ 2 VLANs คือ VLAN 0 และ VLAN1 VLAN 0 ใช้เชื่อมต่อกับพอร์ต LAN ส่วน VLAN1 ใช้เชื่อมต่อกับพอร์ต WAN

root@DD-WRT:~# nvram show | grep vlan.*ports
vlan0ports=3 2 1 0 5*
vlan1ports=4 5
โดยที่  0 = PORT 4 , 1 = PORT 3, 2 = PORT 2, 3 = PORT 1, 4 = WAN, 5 = CPU internal and 5* = CPU internal default
จากตัวอย่างการคอนฟิก ต้องการให้ VLAN 12 อยู่บน PORT 2 ของอุปกรณ์ WRT54GL และ VLAN 13 อยู่บน PORT 3 ส่วน PORT TRUNK ให้ใช้ PORT 4 การกำหนดค่าทำได้ดังนี้

root@DD-WRT:~# nvram set vlan0ports=”3 0t 5*”
root@DD-WRT:~# nvram set vlan12ports=”2 0t 5”
root@DD-WRT:~# nvram set vlan13ports=”1 0t 5”
root@DD-WRT:~# nvram show | grep vlan.*.ports
vlan12ports=2 0t 5
vlan0ports=3 0t 5*
vlan13ports=1 0t 5
vlan1ports=4 5
root@DD-WRT:~# nvram set vlan0hwname=eth0
root@DD-WRT:~# nvram set vlan12hwname=eth0
root@DD-WRT:~# nvram set vlan13hwname=eth0
root@DD-WRT:~# nvram commit
root@DD-WRT:~# reboot

หลังจากรีสตาร์ทเครื่องก็จะสามารถใช้งาน VLAN ตามที่เราต้องการได้ ผู้เขียนทดสอบโดยการต่อสายแลนจาก PORT 4 ไปยังอุปกรณ์คอมพิวเตอร์ Linux ClearOS 6.4  ตั้งค่า VLAN 12 ไอพีแอดเดรส 192.168.12.1/24 และ VLAN 13  192.168.13.1/24 จากนั้นหาโน๊ตบุ๊คมาเชื่อมต่อที่ PORT 2 ตั้งค่าการ์ดแลนที่โน๊ตบุ๊คเป็น 192.168.12.99/24 ทดสอบการ ping ไปยังเซิร์ฟเวอร์สามารถทำงานได้ ตรงตามความต้องการ เนื้อหาการทดสอบแบบละเอียดผู้เขียนจะขอติดไว้ก่อน เพื่อมาอัพเดทให้ทราบกันอีกที หรืออาจจะนำรวมมาพร้อมกันกับระบบ Coova-Chilli รองรับ VLAN ไปพร้อมกันทีเดียว

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

ClearOS 6.4 สร้าง vlan โดยใช้คอมมานไลน์

สวัสดีอีกครั้งครับสำหรับ บล็อกดีๆ s-techthai.com รวบรวมประสบการณ์ดีๆ ของการใช้งานระบบปฏิบัติการลินุกส์ เซิร์ฟเวอร์ เรื่องราวของผู้เขียนจริงๆ แล้วน่าจะใช้คำว่า series กันดีกว่าเพราะผู้เขียนอยู่ในระหว่างการเตรียมขึ้นระบบใหม่ให้กับทางลูกค้าราชการ ผู้เขียนเคยแนะนำวิธีการแก้ปัญหาเครื่องดับ ClearOS 6.4 ไฟดับ mysql server ไม่ทำงานมาครั้งนึงแล้วเมื่อไม่นานมานี้ แต่ครั้งนันเป็นลูกค้าบริษัทฯ http://www.credit-thai.com/2014/01/clearos-64-mysql-server.html

วันนี้ผู้เขียนจะสร้าง "ClearOS 6.4 สร้าง vlan โดยใช้คอมมานไลน์"


/etc/sysconfig/network-scripts

[root@system network-scripts]# cat ifcfg-eth1.11
DEVICE=eth1.11
TYPE="VLAN"
ONBOOT="yes"
USERCTL="no"
BOOTPROTO="static"
IPADDR="192.168.11.1"
NETMASK="255.255.255.0"
VLAN="yes"


[root@system network-scripts]# cat ifcfg-eth1.12
DEVICE=eth1.12
TYPE="VLAN"
ONBOOT="yes"
USERCTL="no"
BOOTPROTO="static"
IPADDR="192.168.12.1"
NETMASK="255.255.255.0"
VLAN="yes"


สั่งเริ่มต้นการทำงานของอินเทอร์เฟซโดยใช้คำสั่งต่อไปนี้

# ifup eth1.11
# ifup eth1.12 
# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:13:F7:CB:9B:5C
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:2040 (1.9 KiB)
          Interrupt:20 Base address:0xec00

eth1.11   Link encap:Ethernet  HWaddr 00:13:F7:CB:9B:5C
          inet addr:192.168.11.1  Bcast:192.168.11.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:368 (368.0 b)

eth1.12   Link encap:Ethernet  HWaddr 00:13:F7:CB:9B:5C
          inet addr:192.168.12.1  Bcast:192.168.12.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:368 (368.0 b)

หรือสั่งยกเลิกการใช้งานอินเทอร์เฟซโดยใช้คำสั่งต่อไปนี้
# ifdown eth1.11
# ifdown eth1.12
# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:13:F7:CB:9B:5C
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:2040 (1.9 KiB)
          Interrupt:20 Base address:0xec00


ตามตัวอย่างผู้เขียนสร้าง VLAN 11 และ VLAN 12 ขึ้นมาโดยตั้งค่า ip address สำหรับ VLAN 11 เป็น 192.168.11.1/255.255.255.0 ส่วน VLAN 12 เป็น 192.168.12.1/255.255.255.0 

Coova-Chilli 1.3.0 แบบเลเยอร์ 3 แก้ปัญหาการจ่าย dhcp ของ authentication

ยินดีต้อนรับสู่ stechthai.blogspot.com นำเสนอเรื่องราวดีๆ ของการใช้งานหรือประสบการณ์ Opensource หรือระบบปฏิบัติการ Linux โดยบริษัท ไทย พรอสเพอรัส ไอที จำกัด ทางบริษัทฯ เองได้มีโอกาสร่วมงานกับหน่วยงานภาครัฐในการนำระบบซอฟต์แวร์โอเพ่นซอร์สหลายๆตัว เช่น Zimbra Community 8.0.4 และ ClearOS 6.4 เป็นต้น

วันนี้ผู้เขียนจะขอแนะนำงานหนึ่งที่ทางลูกค้าต้องการให้ระบบพิสูจน์ตัวตน(Coova)ทำงานโดยไม่ต้องจ่าย dhcp ไปซ้ำซ้อนกับระบบเดิม พูดง่ายๆ ต้องการใช้งานกับ external dhcp นั่นเองเพื่อให้สะดวกต่อการบริหารจัดการ เพื่อไม่ให้เป็นการเสียเวลาเราไปลองดูกันเลยครับ

[root@system ~]# cat /etc/issue
ClearOS Community release 6.4.0 (Final)




ผู้เขียนใช้ระบบปฏิบัติการ ClearOS Community Release 6.4.0 (Final) ส่วน package ที่ต้องการติดตั้งคือ coova-chilli-1.3.0 สามารถเข้าไปดาวน์โหลดได้ที่เวบไซต์ coova.org หลังจากนั้นให้แตกไฟล์ออกเพราะเราต้องทำการคอมไพล์ใหม่ ให้รองรับ layer3


#svn checkout http://dev.coova.org/svn/coova-chilli/
#cd coova-chilli/
#sh bootstrap


# make clean
# ./configure --disable-static --enable-shared --enable-largelimits --enabl
e-miniportal  --enable-chilliredir --enable-chilliproxy --enable-chilliscript --
with-poll --without-openssl  --disable-chilliradsec --enable-libjson --enable-la
yer3
--enable-ieee8023 --enable-l2tpppp  --enable-eapol --enable-ieee8021q --ena
ble-multiroute --enable-multilan --enable-uamanyip  --enable-uamuiport

# make
# make install

# yum --enablerepo=clearos-core,clearos-developer,clearos-epel install gengetopt

สำหรับการคอมไพล์ด้านบนหากเกิดข้อผิดพลาดจากการหาคำสั่ง gengetopt ไม่พบให้ติดตั้งเพิ่มเติมตามคำสั่งด้านบน ผู้เขียนพบว่าหากติดตั้งจากซอร์สโค๊ดแล้วแก้ไข Makefile ตามตัวอย่างข้างล่างซอฟต์แวร์ทำงานได้ไม่สมบูรณ์ ให้คอมไพล์จาก svn ตามวิธีข้างบนดีกว่า หากจะใช้วิธีด้านล่าง ต้องเข้าไปแก้ไขใน Makefile ให้ลบข้อความที่มี  "--Werror" ซึ่งผู้เขียนไม่แนะนำ

# vi src/Makefile
# make
# make install


หลังจากทำการคอมไพล์และติดตั้ง coova-chilli-1.3.0 เรียบร้อยแล้วไฟล์ติดตั้งหลักจะอยู่ที่โฟลเดอร์ /usr/local/ect/chilli

ผู้เขียนจะกล่าวถึงวิธีการ disable dhcp ใน coova-chilli-1.3.0 ก็คือไปแก้ไขค่าคอนฟิกให้เพิ่ม layer3 เพื่อให้ coova-chilli ยกเลิกการตรวจสอบ MAC Address เปลี่ยนมาใช้ IP Address แทน เพิ่มคำสั่ง nodynip เพื่อให้ coova-chilli ไม่ต้องจ่ายไอพีแอดเดรสกับเครื่องลูกข่าย ในไฟล์ local.conf สำหรับตัวอย่างผู้เขียนเพิ่ม ieee8021q เพื่อให้รองรับการทำ vlan tag หรือ trunk สำหรับการเชื่อมต่อหลายๆ อินเทอร์เฟซนั่นเอง

[root@system chilli]# cat local.conf
ieee8021q

layer3
nodynip



เพียงแค่นี้ coova-chilli ของเราก็จะไม่ต้องจ่าย dhcp ไปกวนกับระบบเดิมที่มีอยู่ เพื่อให้ผู้ดูแลระบบส่วนของ dhcp เซิร์ฟเวอร์ไม่ต้องมาคอยค่อนขอด coova-chilli ของเราอีกต่อไป