วันอาทิตย์ที่ 4 กันยายน พ.ศ. 2554

สร้างเว็บไซต์ห้ามลืม "4P"

***ดีไซน์ดี เว็บก็ทำเงิน
       บทความโดย @malimali
      
       กลยุทธ์ทางการตลาดที่เราใช้ในการเพิ่มโอกาสให้สินค้าหรือบริการเรา ขายดี เราก็รู้กันอยู่มานมนานแล้วว่ามี 4 ทาง หรือ 4P ซึ่งมันก็ปรับใช้กับเว็บได้เช่นกัน ได้แก่
      
       1. Product ตัวสินค้าควรจะมีดีพอที่จะให้คนซื้อไปเพื่อได้ใช้ประโยชน์ หรืออย่างน้อยก็น่าสนใจพอที่จะทำให้ซื้อ ขณะที่ตัวเว็บเองก็ต้องมีประโยชน์ต่อผู้ใช้ (หรือลูกค้า) ควรมีการใช้งานที่มีประสิทธิภาพที่ดีพอ
      
       2. Place สถานที่ที่วางขายถ้าอยู่ในทำเลดีที่ ก็มีคนเห็นสินค้าเราเยอะ โอกาสในการขายก็จะสูงตามไปด้วย ถ้าในแง่เว็บก็ตรงกัน คือ หาวิธีที่ทำให้คนรู้จักเว็บเราก่อน ถ้าไม่รู้จักเว็บเรา เว็บเราจะดีขนาดไหนก็จบกัน ซึ่งในโลกดิจิตอล และยุคโซเชียลมีเดียนั้น ไอเดียในการที่จะทำให้คนรู้จักเว็บเราก็มีมากมายหลายทาง
      
       3. Price ถ้าเป็นเว็บที่ให้บริการเนื้อหา คนส่วนใหญ่คงไม่ได้คิดว่าต้องเสียเงินอะไรในการเข้าชมเว็บ ในแง่นี้ จริงๆแล้วอย่างน้อยผู้ใช้ก็ยังต้องเสียเวลาเข้าไปเสพ ไปใช้เนื้อหา หรือประโยชน์ในเว็บนั้นอยู่ดี ส่วนเว็บที่มีการขายของ ปัจจุบันก็ใช้กลยุทธ์ทางราคาเพื่อดึงให้ลูกค้ามีความสนใจที่จะซื้อในเว็บ อยู่แล้ว
      
       4. Promotion โปรโมชันหรือกลยุทธ์ทางการตลาดเพื่อเพิ่มความต้องการในการซื้อ เช่น ซื้อ 1 แถม 1 หรือลด 50% ตรงนี้เราสามารถทำโปรโมชันที่จะทำให้เกิดความต้องการที่จะเข้าไปในเว็บได้ เช่น การแถมบัตรลดราคาตั๋วภาพยนตร์ เพื่อดึงคนเข้าไปเป็นสมาชิกเว็บ เป็นต้น
      
       ไม่ว่าเราจะใช้ P ไหนมากกว่ากัน แต่ P ตัวแรก หรือ Product ก็มักจะเป็นตัวเริ่มต้นธุรกิจในหลายๆกรณี ไม่ว่าจะเป็นสินค้าเป็นชิ้นเป็นอัน เป็นบริการ หรือเป็นเว็บไซต์ หรือแม้แต่เว็บบล็อกหนึ่งบล็อก ก็ต้องใส่ใจใน P ตัวนี้ไม่ต่างกัน จุดร่วมมันอยู่ตรงที่ว่า การทำให้ Product ของเรา มีคุณสมบัติหลักๆดังต่อไปนี้
      
       1. มีจุดประสงค์ให้ผู้ใช้ ใช้มันเพื่ออะไร
      
       เช่น เว็บไซต์ amazon.com สร้างขึ้นเพื่อให้เป็นชุมชนการซื้อขายหนังสือออนไลน์, เว็บไซต์ Tarad.com สร้างขึ้นเพื่อให้เกิดแหล่งซื้อขายของกันทางออนไลน์ สำหรับผู้ค้ารายย่อยในประเทศไทย หรือเว็บไซต์ Typlive.com ที่สร้างขึ้นเพื่อเป็นผู้ช่วยให้ติดต่อธุรกิจที่ต้องการได้
      
       นี่คือจุดประสงค์ที่ดูเหมือนจะง่ายๆ เรียบๆ ถ้ามีจุดประสงค์ที่ซับซ้อน ลอยๆ เว็บนั้นก็สำเร็จได้ยาก เพราะขนาดเจ้าของยังบอกได้ไม่ชัดๆลงไปว่าจุดประสงค์ของเว็บคืออะไร
      
       2. มีความน่าใช้ตั้งแต่แรกหรือเปล่า
      
       ถ้าพูดเรื่องความน่าใช้ ก็ต้องยกตัวอย่างผลิตภัณฑ์ Apple ได้แก่ MacBook, iPod, iPhone, iPad ซึ่งมีความน่าใช้งานตั้งแต่แรกเห็น หรืออย่างสินค้าสารพัดจากประเทศญี่ปุ่น ที่มีความน่ารัก สวยงาม น่าใช้ น่าเข้าไปกระโดดใส่ ตั้งแต่แรกเห็นเช่นกัน
      
       ตัวอย่างคือเว็บไซต์ etsy.com ที่เปิดมาก็จะเจอของสวยงามแฮนด์เมดจากผู้ค้าหลายคนในเว็บไซต์ จัดวางอยู่บนหน้าอย่างระเบียบเรียบร้อยน่าคลิกเข้าไปดู
      
       3. เติมเต็มความต้องการของผู้ใช้หรือไม่
      
       ถ้าจะเปิดร้านอาหารที่ทำเลใดทำเลหนึ่ง ก็ต้องดูว่า พื้นที่นั้นมีความต้องการร้านอาหาร ต้องการซื้ออาหารนอกบ้านหรือไม่ อย่างเช่น ต่างจังหวัดในบางพื้นที่ ที่การท่องเที่ยวยังไม่บูม การทำร้านอาหาร ก็เสี่ยงต่อการที่จะไม่มีลูกค้า บางชุมชนที่มีความนิยมในสินค้าหรือเว็บไซต์อันใดอันหนึ่งแล้ว การที่จะไปทำในลักษณะเดียวกันก็ยาก อย่างเช่น บริการ Google Wave ที่ต้องปิดตัวไป เพราะไม่ได้ตอบสนองความต้องการไปเท่ากับหรือมากกว่าสิ่งที่ Facebook ให้ได้
      
       4. มีประสิทธิภาพในการใช้ที่ดีหรือไม่
      
       ถ้าสนองตอบความต้องการแล้ว นอกจากจะดูน่าใช้แล้ว ยังมีประสิทธิภาพในการใช้ที่ดีด้วย ก็มีสิทธิที่จะทำให้ผู้ใช้เกิดความรู้สึกดีๆขึ้นกับเว็บเรา Application Instagram เป็นอีกตัวอย่างบริการออนไลน์ที่ตอบสนองทั้งการตกแต่งรูปที่ง่ายสำหรับคน ทั่วไป ใช้ง่าย และเมื่อใช้แล้วก็รู้สึกดี เป็นสูตรสำเร็จที่ว่า ทำไม Instagram ถึงได้เป็นที่นิยมมากขนาดนี้
      
       หรืออย่างเช่นเว็บชุมชนรูปภาพอย่าง Flickr.com ที่การอัปโหลดรูปหลายๆรูปสามารถทำได้อย่างง่ายดาย และเห็นว่า แต่ละรูปได้อัปโหลดไปถึงไหน สำเร็จหรือไม่ด้วย ซึ่งมีประโยชน์มากๆ
      
       5. ใช้แล้ว ผู้ใช้อยากกลับมาใช้ซ้ำหรือเปล่า
      
       เมื่อเกิดความประทับใจจากการใช้ครั้งแรกๆแล้ว ก็มักจะเกิดการอยากกลับมาใช้ต่อๆมา โอกาสที่เราจะได้ผู้ใช้ประจำก็ตรงจุดนี้ ในเว็บไซต์เราสร้างกลไกอะไรให้เขาอยากกลับมาใช้เรื่อยๆหรือเปล่า
      
       ตัวอย่างเช่นเว็บไซต์ Dribbble.com ที่ให้เป็นแหล่งชุมชนของชาวศิลปินที่มีความคิดสร้างสรรค์สร้างผลงานออกมา เมื่อชาวติสท์ด้วยกันเกิดความประทับใจและเพลินในการชมชิ้นงาน แม้ว่าชิ้นงานจะเป็นตัวเอกของเว็บ แต่องค์ประกอบอื่นๆของเว็บก็ช่วยให้เกิดความคิดสร้างสรรค์ ให้งานที่โชว์ยิ่งเด่นมากขึ้น และให้การเยี่ยมชมมีความสนุกสนานเช่น การเลือกชมผลงานตามสี และมีปฏิสัมพันธ์กับสมาชิกคนอื่นๆด้วย
      
       ซึ่งสิ่งเหล่านี้ มันจะเกิดขึ้น ก็คือในช่วงวางแผนและออกแบบ การออกแบบที่ดี ควรจะออกแบบให้มีครบทั้ง 5 ข้อ ครอบคลุมตั้งแต่การวางจุดประสงค์ที่เรียบง่ายชัดเจนในการมีเว็บไซต์ ไปจนถึงการที่จะแปลงจากผู้มาเยี่ยมชมเว็บไซต์มาเป็นสมาชิกประจำเป็นสำคัญ
      
       ที่สำคัญ การออกแบบดีไซน์ไม่ใช่เป็นเพียงการทำให้เว็บมีความสวยงามเท่านั้น ภารกิจของการออกแบบนั้นมีมากกว่านั้นมากมาย และที่สำคัญกว่าคือ การจะได้รายได้จากเว็บไซต์ ไม่ว่าเราจะให้บริการออนไลน์ หรือขายสินค้าออนไลน์ ถ้าสินค้าหรือบริการเรา มีคุณภาพครบ 5 ข้อ ตามด้านบนแล้ว ก็จะมีความสามารถที่จะต่อยอดไปสู่ P อื่นๆ หรือแม้แต่ด้วย ตัวสินค้าบริการเอง ที่จะดึงดูดให้ผู้ใช้เข้ามาประจำ นอกจากนี้ยังดีต่อการขายของบนเว็บไซต์ ลูกค้าสามารถหาข้อมูลได้อย่างง่ายและรวดเร็ว เห็นข้อมูลสินค้าบริการอย่างชัดเจน เพิ่มโอกาสในการขายมากขึ้น
      
       ในกรณีที่เว็บไซต์เป็นการทำเงินจากการให้บริการ การออกแบบให้บริการมีประสิทธิภาพที่ดี น่าใช้ ผู้ใช้ที่ติดใจกับบริการของเราก็มักจะยินดีพร้อมจ่ายเงินสนับสนุนให้บริการ ของเราอยู่ต่อไปได้ หรือในกรณีเว็บไซต์เป็นการหารายได้จากโฆษณา การที่มีผู้ชมเข้ามามากๆ โอกาสในการเห็นโฆษณาก็มากเช่นกัน
      
       ดังนั้นจำให้ดีว่า ถ้าไม่ให้ความสำคัญกับการออกแบบให้เหมาะสมและเพียงพอ ก็อาจจะทำให้ P ตัวนี้ ทำหน้าที่ของมันได้อย่างไม่เต็มประสิทธิภาพ ซึ่งมันก็อาจจะหมายถึง เงินลงทุนที่อาจจะเสียหายไปไม่น้อยก็มาก

======================
ที่มา : www.manager.co.th
http://www.manager.co.th/CBiZReview/ViewNews.aspx?NewsID=9540000111686

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

คำคมจากหนังดัง.....

คำคมจากหนังดัง
ที่มา : Internet..
*************************
เราไม่สามารถวัดประเมินความเป็นคน จากอาชีพที่เขาทำได้
แต่สามารถวัดความเป็นเขาได้ จากตอนที่เขาล้มลงและลุกขึ้นใหม่อีกครั้ง
- Maid In Manhattan

คนส่วนใหญ่มักร้องขออำนาจจากพระเจ้า แท้จริงแล้วอำนาจอยู่ในตัวพวกเขาเอง
- Bruce Almighty

บางครั้งคนอื่นก็ทำให้เรา...รู้จักตัวเอง
>บาง ทีเวลาคนเราอยู่กับตัวเอง ก็อาจจะได้เห็นในสิ่งที่ตัวเองเชื่อและคิดว่าตัวเองเป็นเพียงแค่นั้น หากมีใครเป็นเหมือนกระจกสักบานที่สะท้อนตัวเราออกมา ก็จะได้เห็นตัวเราในมุมที่คนอื่นมอง - Two Weeks Notice

ความทุกข์ของคนๆ เดียว เทียบไม่ได้เลย... กับความทุกข์ของประชาใต้หล้า
- Hero
มันวิเศษที่เราเลิกทำตัวเป็นคนที่เราอยากเป็น แล้วหันมาเป็นตัวของตัวเอง
- Slap Her, She's French
สิ่งเดียวที่จะทำให้คนชั่วได้ชัยชนะ นั่นก็คือ การที่คนดีๆ นิ่งดูดาย
- Tears Of The Sun
จะพยายามเป็นคนธรรมดาทำไมให้เหนื่อย หากคุณเกิดมาเพื่อที่จะโดดเด่น
- What Women Wants

เราไม่สามารถวัดความดีจากสิ่งที่เราไม่ได้ทำ สิ่งที่เราต่อต้าน หรือผู้คนที่เรากีดกัน
แต่เราวัดความดีได้จากสิ่งที่เราลงมือทำ สิ่งที่เราสร้าง และผู้คนที่เรารับเข้ากลุ่ม
- Chocolate
ความจริง...ชนะทุกสิ่งเสมอ
- Big Fat Liar
ถ้าไม่ปล่อยให้อะไรเกิดขึ้นกับชีวิตบ้าง... มันคงจืดชืดน่าดู
- Finding Nemo
ยา กฎหมาย ธุรกิจ การจัดการ เป็นการเจริญรอยระดับสูง และจำเป็นสำหรับการรักษาชีวิตไว้
แต่โคลงกลอน ความงดงาม ความโรแมนติก และความรัก เป็นสิ่งที่ทำให้เราได้รู้ว่า... เราเกิดมาเพื่ออะไร
-Dead Poet's Society

ชีวิตไม่ใช่เพียงอุบัติเหตุหรือความบังเอิญที่ไร้ความหมาย
แต่มันเป็นชุดของเหตุการณ์ที่ลงตัวของแผนการที่ดีเลิศประเสริฐสุด
- Serendipity

You will never age for me, nor fade, nor die
คุณจะไม่มีอายุสำหรับฉัน ไม่เลือนลาง ไม่สิ้นไป
- Shakespeare In Love

รักคือปรารถนาที่ซ่อนอยู่ในใจ ไม่มีใครรู้สึกได้นอกจากตัวเรา
- Bandits

คนเรามักทำร้ายคนที่เรารักเสมอ และเรื่องแบบนี้... เกิดขึ้นกับใครก็ได้
- The Green Mile

เราจะไม่สูญเสีย.. ในสิ่งที่เราไม่มีวันได้ครอบครอง
- How To Lose A Guy In 10 Days
ถ้าเราอยากได้อะไรมากๆ จงปล่อยมันไป
ถ้ามันกลับมาหาเรา มันจะเป็นของเราตลอดไป
แต่ถ้าไม่... แสดงว่ามันไม่ได้เป็นของเราตั้งแต่แรกแล้ว
- Indecent Proposal
ความรักก็เหมือนคลื่นวิทยุ ต้องหา ต้องปรับ ต้องจูนกันอยู่เสมอ...
- Sex Phone คลื่นเหงา สาวข้างบ้าน

 ฉันเกลียดวิธีที่คุณคุยกับฉัน และเกลียดทรงผมของคุณ
ฉันเกลียดวิธีที่คุณขับรถฉันเกลียดเวลาที่คุณจ้องมอง
ฉันเกลียดรองเท้าบูทคู่โตของคุณเกลียดที่คุณอ่านใจของฉันออก
ฉันเกลียดคุณมาก มันทำให้ฉันรู้สึกแย่ทำให้ฉันแต่งกลอนอีกตะหาก
ฉันเกลียดที่คุณมักถูกเสมอเกลียดที่เวลาที่คุณโกหก
เกลียดเวลาที่คุณทำให้ฉันหัวเราะที่แย่ที่สุด คือเวลาคุณที่ทำให้ฉันร้องไห้
เกลียดที่คุณไม่อยู่ข้างๆและความจริงที่ว่า.. คุณไม่ได้โทรมา
แต่ที่เกลียดที่สุดคือ ฉันไม่ได้เกลียดคุณเลยไม่แม้เกือบจะเกลียด ไม่แม้แต่นิดเดียว...ไม่เลย..
- 10 Things I Hate About You

ที่เราต้องเจ็บปวดกับความรักนะ ไม่ใช่เพราะมันจากไปหรอก
แต่เพราะมันยังคงอยู่ต่างหาก
ถ้าวันนี้คนสองคน ต่างหมดรักกันไป
คงไม่มีใครต้องเสียใจมากนัก
แต่กลับเป็นเพราะรักที่ยังอยู่ในใจคุณนั่นเอง
ที่ทำให้คุณปล่อยวางลงไม่ได้
ธรรมชาติของรัก มักไม่ให้โทษแก่ใคร
...มีวันที่รักมา ก็อาจมีวันที่รักไปได้ ความรักเป็นสิ่งสวยงาม
หลายคนจึงอดหลงใหลได้ปลื้มกับมันไม่ได้ในยามที่มันอยู่
เรามักหลอกตัวเองว่า เพราะเรารักเขามาก เขาคงเห็นความดีความตั้งใจของเรา
และรักเราตอบบ้าง ไม่มากก็น้อย และเมื่อเขาตอบรับรักของเรา
มักทำให้เราก้าวล่วงไปถึงการรู้สึกยึดมั่น
ว่าเขาเป็นส่วนหนึ่งของเรา เป็นเหมือนทรัพย์สินส่วนตัวทางใจอย่างหนึ่ง
ที่จะต้องอยู่กับเราทุกครั้งที่เราต้องการ นานเท่าที่เราปรารถนา
- IL Mare
Every night I cut out my heart. But in the morning it was full again.
ทุกคืนหัวใจฉันหยุดทำงาน แต่มันจะเริ่มอีกครั้งในตอนเช้า
- The English Patient
We don't throw a whole life away just 'cause it's banged up a little bit.
เราคงไม่ทิ้งชีวิตทั้งชีวิต เพียงเพราะมันบาดเจ็บนิดหน่อยหรอกนะ
- Seabiscuit
ไม่มีคำว่าสมบูรณ์แบบสำหรับความรัก แต่ความรักไม่มีเงื่อนไขและการร้องขอ จะเป็นรักที่อยู่ได้โดยบริบูรณ์
- A home at the end of theworld
The only wrong thing would be to deny what your heart truly feels
สิ่งที่ผิดพลาดเพียงสิ่งเดียวคือการไม่ทำตามที่หัวใจเรียกร้อง
- the mask of zorro

You will see a lot of things, but they will mean nothing to you If you lose sight of the thing you love.
คุณจะเห็นสิ่งต่างๆ มากมาย แต่นั่นจะไม่มีความหมายใดๆ เลย ถ้าหากว่าคุณไม่ได้มองเห็นสิ่งที่คุณรัก
- at first sight

If you love someone you say it, you say it right then, out loud, or the moment just passes you by.
ถ้าคุณรักใครสักคน จงพูดมันออกมา ตะโกนมันออกมาดังๆ หรือจะปล่อยให้เวลานั้นมันผ่านพ้นไปเฉยๆ
>เรามักเห็นคุณค่าของบางสิ่ง เมื่อเราต้องสูญเสียสิ่งนั้นไปจากตัว- my best friend's wedding

I would rather have had One breath of her hair, one kiss from her mouth, one touch of her hand, than eternity without it. One!
ผม ขอเพียงแค่..ได้สูดกลิ่นจาผมของคุณแค่เพียงครั้ง ได้สัมผัสรสจูบจากปากของคุณ ได้สัมผัสไออุ่นจากมือของคุณ แค่เพียงครั้งเดียว มากกว่าที่จะอยู่ได้เป็นอมตะ
- city of angels

When you realize you want to spend the rest of your life with somebody, you want the rest of your life to start as soon as possible.
เมื่อคุณเชื่อว่าคุณจะอยู่กับใครสักคนจนถึงวาระสุดท้ายของชีวิต คุณก็อยากให้เวลานั้นมันมาถึงเร็วๆ จริงๆสักที
- when harry met sally

There is a place you can touch a woman that will drive her crazy. Her heart.
มีที่อยู่ที่หนึ่ง ที่คุณสามารถทำให้ผู้หญิงคนหนึ่ง คลั่งใคล้หลงไหลได้ นั่นคือ หัวใจของเธอ
- milk money

You will be doing anything for the one you love. Except love them again.
คุณสามารถทำอะไรก็ได้เพื่อคนที่คุณรัก ยกเว้นอยู่อย่างเดียวคือรักเธออีกครั้ง
- faithful

I love you without knowing how, why, or even from where
ผมรักคุณโดยไม่ต้องรู้ว่ารักยังไง รักทำไม หรือรักที่ไหน
- Patch
Adams


A life without love, is no life at all
ชีวิตที่อยู่โดยไม่มีความรัก มันก็เหมือนกับการไม่มีชีวิตอยู่ - ever after
You cannot find true love where it does not truly exist and you cannot hide it where it truly does
คุณไม่สามารถค้นหารักแท้นั้นได้ หากรักนั้นไม่มีอยู่จริง และคุณไม่สามารถปิดบังรักนั้นได้ หากมันมีอยู่จริง
- kissing a fool

How come we don't always know when love begins, but we always know when it ends?
ทำไมเราไม่เคยรู้เลยว่ารักมันเริ่มต้นเมื่อไหร่แต่เราจะรู้เสมอว่ารักมันจบลงเมื่อไหร่
- LA story

Will you love me for the rest of my life? No, I'll love you for the rest of mine.
- phenomenon

You'll always know when the right person walks into your life.
คุณจะรู้ได้ทันทีเลยว่า ใครคือตัวจริงที่เขาก้าวเข้ามาในชีวิตของคุณ
- the butcher's wife

If he's the right man for you, you can't just let him slip on by.
ถ้าเขาใช่ อย่าปล่อย "มัน" ให้ผ่านไป
- the butcher's wife

Fate exists but it can only take you so far, because once you're there. It's up to you to make it happen.
ชะตาชีวิตน่ะ มันมีอยู่แล้ว แต่ว่ามันพาคุณไปได้ไม่ไกลหรอก เพราะชีวิตของคุณขึ้นอยู่กับการตัดสินใจของคุณเอง
- can't hardly wait
Love won't obey our expectations, Its mystery is pure and absolute.
- bridges of
Madison country

The only feeling of real loss is when you love someone more than you love your self.
คุณจะรู้สึกสูญเสียจริงๆ ก็ต่อเมื่อคุณสูญเสียใครสักคน ที่คุณรักมากกว่ารักตัวคุณเอง
- Good will hunting
แม้ว่าฉันตายโดยปราศจากคนที่รักฉัน แต่ฉันก็ดีใจที่ฉันตายโดยมีคนที่ฉันรัก
- ข้างหลังภาพ
When she open up listen with your heart.
เมื่อเธอเปิดใจพูด จงเปิดหัวใจคุณรับฟังด้วย
- You're Got Mail

The Greateat thing you'll ever learn . Just to love and to love in Return
สิ่งที่ดีที่สุดที่คุณเคยเรียนรู้ คือรักและรักอีกครั้ง
- Moulin Rouge
Never let the fear striking out keep you from playing the game.
- A Cinderella Story
Love is always patient and kind. It is never jealous. Love is never boastful nor conceited. It is never rude or selfish.
It does not take offense and is not resentful. Love takes no pleasure in other people's sins ... but delights in the truth.
It is always ready to excuse, to trust, to hope ... and to endure ... whatever comes.
"ความ รักคือความอดทนและมีน้ำใจ ไม่ใช่ความหึงหวง ความรักไม่ใช่สิ่งโอ้อวดและทรนง ความรักไม่หยาบคายหรือเห็นแก่ตัว ไม่ทัดทานและไม่ขุ่นเคือง ความรักไม่ใช่ความเพลิดเพลินในบาป ... แต่พึงใจในความเป็นจริง ความรักพร้อมจะยกโทษ, เชื่อใจ, มีความหวัง และหมั่นทะนุถนอม ... ไม่ว่าจะเกิดอะไรขึ้น
- N/A

Love is like the wind ... you can't see it ... but you can feel it.
ความรักเปรียบเหมือนกับสายลม ... แม้คุณจะมองไม่เห็นมัน ... แต่คุณรู้สึกถึงมันได้
- A walk to remember
May the force be with you
ขอพลังจงสถิตย์อยู่กับท่าน
- Star wars
The Great power come great responsibility
พลังที่ยิ่งใหญ่มาพร้อมกับภาระอันใหญ่ยิ่ง
- Spider - man 1-2
When you know people, you willsee what's coming
เมื่อคุณได้รู้จักใครสักคน คุณจะมองเห็นอนาคตของเขา
- Spider - man 1
What makes a man is a man? It's an origin. The way comes of life. I don't think so. It's a choice is he makes. Not howis starting, but hoe is decide the end.
อะไรที่ทำให้คนเป็นมนุษย์? ชาติ กำเนิดงั้นหรือ ที่มาของชีวิต ฉันไม่คิดว่างั้น มันคือสิ่งที่เขาเลือกจะทำมากกว่า ไม่ใช่ว่าเริ่มอย่างไร แต่อยู่ที่ว่าเขาเลือกที่จะจบแบบไหน
- Hellboy
People makes mistake. You should forgive.
คนทุกคนสามารถผิดพลาดกันได้ คุณควรที่จะยอมให้อภัย
- Step Mom

I'm a parent. I haven't got the luxury of principles.
ผมเป็นพ่อ สามัญสำนึกไม่เลิศเลอหรอก
- The Patriot
To have memoriesof those youlove and lost is, perhaps harder than no memories at all.
มีความจำให้รักให้ลืม บางทีอาจจะดีกว่าไม่มีความจำอะไรเลย
-Van Helsing
Before you ask someone to save the world, you'd better make sure they like it the way it is
ก่อนที่คุณจะจะขอให้ใครปกป้องโลก คุณควรแน่ใจก่อนว่าเขาชอบโลกที่เป็นอยู่รึเปล่า
- XXX
Extreames sometimes meet
บุคคลที่แตกต่างที่สุด บางครั้งก็มาพบกันได้
- Nothing Hill
That's what a ship is, you know. It's not just a keel, and a hull, and a deck, and the sails, that what the ship needs. But what a ship is, what the Black Pearl really is, is freedom.
สิ่ง ที่เรือสักลำเป็น มันไม่ใช่แค่กระดูกงูเรือ ลำเรือ องค์ประกอบอื่นหรือใบเรือที่ประกอบกันเป็นเรือลำหนึ่งเท่านั้น แต่สิ่งที่เรือลำหนึ่งเป็น ที่เรือแบล็คเพิร์ล (ไข่มุกดำ) เป็นจริงๆ คือ อิสรภาพต่างหาก
- The Pirate of the Caribbean : The cruse of the Black Pearl
All men die, my friend. But Allah say it is what we do before we die that counts.
ทุกคนต้องตายทั้งนั้น แต่สิ่งที่เราทำก่อนตายสิ...สำคัญ
- Vertical Limit
It's love that hurts. But it's hurt that tells you are still alive.
ความรักทำให้คนเจ็บปวด แต่ความเจ็บปวดนั่นแหละคือสิ่งที่บอกคุณว่ายังมีชีวิตอยู่
- Body shots
The only wrong thing would be to deny, what your heart truly fells.
สิ่งผิดพลาดเดียว คือ ปฏิเสธที่หัวใจคุณรู้สึกอย่างแท้จริง
- The Mask of zorro.
ทำไมลูกถึงล้มรู้ไหม เพื่อจะได้รู้ว่าจะลุกขึ้นมาได้ยังไงล่ะ
- Batman Begins
บ้านฆ่าคนไม่ได้หรอก คนต่างหากที่ฆ่ากันเอง
- The Amityville Horror
นาฬิกาที่ดีที่สุดควรอยู่กับคนขายนาฬิกา
- มหา'ลัยเหมืองแร่
You cant just turn back time...I moved on. You moved on. Weve gone down different paths for so long . We made choices
แม้ ทุกวันนี้เขาจะยังรักเธอเหมือนที่ผ่านมามากเพียงใดเขาก็ไม่สามารถไปกับเธอ ได้เพราะเขาเองก็มีตัวตนของเขาแล้ว ตัวตนของเขาที่มีงานของตัวเอง มีคู่หมั้นที่รักและเข้าใจรอคอย มีครอบครัวคู่หมั้นที่ดีกับเขา เขาเลือกชีวิตและเส้นทางตัวเองแล้ว
> คุณไม่อาจย้อนเวลากลับได้หรอก คุณเลือกแล้ว ผมเลือกแล้ว เราเลือกทางที่แตกต่างกันมานานแล้ว และเราก็เป็นคนเลือกเส้นทางนี้เอง
- 13 going on 30

วันอาทิตย์ที่ 9 มกราคม พ.ศ. 2554

ตอนที่ 1

การติดตั้งและปรับแต่ง Linux server ให้เป็น Wireless LAN Access Point Controller ด้วยโปรแกรม chillispot ตอนที่ 1
  • การติดตั้ง Linux server
  • การติดตั้งโปรแกรม Apache web server
  • การติดตั้งโปรแกรม Freeradius
  • ทดสอบ authentication โดยใช้ username/password ของ Unix
  • การติดตั้งโปรแกรม Chillispot แบบ Web login

1.1 การติดตั้ง Linux server


คำแนะนำการติดตั้ง

  • ในขั้นตอนที่ติดตั้งจากแผ่นซีดี ให้เลือก Package selection เป็น Software Development
  • ในขั้นตอนที่ติดตั้งจากแผ่นซีดีครบแล้ว เมื่อรีบูตกลับมาให้ปิด SeLinux โดยเปลี่ยนจาก enforcing เป็น disabled

คำแนะนำการใช้งาน

  • การคอนฟิกระบบจะง่ายขึ้น ให้ใช้วิธีการ copy และ paste คำสั่งหรือข้อความจากเอกสารที่กำลังอ่านอยู่นี้
    หากภายหลังการติดตั้งได้รับหน้าจอเป็น text mode ให้เปลี่ยนเป็นกราฟฟิคโหมด ด้วยคำสั่ง startx
  • เปิดวินโดวชื่อ terminal เพื่อใช้ในการปรับแต่งและรันคำสั่ง ดังนี้ คลิก Application, Accessories, Terminal
  • โปรแกรม editor ที่ใช้ในการแก้ไขค่าคือ gedit เป็น full screen editor ใช้เมาส์คลิกวางตำแหน่ง cursor ได้
    จบด้วยคลิกปุ่ม Save และคลิก X เพื่อปิดโปรแกรม

1.1.1 การปรับแต่งระบบลินุกซ์


(ดัดแปลงจาก การปรับแต่งระบบลินุกซ์หลังการติดตั้ง (28-9-2550) วิภัทร ศรุติพรหม http://rd.cc.psu.ac.th/content/view/14/46/ )

1. ตรวจสอบการ์ดแลนพร้อมใช้งานด้วยคำสั่ง
ifconfig -a

ผลลัพธ์

[root@dhcp160 ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:60:97:A5:38:6F
inet addr:192.168.2.220 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: 2001:3c8:9009:300:260:97ff:fea5:386f/64 Scope:Global
inet6 addr: fe80::260:97ff:fea5:386f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:126 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9430 (9.2 KiB) TX bytes:8450 (8.2 KiB)
Interrupt:9 Base address:0x2080

eth1 Link encap:Ethernet HWaddr 00:01:03:18:BA:59
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:431699 errors:0 dropped:0 overruns:520 frame:0
TX packets:858 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:32878596 (31.3 MiB) TX bytes:88551 (86.4 KiB)
Interrupt:5

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:34660 errors:0 dropped:0 overruns:0 frame:0
TX packets:34660 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9917351 (9.4 MiB) TX bytes:9917351 (9.4 MiB)



2. หากต้องการเปลี่ยนรหัสผ่านของ root ทำด้วยคำสั่ง
passwd

ผลลัพธ์

[root@dhcp160 ~]# passwd
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.


3. ยกเลิกการตั้งค่า update อัตโนมัติ ด้วยคำสั่งดังนี้คือ

service yum-updatesd stop
chkconfig yum-updatesd off

ผลลัพธ์

[root@dhcp160 ~]# service yum-updatesd stop
Stopping yum-updatesd: [ OK ]
[root@dhcp160 ~]# chkconfig yum-updatesd off
[root@dhcp160 ~]#


4. ตั้งเวลาให้ตรงกับสากลด้วยคำสั่ง /usr/sbin/ntpdate -u <ชื่อเซิร์ฟเวอร์>
โดยที่
pool.ntp.org เป็น ntp server ที่เป็นสากลโดยตรง
time.psu.ac.th เป็น ntp server ภายใน ม.อ.
ใช้คำสั่ง
/usr/sbin/ntpdate -u pool.ntp.org

ผลลัพธ์

[root@dhcp160 ~]# /usr/sbin/ntpdate -u pool.ntp.org
27 Nov 17:20:45 ntpdate[22639]: step time server 61.19.242.42 offset -130.874347 sec


ต้องการให้ทุกครั้งที่บูทเครื่องมีการตั้งเวลาใหม่ ให้แก้ไขแฟ้ม /etc/rc.local ใช้คำสั่ง
gedit /etc/rc.local

เพิ่มบรรทัดข้อความว่า
/usr/sbin/ntpdate -u pool.ntp.org

บันทึกและปิดหน้าต่าง gedit

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/sbin/ntpdate -u pool.ntp.org


ตั้งเวลาให้ตรงกับสากลทุกวัน ให้สร้างแฟ้มข้อมูลชื่อ /etc/cron.daily/ntp.cron ใช้คำสั่ง
gedit /etc/cron.daily/ntp.cron

มีข้อมูลดังนี้
#!/bin/sh
/usr/sbin/ntpdate -u pool.ntp.org

และเปลี่ยนโหมดของแฟ้มเป็น execute ด้วยคำสั่ง
chmod +x /etc/cron.daily/ntp.cron

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/cron.daily/ntp.cron

#!/bin/sh
/usr/sbin/ntpdate -u pool.ntp.org

[root@dhcp160 ~]# chmod +x /etc/cron.daily/ntp.cron
[root@dhcp160 ~]#


5. เกี่ยวกับ SeLinux อาจทำให้การใช้งานบางอย่างยากขึ้น ให้เปลี่ยนจาก enforcing เป็น disabled โดยแก้ไขแฟ้ม /etc/selinux/config ใช้คำสั่ง
gedit /etc/selinux/config

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced. (default)
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted


1.1.2 การ update packages linux fedora core 6 ให้ทันสมัย


(ดัดแปลงจาก การ update packages ด้วยโปรแกรม Yum สำหรับมหาวิทยาลัยสงขลานครินทร์ (01-03-2550)
วิภัทร ศรุตพรหม http://rd.cc.psu.ac.th/content/view/52/46/)

กรณีที่เครื่องอยู่ในมหาวิทยาลัยสงขลานครินทร์

แก้ไขให้ชี้ update server มาอยู่ที่ repository server ที่ตั้งอยู่ภายในมหาวิทยาลัย ด้วยวิธีการคือ
ลบข้อมูลเดิมใน cache ทิ้งก่อนด้วยคำสั่ง
rm -rf /var/cache/yum/*

สำรองต้นฉบับ yum.repos.d เก็บไว้ก่อน เผื่อใช้ในอนาคต
cp -r /etc/yum.repos.d/ /etc/yum.repos.d.save

ลบแฟ้มใน 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

ผลลัพธ์

[root@dhcp160 ~]# rm -rf /var/cache/yum/*
[root@dhcp160 ~]# cp -r /etc/yum.repos.d/ /etc/yum.repos.d.save
[root@dhcp160 ~]# rm -f /etc/yum.repos.d/*

[root@dhcp160 ~]# gedit /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

[root@dhcp160 ~]# gedit /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

[root@dhcp160 ~]# gedit /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


กรณีที่เครื่องตั้งอยู่นอกมหาวิทยาลัยสงขลานครินทร์

ให้เริ่มทำเฉพาะ 2 คำสั่งข้างล่างนี้เลย

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

สั่งปรับปรุง/ติดตั้ง package ให้ทันสมัย
yum update

ผลลัพธ์

[root@dhcp160 ~]# yum check-update
Loading "installonlyn" plugin
Setting up repositories
extras 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 1.2 kB 00:00
base 100% |=========================| 951 B 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 1.7 MB 00:00
...

[root@dhcp160 ~]# yum update
Loading "installonlyn" plugin
Setting up Update Process
Setting up repositories
Reading repository metadata in from local files

Transaction Summary
==============================================
Install 11 Package(s)
Update 329 Package(s)
Remove 0 Package(s)

Total download size: 524 M
Is this ok [y/N]:y
... more lines...
[root@dhcp160 ~]#

1.2 การติดตั้งโปรแกรม Apache web server


ชื่อแฟ้มที่เกี่ยวข้องเมื่อติดตั้งเสร็จแล้ว
/var/log/httpd/access.log
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/

1. ติดตั้งโปรแกรม httpd พร้อมคู่มือ ด้วยคำสั่ง
yum install httpd
yum install httpd-manual
yum install mod_ssl

ผลลัพธ์

[root@dhcp160 ~]# yum install httpd
=============================================
Package Arch Version Repository Size
=============================================
Updating:
httpd i386 2.2.6-1.fc6 updates 1.0 M

Transaction Summary
=============================================
...
Complete!
[root@dhcp160 ~]# yum install httpd-manual
=============================================

Package Arch Version Repository Size
=============================================
Installing:
httpd-manual i386 2.2.6-1.fc6 updates 812 k

Transaction Summary
==============================================
...
Complete!
[root@dhcp160 ~]# yum install mod_ssl
==============================================
Package Arch Version Repository Size
==============================================
Installing:
mod_ssl i386 1:2.2.6-1.fc6 updates 84 k
Installing for dependencies:
distcache i386 1.4.5-14.1 base 120 k

Transaction Summary
==============================================

...
Complete!
[root@dhcp160 ~]#


2. แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig httpd on

ผลลัพธ์

[root@dhcp160 ~]# chkconfig httpd on
[root@dhcp160 ~]#


3. สั่งให้ทำงานด้วยคำสั่งว่า
service httpd start

ผลลัพธ์

[root@dhcp160 ~]# service httpd start
Starting httpd: [ OK ]
[root@dhcp160 ~]#

1.3 การติดตั้งโปรแกรม Freeradius


ชื่อแฟ้มที่เกี่ยวข้องเมื่อติดตั้งเสร็จแล้ว
/var/log/radius/radius.log
/etc/raddb/radiusd.conf
/etc/raddb/clients.conf

1. ติดตั้งโปรแกรม freeradius ด้วยคำสั่ง
yum install freeradius

แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig radiusd on

สั่งให้ทำงานด้วยคำสั่งว่า
service radiusd start

ผลล้ัพธ์

[root@dhcp160 ~]# yum install freeradius
=============================================

Package Arch Version Repository Size
=============================================
Installing:
freeradius i386 1.1.7-3.1.fc6 updates 1.2 M
Installing for dependencies:
lm_sensors i386 2.10.1-1.fc6 updates 506 k
net-snmp i386 1:5.3.1-15.fc6 updates 695 k
net-snmp-utils i386 1:5.3.1-15.fc6 updates 179 k
perl-DBI i386 1.52-1.fc6 base 605 k

Transaction Summary
=============================================
Install 5 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 3.1 M
Is this ok [y/N]: y
Downloading Packages:
...
Complete!
[root@dhcp160 ~]# chkconfig radiusd on
[root@dhcp160 ~]# service radiusd start
radiusd is stopped
Starting RADIUS server: [ OK ]
[root@dhcp160 ~]#

1.4 ทดสอบ authentication โดยใช้ username/password ของ Unix


1. (หากยังไม่มี) ให้เตรียม username ที่จะใช้ทดสอบชื่อ chilli มีรหัสผ่านเป็น abcd1234 ด้วยคำสั่งดังนี้
adduser chilli
passwd chilli

ผลลัพธ์

[root@dhcp160 ~]# adduser chilli
[root@dhcp160 ~]# passwd chilli
Changing password for user chilli.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@dhcp160 ~]#


2. เมื่อให้ radiusd ทำงานแล้ว เริ่มขั้นตอนทดสอบระบบโดยป้อนตัวอย่างคำสั่งดังนี้
radtest chilli abcd1234 localhost 0 testing123

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

ผลลัพธ์

[root@dhcp160 ~]# radtest chilli abcd1234 localhost 0 testing123
Sending Access-Request of id 232 to 127.0.0.1 port 1812
User-Name = "chilli"
User-Password = "abcd1234"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
Re-sending Access-Request of id 232 to 127.0.0.1 port 1812
User-Name = "chilli"
User-Password = "abcd1234"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=232, length=20
[root@dhcp160 ~]#


หมายเหตุ คำว่า localhost คือ ชื่อโดเมนของไอพีแอดเดรส 127.0.0.1 ก็คือ ตัวเครื่องเซิร์ฟเวอร์เอง
ซึ่งต้องมีระบุไว้ในแฟ้ม /etc/hosts ใช้คำสั่งดูข้อมูลข้างในแฟ้มดังนี้
cat /etc/hosts

[root@dhcp160 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
[root@dhcp160 ~]#


3. แก้ไขให้อ่านแฟ้ม /etc/shadow ได้ โดยแก้ไขแฟ้ม /etc/raddb/radiusd.conf
3.1 ให้ทำการสำรองแฟ้มต้นฉบับเก็บไว้ก่อน ด้วยคำสั่ง
cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.save

ผลลัพธ์

[root@dhcp160 ~]# cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.save
[root@dhcp160 ~]#


3.2 แก้ไขแฟ้ม /etc/raddb/radiusd.conf เพื่อทำการ comment ยกเลิกบรรทัดข้อความจากเดิม
user = radiusd
group = radiusd
ให้เป็น
#user = radiusd
#group = radiusd

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/raddb/radiusd.conf

Line 114
#user = radiusd
#group = radiusd


3.3 เสร็จแล้วให้ restart ระบบ radiusd ใหม่ด้วยคำสั่ง
service radiusd restart

ผลลัพธ์

[root@dhcp160 ~]# service radiusd restart
radiusd (pid 23004) is running...
radiusd (pid 23004) is running...
Stopping RADIUS server: [ OK ]
radiusd is stopped
Starting RADIUS server: [ OK ]
[root@dhcp160 ~]#


3.4 ต่อไปลองป้อนตัวอย่างคำสั่งเดิมเพื่อทดสอบดังนี้
radtest chilli abcd1234 localhost 0 testing123

จะมีการแจ้งว่า Access-Accept ถูกต้องตามต้องการ
ผลลัพธ์

[root@dhcp160 ~]# radtest chilli abcd1234 localhost 0 testing123
Sending Access-Request of id 39 to 127.0.0.1 port 1812
User-Name = "chilli"
User-Password = "abcd1234"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=39, length=20
[root@dhcp160 ~]#


3.5 ในการนำไปใช้งานจริง ขอให้แก้ไข secret ใหม่ ตัวอย่างเช่น ตั้งใหม่เป็น mytestkey
ให้แก้ไขแฟ้ม /etc/raddb/clients.conf ของโปรแกรม freeradius ให้มีค่าดังตัวอย่างนี้
client 127.0.0.1 {
...
บรรทัดที่ 35 เดิม secret = testing123
แก้ไขเป็น secret = mytestkey
...
}
เสร็จแล้วให้ restart ระบบ radiusd ใหม่ด้วยคำสั่ง
service radiusd restart
ทดสอบ radius อีกครั้งด้วย secret อันใหม่ ดังนี้
radtest chilli abcd1234 localhost 0 mytestkey

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/raddb/clients.conf

Line 35
secret = mytestkey

[root@dhcp160 ~]# service radiusd restart
radiusd (pid 23068) is running...
radiusd (pid 23068) is running...
Stopping RADIUS server: [ OK ]
radiusd is stopped
Starting RADIUS server: [ OK ]

[root@dhcp160 ~]# radtest chilli abcd1234 localhost 0 mytestkey
Sending Access-Request of id 166 to 127.0.0.1 port 1812
User-Name = "chilli"
User-Password = "abcd1234"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=166, length=20
[root@dhcp160 ~]#

1.5 การติดตั้งโปรแกรม Chillispot แบบ Web login


ชื่อแฟ้มที่เกี่ยวข้องเมื่อติดตั้งเสร็จแล้ว

/etc/chilli.conf

/var/www/cgi-bin/hotspotlogin.cgi

/var/www/html/welcome.html

/etc/firewall.iptables

-------------------------------------

โปรดตรวจสอบ

เนื่องจาก chillispot จะเป็น dhcp server เอง
กรณีที่นำเครื่องเดิมมาติดตั้ง chillispot เพิ่ม จะต้องเช็คว่าในเครื่อง
ไม่มี
dhcp server รันอยู่ ถ้ามีอยู่ก็หยุดดังนี้
service dhcpd stop
chkconfig dhcpd off

-------------------------------------

1. เราต้องทำให้เครื่องนี้ทำหน้าที่เป็นเราเตอร์เพื่อ forward packet
ทุกครั้งที่รีบูตเครื่อง

ให้แก้ไขแฟ้ม /etc/sysctl.conf ให้มีค่าดังตัวอย่างนี้
บรรทัดที่ 7 เดิม net.ipv4.ip_forward = 0
แก้ไขเป็น net.ipv4.ip_forward = 1

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1


2. เพื่อให้มีผลทันทีในขณะนี้ ให้เครื่อง forward packet
รันคำสั่ง echo "1" > /proc/sys/net/ipv4/ip_forward

ผลลัพธ์

[root@dhcp160 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@dhcp160 ~]#


3. เพื่อให้การ์ดแลน eth1 ไม่รับ dhcp ตอนรีบูตเครื่อง
ให้แก้ไขแฟ้ม /etc/sysconfig/network-scripts/ifcfg-eth1 ให้มีค่าดังตัวอย่างนี้
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/sysconfig/network-scripts/ifcfg-eth1

# 3Com Corporation 3c905C-TX/TX-M [Tornado]
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:01:03:18:BA:59
ONBOOT=yes


4. ดาวน์โหลดโปรแกรม chillispot จากเครื่องเอฟทีพีของม.อ. ด้วยคำสั่ง wget ดังนี้
wget ftp://ftp.psu.ac.th/pub/chillispot/chillispot-1.1.0.i386.rpm

ผลลัพธ์

[root@dhcp160 ~]# wget ftp://ftp.psu.ac.th/pub/chillispot/chillispot-1.1.0.i386.rpm
--20:25:02-- ftp://ftp.psu.ac.th/pub/chillispot/chillispot-1.1.0.i386.rpm
=> `chillispot-1.1.0.i386.rpm'
Resolving ftp.psu.ac.th... 192.168.100.101
Connecting to ftp.psu.ac.th|192.168.100.101|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/chillispot ... done.
==> SIZE chillispot-1.1.0.i386.rpm ... 88761
==> PASV ... done. ==> RETR chillispot-1.1.0.i386.rpm ... done.
Length: 88761 (87K)

100%[=======================================>] 88,761 --.-K/s in 0.04s

20:25:03 (2.00 MB/s) - `chillispot-1.1.0.i386.rpm' saved [88761]
[root@dhcp160 ~]#


หรือดาวน์โหลดจากเว็บต้นฉบับที่ http://www.chillispot.info/download.html

http://www.chillispot.info/download.html
Suitable for Redhat 9, Fedora (FC1, FC2 and FC3 and FC4).
http://www.chillispot.info/download/chillispot-1.1.0.i386.rpm
Or other linux distro.
http://www.chillispot.info/download/chillispot-1.1.0.tar.gz


5. แล้วติดตั้ง package rpm ด้วยคำสั่งดังนี้
rpm -Uvh chillispot-1.1.0.i386.rpm

ผลลัพธ์

[root@dhcp160 ~]# rpm -Uvh chillispot-1.1.0.i386.rpm
Preparing... ########################################### [100%]
1:chillispot ########################################### [100%]
[root@dhcp160 ~]#


6. แก้ไขแฟ้ม /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

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/chilli.conf

Line 38
net 10.0.1.0/24
radiusserver1 127.0.0.1
radiusserver2 127.0.0.1
radiussecret mytestkey
uamserver https://10.0.1.1/cgi-bin/hotspotlogin.cgi
uamhomepage http://10.0.1.1/welcome.html
uamsecret ht2eb8ej6s4et3rg1ulp
uamlisten 10.0.1.1


7. ให้คัดลอกแฟ้ม 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/

ผลลัพธ์

[root@dhcp160 ~]# cp /usr/share/doc/chillispot-1.1.0/firewall.iptables /etc
[root@dhcp160 ~]# cp /usr/share/doc/chillispot-1.1.0/hotspotlogin.cgi /var/www/cgi-bin/
[root@dhcp160 ~]#


8. แก้ไขแฟ้ม /var/www/cgi-bin/hotspotlogin.cgi ให้มีค่าดังตัวอย่างนี้
บรรทัดที่ 27 เดิม #$uamsecret = "ht2eb8ej6s4et3rg1ulp";
แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น $uamsecret = "ht2eb8ej6s4et3rg1ulp";

บรรทัดที่ 31 เดิม #$userpassword=1;
แก้ไขโดยให้เอาเครื่องหมาย# ออก เป็น $userpassword=1;

ผลลัพธ์

[root@dhcp160 ~]# gedit /var/www/cgi-bin/hotspotlogin.cgi

Line 27
$uamsecret = "ht2eb8ej6s4et3rg1ulp";

# Uncomment the following line if you want to use ordinary user-password
# for radius authentication. Must be used together with $uamsecret.
$userpassword=1;


9. สร้างแฟ้ม /var/www/html/welcome.html ให้มีค่าดังตัวอย่างนี้


ผลลัพธ์

[root@dhcp160 ~]# gedit /var/www/html/welcome.html



Welcome to Our Hotspot, Wireless Network.



TESTING ONLY



Welcome to Our Hotspot, Wireless Network.


You are connected to an authentication and restricted network access point.

Click here to login



Enjoy.





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

แล้วคัดลอกแฟ้มนี้ไปไว้ใน /var/www/html ด้วยคำสั่งดังนี้
cp chillispot.png /var/www/html

ผลลัพธ์

[root@dhcp160 ~]# wget http://mamboeasy.psu.ac.th/~wiboon.w/images/stories/
chillispot/chillispot.png

[root@dhcp160 ~]# cp chillispot.png /var/www/html
[root@dhcp160 ~]#


11. ก่อนที่จะสตาร์ท chillispot ให้ไปทำการคอนฟิกแอคเซสพอยน์/ไวร์เลสเราเตอร์ ให้พร้อมใช้งาน โดยทำตามเอกสารของแต่ละรุ่น
ความต้องการคือ ให้ทำ factory defaults แล้วกำหนดให้มันจะต้องรับ dhcp ip จาก chillispot และตัวมันเองจะต้องไม่ทำหน้าที่แจก ip
รวมทั้งควรแก้ไข ESSID ตั้งชื่อใหม่ด้วย เพื่อให้รู้ว่าตัวไหนของเรา ดูตัวอย่างบางรุ่นในเว็บนี้ได้

หมายเหตุ Linksys WRT54GL ที่ผมนำมา upgrade firmware เป็น DD-WRT แล้ว
ผมพบว่า ต้อง Enable DHCP server ให้กับ port LAN 1-4 ของเราเตอร์ด้วย
มันยังคงแจกไอพีให้กับ เครื่องที่ต่อ port LAN 1-4 แต่มันไม่แจกไอพีให้ไวร์เลส

12. เปิดใช้งาน iptables เพื่อทำเป็น firewall ด้วยคำสั่ง
sh /etc/firewall.iptables

ผลลัพธ์

[root@dhcp160 ~]# sh /etc/firewall.iptables
[root@dhcp160 ~]#


13. สั่งให้ chillispot ทำงานด้วยคำสั่ง
service chilli start

ผลลัพธ์

[root@dhcp160 ~]# service chilli start
Starting chilli: [ OK ]


14. ตรวจสอบการทำงานของ chiilispot ว่าสร้างอินเทอร์เฟส tun0 พร้อมใช้งานและมีเลข IP เป็น 10.0.1.1
โดยที่อินเทอร์เฟส eth1 จะไม่มี IP ใด ๆ ส่วน eth0 ก็เป็นเลข IP ที่รับจากเน็ตที่เซิร์ฟเวอร์นี้ต่ออยู่เหมือนเดิม
ด้วยคำสั่ง ifconfig ดังตัวอย่าง

ผลลัพธ์

[root@dhcp160 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:60:97:A5:38:6F
inet addr:192.168.2.220 Bcast:192.168.2.255 Mask:255.255.255.0
...

eth1 Link encap:Ethernet HWaddr 00:01:03:18:BA:59
inet6 addr: fe80::201:3ff:fe18:ba59/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
...

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...

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:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:116 (116.0 b) TX bytes:240 (240.0 b)
[root@dhcp160 ~]#


15. ให้จดเลข Mac address ของโน้ตบุ๊คที่จะนำมาทดสอบการเชื่อมต่อกับ chillispot
และรันคำสั่งตรวจสอบว่าโน้ตบุ๊คได้ IP Address จาก chillispot ดังนี้
tail -f /var/log/messages
จะได้ผลลัพธ์แสดงคล้าย ๆ ตังอย่างข้างล่างนี้

ผลลัพธ์

[root@dhcp160 ~]# tail -f /var/log/messages
Nov 27 20:05:18 dhcp160 Installed: httpd-manual.i386 2.2.6-1.fc6
Nov 27 20:06:54 dhcp160 Installed: distcache.i386 1.4.5-14.1
Nov 27 20:06:57 dhcp160 Installed: mod_ssl.i386 1:2.2.6-1.fc6
Nov 27 20:57:57 dhcp160 chillispot[23328]: ChilliSpot 1.1.0.
Copyright 2002-2005 Mondru AB. Licensed under GPL.
See http://www.chillispot.org for credits.
Nov 27 20:57:57 dhcp160 kernel: tun: Universal TUN/TAP device driver, 1.6
Nov 27 20:57:57 dhcp160 kernel: tun: (C) 1999-2004 Max Krasnyansky <

maxk@qualcomm.com

This email address is being protected from spam bots, you need Javascript enabled to view it

>
Nov 27 20:57:57 dhcp160 kernel: ADDRCONF(NETDEV_CHANGE): tun0: link becomes ready
Nov 27 20:57:57 dhcp160 kernel: eth1: setting full-duplex.
Nov 27 20:58:00 dhcp160 chillispot[23328]: chilli.c: 3509:
New DHCP request from MAC=00-1D-7E-27-C3-18
Nov 27 20:58:00 dhcp160 chillispot[23328]: chilli.c: 3479:
Client MAC=00-1D-7E-27-C3-18 assigned IP 10.0.1.2
Nov 27 21:16:55 dhcp160 chillispot[23328]: chilli.c: 3509:
New DHCP request from MAC=00-13-02-69-41-FA
Nov 27 21:16:55 dhcp160 chillispot[23328]: chilli.c: 3479:
Client MAC=00-13-02-69-41-FA assigned IP 10.0.1.3
Nov 27 21:20:32 dhcp160 chillispot[23328]: chilli.c: 3759:
Successful UAM login from username=chilli IP=10.0.1.3
Ctrl-C break


โดยที่ 10.0.1.2 จะเป็น IP ของแอคเซสพอยน์ และ 10.0.1.3 จะเป็น IP ของโน้ตบุ๊คตัวแรกที่เชื่อมต่อ

16. เริ่มขั้นตอนทดสอบระบบที่เครื่องโน้ตบุคดังนี้
เริ่มทำการคอนเนค W-IFI
คลิกที่นี่เพื่อดูรูป

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

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

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

เมื่อ login เข้าได้สำเร็จจะมีหน้าต่าง logged in พร้อมเวลาเริ่มนับ และเอาไว้ใช้สำหรับ logout
คลิกที่นี่เพื่อดูรูป

17. แก้ไขแฟ้ม /etc/rc.local เพื่อให้ firewall.iptables และ chilli มีผลทำงานด้วยเมื่อรีบูตเครื่องใหม่
เพิ่มบรรทัด 2 บรรทัดนี้ต่อท้าย
sh /etc/firewall.iptables
service chilli start

ผลลัพธ์

[root@dhcp160 ~]# gedit /etc/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/sbin/ntpdate -u pool.ntp.org
sh /etc/firewall.iptables
service chilli start


18. รีบูตเครื่องเซิร์ฟเวอร์ 1 ครั้ง

19. ถึงขั้นตอนนี้เป็นอันเปิดใช้ระบบ chillispot แบบ web login ได้แล้ว