วันพฤหัสบดีที่ 6 กุมภาพันธ์ พ.ศ. 2557

VoIP คืออะไร

VoIP คืออะไร

     VoIP ย่อมาจาก Voice over Internet Protocol คือการสื่อสารทางเสียงผ่านอินเทอร์เน็ต เป็นเทคโนโลยีใหม่สำหรับการโทรศัพท์ผ่านทางเครือข่าย Internet  ซึ่งมีข้อดีอันดับแรก ๆ ที่เห็นได้ชัดก็คือ  ช่วยลดค่าใช้จ่ายในการโทรได้ ไม่ว่าจะเป็นการโทรภายในประเทศ  หรือการโทรระหว่างประเทศก็ตาม เพราะการโทรศัพท์ผ่านทางระบบ Internet นั้นไม่จำเป็นที่จะต้องทำงานผ่านทางชุมสายโทรศัพท์  ซึ่งจะมีค่าใช้จ่ายของส่วนที่ให้บริการด้วย
     VoIP นั้นเป็นการประยุกต์การส่งข้อมูลผ่าน Internet มาใช้งาน  ซึ่งโดยปกติการใช้งาน Internet   จะเป็นการใช้สัญญาณข้อมูลเพียงอย่างเดียว  แต่สำหรับการใช้งาน VoIP นั้นจะเป็นการนำเอาสัญญาณเสียงมารวมเข้ากับสัญญาณข้อมูล เพื่อส่งผ่านไปยังระบบเครือข่ายผ่านทาง Protocol l ที่ใช้สำหรับอินเทอร์เน็ตก็คือ  Internet Protocol  หรือที่เรียกกันทั่วไปว่า IP  ซึ่งตามปกตินั้น IP  จะใช้สัญญาณข้อมูลเท่านั้น แต่ด้วยเทคโนโลยี VoIP  ที่ทำให้ส่งสัญญาณเสียงได้ ตัวอย่างผู้ให้บริการ VoIP ในประเทศไทย เช่น บริษัท แอดวานซ์ เทเลโฟน แอนด์ เทเลคอมมูนิเคชั่น จำกัด
การใช้เทคโนโลยี VoIP รูปแบบต่าง
1. คอมพิวเตอร์ส่วนบุคคล ไปยัง คอมพิวเตอร์ส่วนบุคคล ( PC to PC )
2. คอมพิวเตอร์ส่วนบุคคล ไปยัง โทรศัพท์พื้นฐาน ( PC to Phone )
3.จากเครื่องโทรศัพท์สู่เครื่องคอมพิวเตอร์ (Phone-to-PC)
4. โทรศัพท์กับโทรศัพท์ ( Telephony )
ประโยชน์ที่ได้รับ จาก VoIP
1.ลดค่าใช้จ่าย
2.เพิ่มความยืดหยุ่นในการติดต่อสื่อสาร
3.จัดการระบบเครือข่ายได้ง่ายขึ้น เนื่องจากเครือข่ายการติดต่อสื่อสารทั้งหมด สามารถยุบรวมกันให้เหลือเพียงเครือข่ายเดียวได้ อีกทั้งในกรณีที่มีการโยกย้ายของหน่วยงานหรือพนักงาน การจัดการด้านหมายเลขโทรศัพท์และอื่นๆ สามารถทำได้โดยไม่จำเป็นต้องเดินสายสัญญาณใดๆขึ้นมาใหม่
4.รองรับการขยายตัวของระบบในอนาคต หากในอนาคตองค์กรขยายตัวใหญ่ขึ้น VoIP สามารถรองรับผู้ใช้งานได้เพิ่มมากขึ้นในทันทีโดยการเพิ่ม Virtual User เข้าไปในระบบเท่านั้นเอง
5.ลดค่าใช้จ่ายในการดูแลและจัดการระบบ (Reduce Operating Expenses) เนื่องจากใช้ซอฟต์แวร์ในการจัดการ ทำให้ VoIP นั้นง่ายในการจัดการและบำรุงรักษา
6.เพิ่มประสิทธิภาพการทำงาน (Increase Productivity) พนักงานสามารถส่งเอกสารผ่านเครือข่ายควบคู่ไปกับการสนทนา หรืออาจจัดการประชุมออนไลน์(Conference Call) ทั้งภาพและเสียง และแม้กระทั่งส่งเอกสารการประชุมให้กับผู้เข้าร่วมประชุม ผ่านทางเครือข่ายได้อีกด้วย
7.ใช้ร่วมกับการสื่อสารไร้สายได้ ทำให้อุปกรณ์สื่อสารไร้สายต่างๆ เช่นโทรศัพท์มือถือหรือPDA สามารถติดต่อผ่าน VoIP เข้ามาในเครือข่ายขององค์กรได้
8.เพิ่มประสิทธิภาพในการติดต่อกับลูกค้า (Improved Level of Services) โดยใช้ความสามารถของแอพพลิเคชั่นต่างๆ ของ VoIP เช่น Click-to-talk เพื่อเพิ่มความสะดวกและรวดเร็วในการติดต่อกับลูกค้า

การสื่อสารด้วยระบบ VOIP

การสื่อสารด้วยระบบ VOIP


วิวัฒนาการการสื่อสารผ่านอินเตอร์เน็ต
ในปัจจุปันการใช้อินเทอร์เน็ตมีบทบาทกับชีวิตประจำวันมากขึ้น และใช้งานกันอย่างกว้างขวาง โดยเฉพาะอย่างยิ่งความจำเป็นที่จะต้องติดต่อสื่อสาร อินเตอร์เน็ตจึงได้รับการพัฒนาโครงสร้างพื้นฐานเพื่อรองรับการสื่อสารรูปแบบต่างๆ เช่น การใช้จดหมายอินเล็กทรอนิกส์ การติดต่อด้วยเสียง ระบบ VDO Conference การใช้โทรศัพท์บนเครือข่าย ซึ่งก็มีวิวัฒนาการตามลำดับเบื้องต้นดังนี้ E-mail หรือ จดหมายอิเล็กทรอนิคส์เป็นบริการอย่างหนึ่งที่นิยมใช้กันอย่างแพร่หลายมาก จนทำให้บางคนคิดว่า E-mail คือ อินเตอร์เน็ต และอินเตอร์เน็ตคือ E-mail วิธีใช้งานอีเมลล์ก็ง่ายและมีประโยชน์มาก การทำงานของ E-mail มีลักษณะคล้ายกับระบบไปรษณีย์ปกติ (หมายถึงระบบที่ใช้กระดาษในการเขียนจดหมาย) กล่าวคือในระบบไปรษณีย์ปกติมีหน่วยงานที่ทำหน้าที่ในการรับส่งจดหมายคือเป็นบรุษไปรษณีย์ (ในกรณีของประเทศไทยคือ การสื่อสารแห่งประเทศไทย) ถ้าเป็นในอินเตอร์เน็ตสิ่งที่ทำหน้าที่คอยรับส่งจดหมายคือบรรดาคอมพิวเตอร์ทั้งหลายที่ทำหน้าที่เป็น E-mail Server (คอมพิวเตอร์ที่ทำหน้าที่ให้บริการด้านจดหมายอิเล็กทรอนิคส์) Chat คือ การส่งข้อความสั้นๆ ระหว่างบุคคลที่อยู่หน้าเครื่องคอมพิวเตอร์ในเวลาเดียวกัน และสามารถเขียนโต้ตอบกันไปมาคล้ายกับการคุยกัน ซึ่งก็ได้มีการพัฒนโปรแกรมสำหรับหาร Chat ออกมามากมายที่เป็นที่นิยมและใช้กันอย่างแพร่หลายก็คือ MSN Messenger และสิ่งหนึ่งที่มีการพัฒนาต่อมา คือระบบการสื่อสารด้วยเสียงผ่านเครือข่าย IP ที่เรียกว่า เทคโนโลยี Voice over IP หรือที่รู้จักกันโดยทั่วไปว่า “VoIP” จนสามารถใช้งานได้ดีขึ้น เพื่อให้ได้รับประโยชน์และมีความสะดวกมากที่สุด VoIP ถูกเริ่มต้นใช้งานกันอย่างกว้างขวาง เพื่อให้เครื่องคอมพิวเตอร์ส่วนบุคคลสามารถสนทนา ระหว่างกัน ได้ รวมถึงการสนทนากับโทรศัพท์พื้นฐานอีกด้วยโดยไม่เสียค่าบริการแต่อย่างได และคุณภาพของบริการก็ถูกพัฒนาขึ้นมาเรื่อยๆจนเทียบเท่าระบบ โทรศัพท์พื้นฐาน ซึ่ง VoIP สามารถแบ่งได้เป็น 3 ลักษณะคือ 1. คอมพิวเตอร์ส่วนบุคคล ไปยัง คอมพิวเตอร์ส่วนบุคคล ( PC to PC ) PC มีการติดตั้ง sound card และไมโครโฟน ที่เชื่อมต่ออยู่กับเครือข่าย IP การประยุกต์ใช้ PC และ IP-enabled telephones สามารถสื่อสารกันได้แบบจุดต่อจุด หรือ แบบจุดต่อหลายจุด โดยอาศัย software ทางด้าน IP telephony


2. คอมพิวเตอร์ส่วนบุคคล ไปยัง โทรศัพท์พื้นฐาน ( PC to Phone ) เป็นการเชื่อมเครือข่ายโทรศัพท์เข้ากับ เครือข่าย IP ทำให้โดยอาศัย Voice trunks ที่สนับสนุน voice packet ทำให้สามารถใช้ PC ติดต่อกับ โทรศัพท์ระบบปกติได้


3. โทรศัพท์กับโทรศัพท์ ( Telephony ) เป็นการใช้โทรศัพท์ธรรมดา ติดต่อกับโทรศัพท์ธรรมดา แต่ในกรณีนี้จริงๆแล้วประกอบด้วยขั้นตอนการส่งเสียงบนเครือข่าย Packet ประเภทต่างๆซึ่งทั้งหมดติดต่อกันระหว่างชุมสายโทรศัพท์ (PSTN) การติดต่อกับ PSTN หรือ การใช้โทรศัพท์ร่วมกับเครือข่ายข้อมูลจำเป็นต้องใช้ gateway


เอกสารอ้างอิง
[1] L.R. Rabiner, The impact of voice processing on modern telecommunications, Proceeding of the Speech Communication 17,p 217-226,1995 [2] A.Barberis,C.Casetti,J.C.De Martin,M.Meo, A simulation study of adaptive voice communications on IP networks, Proceeding of the Computer Communication 24,p 757-767,2001 [3] Alcatel Inc. , IP Telephony Design Guide ,Alcatel white paper, April 2003 [4] Voice Over IP Reference Page, Available on http://www.protocols.com/pbook/VoIP.htm( 19 August 2004) [5] Roberto Arcomano berto, VoIP Howto, August 7, 2002, Available on http://www.tldp.org/HOWTO/VoIP-HOWTO.html (19 August 2004) [6] Alan Percy, Senior Sales Engineer, Understanding Latency in IP Telephony, Available on http://www.telephonyworld.com/training/brooktrout/iptel_latency_wp.html (19 August 2004) [7] Asim Karim, Ohio State University , H.323 and Associated Protocols , Available on http://www.cis.ohio-state.edu/~jain/cis788-99/h323/index.html (19 August 2004) [8] ปวีณ เขื่อนแก้ว.2004.”โทรศัพท์บนเครือข่ายอินเตอร์เน็ต (Voice over Internet Protocol ( VoIP )”.ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ [9] กรุงเทพธุรกิจ (กรุงเทพไอที) ฉบับวันที่ 16 สิงหาคม 2544 [10] บริษัท Allied Telesyn [11] การสื่อสารด้วยระบบ Voice-over-IP (VoIP), Available on http://www.voipthailand.com/voip/articles/voip_articles_00002.html

Voice over IP (VoIP) คืออะไร

ก่อนที่เราจะรู้ว่า VoIP คือออะไร สิ่งที่เราควรจะต้องรู้ก่อนก็คือ เครือข่าย IP มีหลักการพื้นฐานอย่างไร แล้วจึงพัฒนาไปเป็น VoIP ได้อย่างไร หลักการพื้นฐานของเครือข่าย IP เครือข่ายไอพี (Internet Protocol) มีพัฒนามาจากรากฐานระบบการสื่อสารแบบ Packet โดยระบบมีการกำหนด Address ที่เรียกว่า IP Address จาก IP Address หนึ่ง ถ้าต้องการส่งข่าวสารไปยังอีก IP Address หนึ่ง ใช้หลักการบรรจุข้อมูลใส่ใน Packet แล้วส่งไปในเครือข่าย ระบบการจัดส่ง Packet กระทำ ด้วยอุปกรณ์สื่อสารจำพวก Router โดยมีหลักพื้นฐานการส่งเป็นแบบ DATAGRAM หรือ Packet ซึ่งมีความหมายว่า "เป็นที่เก็บข้อมูลที่เป็นอิสระ ซึ่งมีสารสนเทศเพียงพอในการเดินทางจากแหล่งข้อมูลไปยังคอมพิวเตอร์ปลายทาง โดยปราศจากความเชื่อมั่นของการเปลี่ยนครั้งก่อน ระหว่างแหล่งข้อมูลกับคอมพิวเตอร์ปลายทาง และเครือข่ายการส่งข้อมูล"


ซึ่งจะเห็นว่าการส่งแบบ Packet เข้าไปในเครือข่ายนั้น จะไม่มีการประกันว่า Packet นั้นจะถึงปลายทางเมื่อไร ดังนั้นรูปแบบของเครือข่ายไอพีจึงไม่เหมาะสมกับการสื่อสารแบบต่อเนื่องเช่น การส่งสัญญาณเสียง หรือวิดีโอ เมื่อเครือข่าย IP กว้างขวางและเชื่อมโยงกันมากขึ้น ความต้องการส่งสัญญาณข้อมูลเสียงที่ได้คุณภาพจึงเกิดขึ้น ก็เลยมีการพัฒนาเป็น VoIP แล้ว Voice over IP (VoIP) คืออะไร VoIP-Voice Over IP หรือที่เรียกกันว่า “VoIP Gateway” หมายถึง การส่งเสียงบนเครือข่ายไอพี เป็นระบบที่แปลงสัญญาณเสียงในรูปของสัญญาณไฟฟ้ามาเปลี่ยนเป็นสัญญาณดิจิตอล คือ นำข้อมูลเสียงมาบีบอัดและบรรจุลงเป็นแพ็กเก็ต ไอพี (IP) แล้วส่งไปโดยมีเราเตอร์ (Router) ที่เป็นตัวรับสัญญาณแพ็กเก็ต และแก้ปัญหาบางอย่างให้ เช่น การบีบอัดสัญญาณเสียง ให้มีขนาดเล็กลง การแก้ปัญหาเมื่อมีบางแพ็กเก็ตสูญหาย หรือได้มาล่าช้า (delay) การสื่อสารผ่านทางเครือข่ายไอพีต้องมีเราเตอร์ (Router) ที่ทำหน้าที่พิเศษเพื่อประกันคุณภาพช่องสัญญาณไอพีนี้ เพื่อให้ข้อมูลไปถึง ปลายทางหรือกลับมาได้อย่างถูกต้อง และอาจมีการให้สิทธิพิเศษก่อนแพ็กเก็ตไอพีอื่น (Quality of Service : QoS) เพื่อการให้บริการที่ทำให้เสียงมีคุณภาพ


นอกจากนั้น Voice over IP (VoIP) ยังเป็นการส่งข้อมูลเสียงแบบ 2 ทางบนระบบเครือข่ายแบบ packet-switched IP network. ซึ่งข้อมูลนี้จะถูกส่งผ่านเครือข่ายอินเตอร์เน็ตสาธารณะ เพื่อสื่อสารระหว่าง VoIP ด้วยกัน โดยที่ยังคงความเป็นส่วนตัวไว้ได้ สำหรับการใช้งานเทคโนโลยี VoIP นั้น จริงๆ แล้วทุกๆ องค์กรสามารถนำเทคโนโลยีนี้มาประยุกต์ใช้งานได้ แต่สำหรับกลุ่มเป้าหมายที่ตรงและน่าจะได้รับประโยชน์จากการนำเทคโนโลยี VoIP มาประยุกต์ใช้งานมากที่สุด ได้แก่... กลุ่มธุรกิจขนาดย่อม หรือ SME (Small/Medium Enterprise) รวมถึงกลุ่ม ISP (Internet Service Provider) ต่างๆ สำหรับกลุ่มธุรกิจ SME อาจจะต้องเป็นกลุ่มที่มีระบบเครือข่ายข้อมูลของตนเองอยู่แล้ว ไม่ว่าจะเป็นเครือข่าย Leased Line, Frame Relay, ISDN หรือแม้กระทั่งเครือข่าย E1/T1 ก็ตาม รวมถึงมีระบบตู้สาขาโทรศัพท์ในการใช้งานด้วย การนำเทคโนโลยี VoIP มาใช้งานนั้นจะทำให้องค์กรลดค่าใช้จ่ายในการใช้งานการสื่อสารสัญญาณเสียงไปได้อย่างมาก และเนื่องด้วยในปัจจุบันการขยายตัวของระบบเครือข่ายสัญญาณข้อมูล หรือ Data Network มีอัตราการเติบโตที่รวดเร็วกว่าการขยายตัวของเครือข่ายสัญญาณเสียงค่อนข้างมาก จึงทำให้มีการนำเทคโนโลยีที่สามารถนำสัญญาณเสียงเหล่านั้นมารวมอยู่บนระบบเครือข่ายของสัญญาณข้อมูลและมีการรับ-ส่งสัญญาณทั้งคู่ได้ในเวลาเดียวกัน เพื่อเป็นการสะดวกและประหยัดค่าใช้จ่าย ไม่ว่าจะเป็นค่าโทรศัพท์ทางไกลต่างจังหวัด หรือรวมถึงค่าโทรศัพท์ทางไกลต่างประเทศด้วยถ้าหากองค์กรนั้นมีสาขาอยู่ในต่างประเทศด้วย สำหรับกลุ่มธุรกิจ ISP นั้นสามารถที่จะนำเทคโนโลยี VoIP นี้มาประยุกต์ใช้งานเพื่อเป็นการเพิ่มโอกาสในธุรกิจของตนเองมากยิ่งขึ้น โดยทาง ISP ต่างๆ นั้นสามารถให้บริการ VoIP เพื่อเป็นบริการเสริมเพิ่มเติมขึ้นมาจากการให้บริการระบบเครือข่าย Internet แบบปกติธรรมดา หรือที่เราเรียกว่า Value Added Services ซึ่งถือว่าเป็นการสร้างความแตกต่างและเพิ่มทางเลือกในการให้บริการกับกลุ่มลูกค้าด้วย
เอกสารอ้างอิง
[1] L.R. Rabiner, The impact of voice processing on modern telecommunications, Proceeding of the Speech Communication 17,p 217-226,1995 [2] A.Barberis,C.Casetti,J.C.De Martin,M.Meo, A simulation study of adaptive voice communications on IP networks, Proceeding of the Computer Communication 24,p 757-767,2001 [3] Alcatel Inc. , IP Telephony Design Guide ,Alcatel white paper, April 2003 [4] Voice Over IP Reference Page, Available on http://www.protocols.com/pbook/VoIP.htm( 19 August 2004) [5] Roberto Arcomano berto, VoIP Howto, August 7, 2002, Available on http://www.tldp.org/HOWTO/VoIP-HOWTO.html (19 August 2004) [6] Alan Percy, Senior Sales Engineer, Understanding Latency in IP Telephony, Available on http://www.telephonyworld.com/training/brooktrout/iptel_latency_wp.html (19 August 2004) [7] Asim Karim, Ohio State University , H.323 and Associated Protocols , Available on http://www.cis.ohio-state.edu/~jain/cis788-99/h323/index.html (19 August 2004) [8] ปวีณ เขื่อนแก้ว.2004.”โทรศัพท์บนเครือข่ายอินเตอร์เน็ต (Voice over Internet Protocol ( VoIP )”.ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่ [9] กรุงเทพธุรกิจ (กรุงเทพไอที) ฉบับวันที่ 16 สิงหาคม 2544 [10] บริษัท Allied Telesyn [11] การสื่อสารด้วยระบบ Voice-over-IP (VoIP), Available on http://www.voipthailand.com/voip/articles/voip_articles_00002.html

เทคโนโลยีและการทำงานของ VoIP

Standard of VoIP Technology สำหรับมาตรฐานที่มีการใช้งานอยู่บนเทคโนโลยี VoIP นั้น โดยทั่วไปจะมีอยู่ 2 มาตรฐานด้วยกัน ได้แก่... มาตรฐาน H.323 และมาตรฐาน SIP มาตรฐานเหล่านี้ เราสามารถเรียกได้อีกอย่างหนึ่งว่า “Call Control Technologies” ซึ่งถือว่าเป็นส่วนประกอบสำคัญสำหรับการนำเทคโนโลยี VoIP มาใช้งาน H.323 Standard สำหรับมาตรฐาน H.323 นั้น จริงๆ แล้วไม่ได้ถูกออกแบบมาให้ใช้งานกับระบบเครือข่ายที่ใช้ Internet Protocol (IP) นอกจากนั้นมาตรฐาน H.323 ยังมีการทำงานที่ค่อนข้างช้า โดยปกติแล้วเราจะเสนอการใช้งานมาตรฐาน H.323 ให้กับลูกค้าก็ต่อเมื่อในระบบเดิมของลูกค้ามีการใช้งานมาตรฐาน H.323 อยู่แล้วเท่านั้น  มาตรฐาน H.323 เป็นมาตรฐานภายใต้ ITU-T (International Telecommunications Union) Standard  ในตอนแรกนั้น มาตรฐาน H.323 ได้ถูกพัฒนาขึ้นมาเพื่อเป็นมาตรฐานสำหรับการทำ Multimedia Conferencing บนระบบเครือข่าย LAN เป็นหลัก แต่มาในตอนหลังจึงถูกพัฒนาให้ครอบคลุมถึงการทำงานกับเทคโนโลยี VoIP ด้วย  มาตรฐาน H.323 สามารถรองรับการทำงานได้ทั้งแบบ Point-to-Point Communications และแบบ Multi-Point Conferences  อุปกรณ์ต่างๆ จากหลากหลายยี่ห้อ หรือหลายๆ Vendors นั้นสามารถที่จะทำงานร่วมกัน (Inter-Operate) ผ่านมาตรฐาน H.323 ได้ SIP (Session Initiation Protocol) Standard มาตรฐาน SIP นั้นถือเป็นมาตรฐานใหม่ในการใช้งานเทคโนโลยี VoIP โดยที่มาตรฐาน SIP นั้น ได้ถูกออกแบบมาให้ใช้งานกับระบบ IP โดยเฉพาะ ซึ่งโดยปกติแล้วเราจะแนะนำให้ลูกค้าใหม่ที่จะมีการใช้งาน VoIP ให้มีการใช้งานอยู่บนมาตรฐาน SIP... มาตรฐาน SIP นั้นเป็นมาตรฐานภายใต้ IETF Standard ซึ่งถูกออกแบบมาสำหรับการเชื่อมต่อ VoIP  มาตรฐาน SIP นั้นจะเป็นมาตรฐาน Application Layer Control Protocol สำหรับการเริ่มต้น (Creating), การปรับเปลี่ยน (Modifying) และการสิ้นสุด (Terminating) ของ Session หรือการติดต่อสื่อสารหนึ่งครั้ง  มาตรฐาน SIP จะมีสถาปัตยกรรมการทำงานคล้ายคลึงการทำงานแบบ Client-Server Protocol เป็นมาตรฐานที่มี Reliability ที่ค่อนข้างสูง

เริ่มต้นเข้าสู่การใช้งาน Asterisk

เริ่มต้นเข้าสู่การใช้งาน Asterisk

ก่อนที่จะเริ่มต้นเข้าสู่การใช้งาน Asterisk เราต้องมาเข้าใจกันก่อนนะครับว่า Asterisk คืออะไร ซึ่งตัว Asterisk ก็เป็นระบบ IP-PBX ซึ่งอยุ่ในกลุ่ม Open source ที่สามารถทำงานได้บน Linux, Mac OS X,Open BSD , FreeBSD ,Sun Solaris ซึ่งทำหน้าที่เป็นตู้สาขาโทรศัพท์ PBX ที่มีคุณสมบัติเทียบเท่ากับตู้สาขาโทรศัพท์ราคาแพง ที่เห็นอยู่ในทุกวันนี้

Asterisk คิดค้นโดย Mark Spencer เมื่อปี 1999 รูปด้านบนก็คือ Mark Spencer

Asterisk คืออะไร

• Asterisk เป็น Open source PBX (www.asterisk.org)
• เป็นซอฟต์แวร์ระบบ IPPBX
ที่สมบูรณ์แบบและมีชื่อเสียงมาก
• รองรับกับระบบปฏิบัติการ Linux , BSD , Mac OS ฯลฯ
• รองรับกับ VoIP Protocols มากที่สุด เช่น H.323 , SIP ,
MGCP , IAX2 , XMPP , ISDN
• รองรับ CODECS หลากหลาย เช่นกัน
– Audio : G.711 , 723 ,729 , GSM , iLBC , Speex
– Video : H.263, H.263+ , H.264(MPEG4)
• มีฟังก์ชั่นของระบบโทรศัพท์ เช่น voicemail ,
conferencing , IVR ซึ่งเป็นมาตรฐานในการใช้งานทั่ว ๆ
ไป
• รองรับกับ Hardware ที่มีความหลากหลาย เช่น Analog
Card , E1 , ISDN
• มีภาษาในการเขียนโปรแกรมเองที่เรียกว่า AEL (Asterisk
Extension Language) เพื่อสั่งงาน
• มีระบบบันทึกการใช้งานโทรศัพท์ (Call Detail Record) :
CDR

รูปโครงสร้างของ Asterisk

ระบบ Asterisk คืออะไร และทำงานอย่างไร

ระบบ Asterisk คืออะไร และทำงานอย่างไร

Asterisk คือ opensource software ที่ทำหน้าที่หลักเป็น Softswitch, IP-PBX หรือที่เรียกว่าตู้ชุมสายโทรศัพท์ระบบ IP ซึ่งมีหน้าที่ในการควบคุมและจัดการบริหาร การเชื่อมต่อ ระหว่างอุปกรณ์โทรศัพท์ผ่านเครื่องข่ายเนทเวอร์ค อีกทั้งยังสามรถเพิ่มเติมประสิทธิ์ภาพและความสามารถในการทำงานได้โดยง่าย

1. Switch (PBX) ตู้ชุมสาย
Asterisk สามารถทำหน้าเป็นอุปกรณ์สลับสายโทรศัพท์ไม่ว่าจะเป็นระบบ IP หรือ hybrid, สามรถทำการตั้งค่าเส้นทางการของการโทรศัพท์โดยตัวเอง, สามารถเพิ่มเติม feature ได้เช่น (ระบบ Voicemail, IVR), รองรับการเชื่อมต่อกับระบบโทรศัพท์พื้นฐานไม่ว่าจะเป็นแบบ analog หรือ digital (ISDN)
2. Gateway
สามารถทำหน้าเป็นอุปกรณ์ที่ใช้ในการเชื่อมต่อระหว่าระบบโทรศัพท์พื้นฐานกับระบบ VoIP เช่นการติดตั้งการ์ดบน Asterisk และ ตั้งค่าให้ ทำงานเป็น Gateway เชื่อมระบบ SIP เข้ากับ ระบบ TDM(PSTN)
3. Feature & Media Server
อีกความสามารถของ Asterisk คือสามารถทำเป็น ระบบตอบรับหรือระบบการประชุมทางโทรศัพท์ เพื่อให้ทำงานเข้ากับระบบโทรศัพท์ที่มีอยู่เดิม ได้อีกด้วย
:ตัวอย่างการ implementation
-สามารถทำเป็น IVR หรือระบบตอบรับ ให้กับตู้ชุมสาย (pabx) เดิมที่ไม่มีระบบตอบรับ
-เชื่อมเข้ากับระบบ Database เพื่อให้ asterisk ทำหน้าที่เหมือนเป็น operator ในการรับสายและตอบคำถามตามที่ลูกค้าต้องการโดยอัตโนมัติ
-ทำเป็น Voice Conference server เพื่อรับการประชุมทางเสียง จากหลายๆจุด
-ระบบ Voice Recognition ทำงานร่วมกับ software ภายนอกเพื่อทำให้ asterisk สามารถที่จะ ตอบโต้กับผู้ใช้งานทางเสียงโดยอัตโนมัติ
-Paging server ทำงานเป็นอุปกรณ์ควบคุมระบบกระจายเสียง PA system

4. Call Center
รองรับการทำงานของระบบ Call-Center อย่างเต็มรูปแบบ เช่น ACD, Queue, IVR, Skill-based routing, etc.
5. Media Conversion
รองรับการทำงานในการแปลงข้อมูลเสียงจาก codec ไปเป็นอีก codec ในกรณีนี้ asterisk จะทำหน้าที่เป็นตัวกลางในการแปลงข้อมูลเสียง

จุดดีและจุดด้อยของ Asterisk

ข้อดี: รองรับการทำงานเกียบจะทุกแบบ คืออะไรที่คิดว่าโทรศัพท์ทำได้ Asterisk ทำได้หมด อะไรที่ไม่คิดว่าจะทำได้ astreisk ก็นำไปประยุกต์ใช้งานได้
ข้อด้อย: เนื่องจาก asterisk มีการออกแบบที่อาจไม่รองรับการขยายตัวขนาดนี้จึงทำให้มีปัญหามากมายในการเพิ่มเติมความสามารถในอนาคต ซึ่ง มีตัวอย่างเหตุผลสนับสนุนด้านล่าง
ตัวอย่างจุดด้อยของ asterisk
สามารถพบ deadlock และ crash ได้บ่อย
พบ memory leak ได้บ่อย
เนื่องจาก architechture ของ asterisk การทำงานเป็นแบบ thread ที่ค่อนข้างที่จะมีข้อจำกัดมาก โดยจะอนุญาติให้เฉพาะ channelตันฉบับและchannelที่ทำการ run application เป็น thread ได้ ฉะนั้น หากเป็นกรณีที่ผู้รับสาย (b-leg) มีการทำอะไรบางอย่างเช่นการโอนสาย, Channel นั้นๆ จะต้องถูกโอนเป็น thread ก่อน ซึ่งจะมีต้องมีการทำ channel masquerade โดยนำ channel เดิมไปใส่ไว้ใน channel ใหม่ ซึ่งเหมือนเป็นการ clone channel นั้นๆขึ้นมาใหม่และทำการ hangup channel เดิมลงไป จีงทำให้ระบบ CDR ของ asterisk นั้น ไม่มีความต่อเนื่องในบางกรณี เช่นการทำ attended transfer ที่เราจะเห็นจำนวน channel เกิดขึ้น 3-4 channel สำหรับการโทรเพียง ครั้งเดียว
มีการใช้ linked-lists เพื่อควบคุม Channel, สำหรับการทำงาน thread ใน asterisk ที่ถูกสร้างขึ้น ในแต่ละ linked-lists จะมี Mutexes ที่ควบคุมการถูก write-access โดยหนึ่ง threaded เท่านั้น ซึ่งอาจนำไปสู่ภาวะที่มีการล้าง บาง channel masquerade ได้ ทำให้เกิด Segmentation Fault ที่ระบบทั้งหมดจะหยุดไปทันที
ระบบ AMI ไม่มีกำหนด structure ที่ดีทำให้การส่งรับ data มีปัญหาในการ เก็บข้อมูล (parse data) ได้ยาก
Asterisk core มีการ link dependencies(shared code) ในบาง modules ลูกของ asterisk เอง ทำให้ในบางกรณีที่เราไม่สามารถที่จะ start asterisk ได้เนืี่องจากปัญหาในบาง modules
Asterisk ไม่มีการป้องกัน API ของตัวเอง ทำให้ในการ develop อะไรขึ้นมาเพิ่มเติมอาจไปทำให้ไปกระทบ กับ funcion และ data structure เดิมได้ง่าย

ระบบที่จำเป็นต่อ Asterisk

1. OS ระบบปฎิบัติการ 32/64 bits
Linux, OpenBSD, FreeBSD, MAC OS X
2 PC Hardware อาจเป็นเครื่อง PC หรือ Server ที่สามารถลงระบบปฏิบัติการ linux ได้
2.1 การ์ดสายนอกเพื่อเชื่อมต่อกับสายโทรศัพท์ทั้งระบบ Digital หรือ Analog มีทั้งที่ติดตั้งภายในเครื่อง หรือ ผ่าน USB Port นอกเครื่อง Server
2.2 เครื่อง Server,

Protocol ที่ Asterisk รองรับ

H.323, Session Initiation Protocol (SIP), Media Gateway Control Protocol (MGCP), and Skinny Client Control Protocol (SCCP) และ Inter-Asterisk eXchange (IAX™)

การทำงานของ Asterisk

อย่างที่รู้กันแล้วว่า Asterisk เป็น software ตัวหนึ่งที่ทำหน้าที่หลักในการควบคุมระบบโทรศัพท์ ซึ่งส่วนใหญ่แล้ว Asterisk จะสามารถทำงานบน Linux OS, FressBSD (not officially support by digium) ซึ่งในการทำงาน ของ Asterisk ผู้ใช้งานจำเป็นต้องสามารถที่จะเข้าใจการทำงาน และ ตั้งค่าต่างๆของ Asterisk ได้
Asterisk เป็น software ที่ทำงานเป็น daemon หรือ เป็น Process หนึ่งที่ทำงานอยู่บนเครื่องคอมพิวเตอร์ โดยการตั้งค่าของ Asterisk เพิ่มที่จะทำให้ ระบบทำงานได้ หรือ เป็นไปตามที่ผู้ใช้งานต้องการนั้น มีอยู่ 2 ลักษณะ คือ
1. แบบ .conf ไฟล์ ซึ่งการตั้งค่าแบบนี้ใช้งานกันอยู่อย่างแพร่หลายไม่ว่าจะเป็น การตั้งโดยผ่าน Web-Interface เช่น FreePBX, โดย ไฟล์ที่เขียนลงไปในระบบจะทำหน้าที่ในการบอกให้ Asterisk ทำงานอย่างที่เราต้องการ
2. แบบ database, เป็นอีกลักษณะในการตั้งค่าบางประเภทของ Asterisk โดยการตั้งค่าลักษณะนี้มีข้อดีในการที่เราสามารถที่จะปรับเปลี่ยนค่าได้ทันที โดยไม่จำเป็นต้อง สั่งให้ Asterisk ทำการอ่านค่าจาก file อีก คร้้ง (reload)

โดยหลังจากที่การตั้งค่าต่างๆเสร็จสิ้น Asterisk ก็จะสามารถทำงานได้ทันที โดย ในกรณีที่เป็น ระบบ SIP/IAX/etc. เครื่องลูกข่ายต่างๆก็จะสามารถที่จะเชื่อมต่อเข้ามายังระบบ ผ่านระบบเครือข่าย อนึ่งหากต้องการที่จะให้ Asterisk ทำงานกับ Telephony Hardware เช่น การ์ดสายนอก หรือ กล่องสายนอกต่างๆ ก็ต้องทำการติดตั้งค่าใน Asterisk ด้วย

Features ที Asterisk รองรับ

Call features
ADSI On-Screen Menu System
Alarm Receiver
Append Message
Authentication
Automated Attendant (ระบบตอบรับอัตโนมัติ)
Blacklists (การทำ backlist ใช้ในการ filter ผู้ใช้งานโทรศัพท์ที่โทรเข้าได้)
Blind Transfer (การโอนสายแบบโอนขาด หรือ โอนโดยไม่ถามผู้ที่เราจะโอนไปหาก่อน)
Call Detail Records (การจัดเก็บข้อมูลการโทรศัพท์ในระบบโดยระเอียด)
Call Forward on Busy (การโอนสายไปยังผู้อื่นในกรณ์ที่สายนั้นๆไม่ว่าง)
Call Forward on No Answer (การโอนสายไปยังผู้อื่นในกรณ์ที่สายนั้นๆไม่รับสาย)
Call Forward Variable
Call Monitoring (การดู status (ipaddress,ping time) ของ Client ที่เชื่อมต่อมายังระบบ)
Call Parking
Call Queuing
Call Recording
Call Retrieval
Call Routing (DID & ANI)
Call Snooping
Call Transfer
Call Waiting
Caller ID
Caller ID Blocking
Caller ID on Call Waiting
Calling Cards
Conference Bridging
Database Store / Retrieve
Database Integration
Dial by Name
Direct Inward System Access
Distinctive Ring
Distributed Universal Number Discovery (DUNDi™)
Do Not Disturb
E911
ENUM
Fax Transmit and Receive (3rd Party OSS Package)
Flexible Extension Logic
Interactive Directory Listing
Interactive Voice Response (IVR)
Local and Remote Call Agents
Macros
Music On Hold
Music On Transfer:
- Flexible Mp3-based System
- Random or Linear Play
- Volume Control
Predictive Dialer
Privacy
Open Settlement Protocol (OSP)
Overhead Paging
Protocol Conversion
Remote Call Pickup
Remote Office Support
Roaming Extensions
Route by Caller ID
SMS Messaging
Spell / Say
Streaming Media Access
Supervised Transfer
Talk Detection
Text-to-Speech (via Festival)
Three-way Calling
Time and Date
Transcoding
Trunking
VoIP Gateways
Voicemail:
- Visual Indicator for Message Waiting
- Stutter Dialtone for Message Waiting
- Voicemail to email
- Voicemail Groups
- Web Voicemail Interface
Zapateller

Computer-Telephony Integration
AGI (Asterisk Gateway Interface)
Graphical Call Manager
Outbound Call Spooling
Predictive Dialer
TCP/IP Management Interface

Scalability
TDMoE (Time Division Multiplex over Ethernet)
Allows direct connection of Asterisk PBX
Zero latency
Uses commodity Ethernet hardware
Voice-over IP
Allows for integration of physically separate installations
Uses commonly deployed data connections
Allows a unified dialplan across multiple offices

Codecs
ADPCM
G.711 (A-Law & μ-Law)
G.722
G.723.1 (pass through)
G.726
G.729 (through purchase of a commercial license)
GSM
iLBC
Linear
LPC-10
Speex

Protocols
IAX™ (Inter-Asterisk Exchange)
H.323
SIP (Session Initiation Protocol)
MGCP (Media Gateway Control Protocol
SCCP (Cisco® Skinny®)

Traditional Telephony Interoperability
E&M
E&M Wink
Feature Group D
FXS
FXO
GR-303
Loopstart
Groundstart
Kewlstart
MF and DTMF support
Robbed-bit Signaling (RBS) Types
MFC-R2 (Not supported. However, a patch is available

PRI Protocols
4ESS
BRI (ISDN4Linux)
DMS100
EuroISDN
Lucent 5E
National ISDN2
NFAS

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

ติดตั้ง freeradius บน ubuntu

  1. ติดตั้งด้วยคำสั่ง sudo apt-get install freeradius freeradius-utils freeradius-mysql freeradius-ldap gawk
  2. สั่งให้ทำงานด้วยคำสั่ง sudo /etc/init.d/freeradius start
  3. ทดสอบว่า freeradius ติดตั้งใช้งานได้แล้วด้วยตัวอย่างคำสั่ง

    *** จากตัวอย่างให้แทนข้อความ your_root_password ด้วยรหัสผ่านของ root
    sudo radtest your_name your_password 127.0.0.1 0 testing123
    หากถูกต้องจะได้รับข้อความตอบกลับประมาณว่า
    Sending Access-Request of id 232 to 127.0.0.1 port 1812
        User-Name = "your-name"
        User-Password = "your_password"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 0
    rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=232, length=20

    ถึงตอนนี้แสดงว่า freeradius ใช้งานได้แล้ว แต่ใช้ได้เพียง localhost คือ 127.0.0.1
  4. หากต้องการอนุญาติให้ radius client เข้ามาใช้ radius server นี้ได้
    ต้องแก้ไขสิทธิ์ที่แฟ้ม /etc/freeradius/clients.conf  ปรับตั้งให้มีค่าดังประมาณตัวอย่างนี้
    client 10.0.1.0/24 {
            secret          = mytestkey
            shortname       = private-network
    }
    ตัวอย่างนี้คือให้ radius client ที่มีหมายเลข ip 10.0.1.x  สามารถเข้ามาใช้ด้วย secret key ว่า mytestkey
    เมื่อแก้ไขเสร็จแล้วให้ reload ใหม่ ด้วยคำสั่ง  sudo /etc/init.d/freeradius force-reload
    ลองทดสอบด้วยคำสั่งตัวอย่าง sudo radtest your_name your_password 10.0.1.1 0 mytestkey
    *** ค่า your_password คือ รหัสผ่านของ your_name และ 10.0.1.1 คือหมายเลข ip ของ radius server
    ได้ผลแสดงข้อความดังตัวอย่าง
    Sending Access-Request of id 246 to 10.0.1.1:1812
            User-Name = "your_name"
            User-Password = "your_password"
            NAS-IP-Address = 255.255.255.255
            NAS-Port = 0
    rad_recv: Access-Accept packet from host 10.0.1.1:1812, id=246, length=20

    ถึงขั้นตอนนี้เป็นอันเปิดบริการระบบ radius server ได้แล้ว
  5. ขั้นตอนการทำงานของ configuration ของ freeradius
    แฟ้ม /etc/freeradius/radiusd.conf  เป็นที่ปรับค่าของระบบต่างๆ

    หากเป็น freeradius 2.x จะมีการแยกแฟ้มย่อยออกไปจาก /etc/freeradius/radiusd.conf
    ไปอยู่ที่ /etc/freeradius/sites-available/default  และ /etc/freeradius/modules
    หากเป็น freeradius 1.x ทุกอย่างจะกระจุกตัวในแฟ้ม /etc/freeradius/radiusd.conf

    เมื่อ radius server ได้รับการติดต่อจากผู้ใช้ radius client
    วิธีการตรวจสอบคุณสมบัติของผู้ใช้อยู่ในส่วนที่ชื่อ authorize {...}
    ภายใน authorize {...} นี้ ประกอบด้วยชื่อ modules ตรวจสอบต่างๆ

    หากคุณสมบัติไม่ตรง ปรกติแล้วระบบก็จะรีบดีดออกมาพร้อมแจ้ง reject
    แต่เราสามารถกำหนดให้ไปตรวจสอบต่อกับ authorize modules
    เรียงลำดับอันถัดๆไปที่เหลืออื่นๆได้อีก

    หากคุณสมบัติผ่าน ก็จะเข้าขั้นตอนตรวจสอบรหัสผ่านของผู้ใช้ว่าถูกต้องหรือไม่
    โดย authorize modules จะเลือก modules ที่ต้องการเอง จากส่วนที่ชื่อ authenticate {...}

    หากรหัสผ่านถูกต้อง ก็จะเข้าสู่ส่วนของ postauth {...}
    เป็นการตรวจสอบทิ้งท้ายก่อนส่งคืนค่ากลับให้แก่ radius client ที่ติดต่อมา

    การบันทึกประวัติใช้งานอยู่ในส่วน accounting {...}

    modules ทุกตัวที่ใช้งาน จะต้องได้รับการประกาศไว้ก่อนแล้ว
    หากเป็น freeradius 2.x จะแยก modules ออกเป็นแฟ้มย่อยๆอยู่ที่ directory ชื่อ /etc/freeradius/modules
    หากเป็น freeradius 1.x จะมี modules อยู่ในแฟ้ม /etc/freeradius/radiusd.conf พื้นที่ส่วนของชื่อ modules {...}
  6. หากต้องการตรวจสอบผู้ใช้กับ mail server ผ่าน imap/pop3 ให้ทำดังนี้

    ตัวอย่างนี้จะตรวจสอบกับ mail server ชื่อ your.mail.server
    ต้องติดตั้ง php และ php-imap ก่อนแล้ว ติดตั้งด้วยคำสั่ง sudo apt-get install php5 php5-imap php5-cli
    แก้ไขแฟ้ม /etc/php5/cli/conf.d/imap.ini ตรวจสอบ/เพิ่มให้มีบรรทัดตัวแปรว่า extension=imap.so

    ต่อไปสร้างแฟ้ม /etc/freeradius/imap.php ให้มีเนื้อหาว่า
    <?php
    error_reporting(0);
    $host = $argv[1];
    $username = $argv[2];
    $password = $argv[3];
    $service = $argv[4];
    $imap_host="{" . $host . $service . "}";
    $mbox = imap_open("$imap_host", "$username", "$password");
    $folders = imap_listmailbox($mbox, "$imap_host", "*");
    if ($folders == false) {
            echo "false";
    } else {
            echo "true";
    }
    imap_close($mbox);
    ?>

    สร้างแฟ้มคำสั่ง shell script ชื่อ  /etc/freeradius/imap-authen.sh มีเนื้อหาว่า
    #!/bin/bash
    #exit 0 = valid ; exit 1 = invalid
    AUTHEN_SHADOW="YES"
    AUTHEN_MAIL="YES"
    AUTHEN_LDAP="NO"
    AUTHEN_PSU_PASSPORT="NO"
    NAME=$(echo ${USER_NAME} | cut -d'"' -f2)
    PASSWORD=$(echo ${USER_PASSWORD} | cut -d'"' -f 2-|sed "s/\"$//")
    KEY="false"
    if [ "${AUTHEN_SHADOW}" = "YES" ] ; then
      KEY=$(/bin/sh /etc/freeradius/check-shadow.sh "${NAME}" "${PASSWORD}")
      if [ "${KEY}" = "true" ] ; then
        exit 0
      fi
    fi
    if [ "${AUTHEN_LDAP}" = "YES" ] ; then
      KEY=$(/bin/sh /etc/freeradius/check-ldap.sh "${NAME}" "${PASSWORD}")
      if [ "${KEY}" = "true" ] ; then
        exit 0
      fi
    fi
    if [ "${AUTHEN_PSU_PASSPORT}" = "YES" ] ; then
      USER=$(echo ${NAME} | cut -d'@' -f1)
      KEY=$(/usr/bin/php /etc/freeradius/soap-authen.php ${USER} ${PASSWORD} $1 $2})
      if [ "${KEY}" = "true" ] ; then
        exit 0
      fi
    fi
    if [ "${AUTHEN_MAIL}" = "YES" ] ; then
      IS_EMAIL=$(echo ${NAME}|grep "@")
      if [ -n "${IS_EMAIL}" ] ; then
        USER=$(echo ${NAME} | cut -d'@' -f1)
        DOMAIN=$(echo ${NAME} | cut -d'@' -f2)
      else
        USER=${NAME}
        DOMAIN="mail.psu.ac.th"
      fi
      case ${DOMAIN} in
      psu.ac.th)
        HOST="mail.psu.ac.th"
        SERVICE=":143/imap/notls" ;;
      pharmacy.psu.ac.th)
        HOST="mail.pharmacy.psu.ac.th"
        SERVICE=":143/imap/notls" ;;
      pn.psu.ac.th)
        HOST="bunga.pn.psu.ac.th"
        SERVICE=":143/imap/notls" ;;
      gmail.com)
        HOST="pop.gmail.com"
        SERVICE=":995/pop3/ssl" ;;
      live.com)
        HOST="pop3.live.com"
        USER=${NAME}
        SERVICE=":995/pop3/ssl" ;;
      *)
        HOST=${DOMAIN}
        SERVICE=":110/pop3/notls" ;;
      esac
      KEY=$(/usr/bin/php /etc/freeradius/imap.php ${HOST} ${USER} ${PASSWORD} ${SERVICE})
      if [ "${KEY}" = "true" ] ; then
        exit 0
      fi
    fi
    exit 1

    สร้างแฟ้มแบบ text ชื่อ /etc/freeradius/myusers มีเนื้อหาว่า
    DEFAULT Auth-Type := Accept
                  Exec-Program-Wait="/bin/sh /etc/freeradius/imap-authen.sh"

    หากเป็น freeradius 2.x ให้แก้ไขแฟ้ม /etc/freeradius/modules/files เติมข้อความต่อท้ายแฟ้มว่า
    files  myimap  {
        usersfile = ${confdir}/myusers
    }
    แล้วแก้ไขแฟ้ม /etc/freeradius/sites-available/default
    ที่ส่วนของ authorize {...} ประมาณบรรทัดที่ 152 ที่บริเวณข้อความขึ้นต้นด้วย authorize {
    ...
    #  Read the 'users' file
         files
    ให้ comment บรรทัด files เพื่อยกเลิกค่านี้  แล้วแทรกเพิ่มบรรทัดข้อความเพิ่ม กลายเป็นว่า
    #    files
    แทรกเพิ่มบรรทัดข้อความว่า myimap ต่อไปอีกบรรทัด กลายเป็นว่า
    #   files
    myimap

    เสร็จแล้วให้สั่งทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/freeradius force-reload
    แค่นี้ก็เสร็จแล้ว ทดสอบผลงานได้เลย
  7. หากต้องการว่าหลังผ่านการตรวจสอบ username/password ถูกต้องแล้ว
    จะทำการบันทึกลงแฟ้ม log file เก็บไว้ที่ /var/log/freeradius/myauthen และยังต้องการตรวจวิธีการพิเศษเฉพาะของตนเองเพิ่มเติมอีก

    ตัวอย่างต้องการไม่อนุญาติให้ผู้ใช้ชื่อ demo และ abc ใช้งาน ให้ทำดังนี้
    สร้างแฟ้มคำสั่ง shell script ชื่อ  /etc/freeradius/my-authen.sh มีเนื้อหาว่า
    #!/bin/bash
    ###exit 0 = valid ; exit1 = invalid
    ALL_PASS="YES"
    CHECK_STAFF="NO"
    CHECK_STUDENT="NO"
    export LANG=en.US
    MYDIR="/var/log/freeradius/myauthen"
    if [ ! -d ${MYDIR} ] ; then
      mkdir -p ${MYDIR}
    fi
    TODAY=$(date "+%Y%m%d")
    MYFILE="${MYDIR}/${TODAY}"
    if [ ! -e ${MYFILE} ] ; then
      touch ${MYFILE}
    fi
    MYTIME=$(echo $1|awk '{print strftime("%Y%m%d:%H:%M:%S",$1)}')
    echo "${MYTIME};${USER_NAME};$2;$1;PASS" >> ${MYFILE}
    MYUSER=$(echo $USER_NAME | cut -d'"' -f2)
    if [ "${ALL_PASS}" = "YES" ] ; then
      exit 0
    fi
    if [ "${CHECK_STAFF}" = "YES" ] ; then
      case "${MYUSER}" in
        demo) exit 1 ;;
        *) exit 0 ;;
      esac
    fi
    if [ "${CHECK_STUDENT}" = "YES" ] ; then
      case "${MYUSER}" in
        demo) exit 1 ;;
        *) exit 0 ;;
      esac
    fi
    exit 1

    หากเป็น freeradius 2.x  ให้แก้ไขแฟ้ม /etc/freeradius/modules/exec เติมข้อความต่อท้ายแฟ้มว่า
    exec my-auth {
            program = "/bin/sh /etc/freeradius/my-authen.sh %l %{Packet-Src-IP-Address}"
            wait = yes
            input_pairs = request
            output_pairs = reply
            packet_type = Access-Accept
    }
    แล้วแก้ไขแฟ้ม /etc/freeradius/sites-available/default
    ที่ส่วนของ post-auth {...} ประมาณบรรทัดที่ 439  ที่บริเวณข้อความขึ้นต้นด้วย post-auth {
    ...
    แทรกเพิ่มบรรทัดข้อความเพิ่ม
    my-auth

    เสร็จแล้วให้สั่งทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/freeradius force-reload
  8. การบันทึกประวัติการใช้งานของ radius โดย defualt จะบันทึกไว้ในพื้นที่  /var/log/freeradius/radacct
    โดยแยกเป็น directory ของแต่ละหมายเลข ip ของ radius client
    แล้วยังแตกย่อยออกเป็นแฟ้มของแต่วันอีก ซึ่งอาจไม่สะดวกต่อการวิเคราะห์ข้อมูล
    เราสามารถเพิ่ม module บันทึกประวัติการใช้งานเพิ่มเติมจากของเดิม ตัวอย่างคือ
    ต้องการบันทึกไว้ใน directory ชื่อ /var/log/freeradius/myaccount
    แล้วเก็บแฟ้มแยกเป็นรายวันในรูปแบบ 20060729 ภายในแฟ้มมีรูปแบบว่า
    20060729:15:54:05;"demo";10.0.0.153;1154163245;"a5f56ebd6ebc1321";Start;
    20060729:15:55:06;"demo";10.0.0.153;1154163306;"a5f56ebd6ebc1321";Stop;61

    ให้ทำดังนี้ สร้างแฟ้มคำสั่ง shell script ชื่อ  /etc/freeradius/log-radius-account.sh มีเนื้อหาว่า
    #!/bin/bash
    export LANG=en.US
    MYDIR="/var/log/freeradius/myaccount"
    if [ ! -d ${MYDIR} ] ; then
      mkdir -p ${MYDIR}
    fi
    TODAY=$(date "+%Y%m%d")
    myfile="${MYDIR}/${TODAY}"
    if [ ! -e ${MYDIR} ] ; then
      touch ${MYDIR}
    fi
    MYTIME=$(echo $1|awk '{print strftime("%Y%m%d:%H:%M:%S",$1)}')
    echo "${MYTIME};${USER_NAME};$2;$1;${ACCT_UNIQUE_SESSION_ID};${ACCT_STATUS_TYPE};${ACCT_SESSION_TIME}" >> ${MYFILE}
    แฟ้ม shell script จบแค่นี้

    หากเป็น freeradius 2.x  ให้แก้ไขแฟ้ม /etc/freeradius/modules/exec เติมข้อความต่อท้ายแฟ้มว่า
    exec my-log-account {
         wait = no
         program = "/bin/sh /etc/freeradius/log-radius-account.sh %l %{Packet-Src-IP-Address} "
    }
    แล้วแก้ไขแฟ้ม /etc/freeradius/sites-available/default
    ที่ส่วนของ accounting  {...}ประมาณบรรทัดที่ 358  ที่บริเวณข้อความ accounting {
    ...
    detail
    ให้แทรกเพิ่มบรรทัดข้อความว่า
    my-log-account

    เสร็จแล้วให้สั่งทำงานใหม่ ด้วยคำสั่ง sudo /etc/init.d/freeradius force-reload
  9. radius server สามารถส่งค่าบอกเวลาที่ยังคงเหลือให้ใช้งาน
    โดยส่งค่ากลับมาที่ attribute ชื่อ Session-Timeout
    แต่ตัวมันเองคำนวณไม่เป็น ต้องหาวิธีอื่นในการคำนวณเวลา
    แล้วส่งกลับมาให้ radius ส่งคำตอบให้อีกทอดหนึ่ง

    จากตัวอย่างข้อ 8 หากต้องการใส่ค่าเวลาที่เหลือในการใช้งาน
    ตัวอย่างเช่นเหลือ 120 วินาที ให้เพิ่มบรรทัดข้อความว่า
    echo "SESSION-TIMEOUT = \"120\""
    ลงไปก่อนบรรทัดข้อความ  exit 0 ดังตัวอย่าง
    #!/bin/bash
    ###exit 0 = valid ; exit1 = invalid
    MYUSER=$(echo $USER_NAME | cut -d'"' -f2)
    case "${MYUSER}" in
      demo) exit 1 ;;
      abc) exit 1 ;;
      *) echo "SESSION-TIMEOUT = \"120\""
          exit 0 ;;
    esac

    เสร็จแล้วให้สั่งทำงานใหม่ ด้วยคำสั่ง sudo /etc/init.d/freeradius force-reload
    แค่นี้ก็เสร็จแล้ว PC ที่ติดต่อเข้ามาจะได้รับคำตอบกลับไป
    ระบุว่าเหลือเวลาใช้งานอีกเท่าไร ขึ้นกับตัวเลขทีกำหนดส่งออกมา
    จากตัวอย่างให้แก้ไขตัวเลข 120 เป็นอื่นๆตามต้องการ
  10. การบันทึกประวัติการ authen radius ไว้ในพื้นที่  /var/log/freeradius/myauthen ให้ทำดังนี้
    สร้างแฟ้มคำสั่ง shell script ชื่อ  /etc/freeradius/log-radius-authen.sh มีเนื้อหาว่า
    #!/bin/bash
    export LANG=en.US
    MYDIR="/var/log/freeradius/myauthen"
    if [ ! -d ${MYDIR} ] ; then
      mkdir -p ${MYDIR}
    fi
    TODAY=$(date "+%Y%m%d")
    MYFILE="${MYDIR}/${TODAY}"
    if [ ! -e ${MYFILE} ] ; then
      touch ${MYFILE}
    fi
    MYTIME=$(echo $1|awk '{print strftime("%Y%m%d:%H:%M:%S",$1)}')
    echo "${MYTIME};${USER_NAME};$2;$1;CHECK_IN" >> ${MYFILE}
    แฟ้ม shell script จบแค่นี้

    หากเป็น freeradius 2.x  ให้แก้ไขแฟ้ม /etc/freeradius/modules/exec เติมข้อความต่อท้ายแฟ้มว่า
    exec my-log-authen {
         wait = no
         program = "/bin/sh /etc/freeradius/log-radius-authen.sh %l %{Packet-Src-IP-Address} "
    }
    แล้วแก้ไขแฟ้ม /etc/freeradius/sites-available/default
    ที่ส่วนของ authorize  {...}ประมาณบรรทัดที่ 152  ที่บริเวณข้อความ authorize {
    ...
    #   files
    myimap
    ให้แทรกเพิ่มบรรทัดข้อความ กลายเป็นว่า
    my-log-authen
    #   files
    myimap

    เสร็จแล้วให้สั่งทำงานใหม่ ด้วยคำสั่ง sudo /etc/init.d/freeradius force-reload
  11. ตัวอย่างคำสั่งการทดสอบด้วยคำสั่ง radclient
    ทดสอบการ authen คำสั่งประมาณว่า
    echo "User-Name=mama,User-Password=123456" | radclient 10.0.1.2 auth mytestkey

    ทดสอบการ accounting ตอนเข้า คำสั่งประมาณว่า
    echo "User-Name=mama,Acct-Status-Type=Start" | radclient 10.0.1.2 acct mytestkey

    ทดสอบการ accounting ตอนออก คำสั่งประมาณว่า
    echo "User-Name=mama,Acct-Status-Type=Stop" | radclient 10.0.1.2 acct mytestkey

ติดตั้ง postfix บน ubuntu


  • ติดตั้ง postfix ด้วยคำสั่ง sudo apt-get install postfix
    ระบบจะมีหน้าต่าง Postfix Configuration ขึ้นมา  ให้กด TAB ไปเลือกแถบ <Ok>
    จะได้อีกหน้าต่างให้เลื่อนไปเลือกแถบ No configuration แล้วกด TAB ไปเลือกแถบ <Ok>
    เป็นอันว่าติดตั้งเสร็จ ค่อยมาปรับแต่งเพิ่มต่อไป
  • จัดการให้ postfix ทำงานแบบ local คือส่งอีเมล์กันภายใน server นี้ ด้วยคำสั่ง
    sudo dpkg-reconfigure postfix
    ระบบจะมีหน้าต่าง Postfix Configuration ขึ้นมา ให้กด TAB ไปเลือกแถบ <Ok>
    จะได้อีกหน้าต่างให้เลื่อนไปเลือกแถบ Local only แล้วกด TAB ไปเลือกแถบ <Ok>
    ที่ช่อง System mail name :  ให้ป้อนชื่อ server
    ที่ช่อง Root and postmaster mail recipient:  ให้ข้ามไปเลย
    ที่ช่อง Other destinations to accept mail for (blank for none):  ให้ข้ามไปเลย
    ที่คำถาม Force synchronous updates on mail queue? ให้เลือกตอบ NO
    ที่ช่อง Local networks: ให้ป้อนเหลือแค่ว่า 127.0.0.0/8
    ที่ช่อง Mailbox size limit (bytes): ให้ใส่เลข 0
    ที่ช่อง Local address extension character: ปล่อยตามเดิมเป็นเครื่องหมาย +
    ที่คำถาม Internet protocols to use: ให้เลือก ipv4
    ที่คำถาม Use procmail for local delivery? ให้ตอบ No

    เสร็จแล้วพร้อมใช้งานได้เลย
  • ตัวอย่างข้อมูลในแฟ้ม /etc/postfix/main.cf สำหรับ local mail server ที่เพิ่งถูกสร้าง
    smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
    biff = no
    append_dot_mydomain = no
    readme_directory = no
    myhostname = myserver.domain
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = myserver.domain, localhost
    relayhost =
    mynetworks = 127.0.0.0/8
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = loopback-only
    default_transport = error
    relay_transport = error
    inet_protocols = ipv4
  • หากต้องการปรับปรุงให้ local mail server สามารถส่งอีเมล์ออกได้
    ให้แก้ไขแฟ้ม /etc/postfix/main.cf ปรับปรุงค่าตัวแปรดังนี้คือ
    default_transport = smtp
    relay_transport = smtp

    เสร็จแล้วให้ postfix ทำงานใหม่ ด้วยคำสั่ง sudo /etc/init.d/postfix restart
  • จัดการ aliases ให้แก้ไขที่แฟ้ม /etc/aliases
    เสร็จแล้วสั่งให้ postfix เรียนรู้ข้อมูลใหม่ด้วยคำสั่ง sudo newaliases
  • จัดการ relay mail ไปให้ server อื่นส่งแทน ให้แก้ไขแฟ้ม /etc/postfix/main.cf 
    ตั้งค่าตัวแปรดังตัวอย่าง relayhost = other.mail.net
    เสร็จแล้วสั่งให้ posftix ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/postfix force-reload
  • ติดตั้ง wordpress บน ubuntu


  • ติดตั้ง apache web server ด้วยคำสั่ง
    sudo apt-get install apache2
  • ติดตั้ง mysql database server ด้วยคำสั่ง
    sudo apt-get install mysql-server

    ระหว่างติดตั้งหากมีคำถามที่เกี่ยวกับการตั้งรหัสผ่าน ก็ให้เคาะแป้น enter ผ่านไปก่อนทั้งหมด
    หลังติดตั้งเสร็จแล้วให้รีบตั้งรหัสผ่าน root ของ mysql-server ใหม่

    ตัวอย่างนี้ตั้งรหัสผ่านว่า mysqldroot ใช้คำสั่งคือ
    mysqladmin -uroot password mysqldroot
  • ติดตั้ง php ด้วยคำสั่ง
    sudo apt-get install php5 php5-mysql php5-cli php5-gd php5-imap php5-ldap php5-radius unzip
    sudo a2enmod rewrite

    แล้วสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/apache2 restart
  • สร้าง database สำหรับ wordpress ที่ต้องการติดตั้ง
    ตัวอย่างสร้าง database ชื่อ wpdb ใช้คำสั่ง
    mysql -uroot -pmysqldroot -e "CREATE DATABASE wpdb CHARACTER SET 'UTF8';"

    ***หากต้องการลบ database เดิมที่เคยสร้างไว้แล้ว ใช้คำสั่งว่า
    mysql -uroot -pmysqldroot -e "DROP DATABASE wpdb;"

    แล้วกำหนดสิทธิ์การใช้ database wpdb ให้แก่ user
    ตัวอย่างสร้าง user ชื่อ wpmysql โดยมีรหัสผ่านว่า wppass ใช้คำสั่งคือ
    mysql -uroot -pmysqldroot -e "grant all privileges on wpdb.* to 'wpmysql'@'localhost' identified by 'wppass';"
  • ติดตั้ง wordpress ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/wordpress/wordpress-3.3.1-th.tar.gz ด้วยคำสั่ง
    wget -P /tmp http://ftp.psu.ac.th/pub/wordpress/wordpress-3.3.1-th.tar.gz
    แล้วแตกแฟ้มออกมาด้วยคำสั่ง
    sudo tar -zxvf /tmp/wordpress-3.3.1-th.tar.gz -C /var/www
    แล้วทำงานต่อด้วยคำสั่ง
    sudo chown -R www-data /var/www/wordpress
  • คัดลอกแฟ้ม config ด้วยคำสั่ง
    sudo cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
    แก้ไขแฟ้ม /var/www/wordpress/wp-config.php แก้ไขข้อมูล 3 แห่งคือ
    ประมาณบรรทัด 19 แก้ไขตัวแปรเดิมว่า define('DB_NAME', 'database_name_here');  เปลี่ยนใหม่ให้เป็นว่า define('DB_NAME', 'wpdb');
    ประมาณบรรทัด 22 แก้ไขตัวแปรเดิมว่า define('DB_USER', 'username_here'); เปลี่ยนใหม่ให้เป็นว่า define('DB_USER', 'wpmysql');
    ประมาณบรรทัด 25 แก้ไขตัวแปรเดิมว่า define('DB_PASSWORD', 'password_here'); เปลี่ยนใหม่ให้เป็นว่า define('DB_PASSWORD', 'wppass');
  • เริ่มต้นระบบไปที่เวบ http://localhost/wordpress
    ได้หน้าเวบข้อความว่า
    ยินดีต้อนรับ .. ไปหัวข้อรายละเอียดที่ต้องการ ...
    ช่อง "หัวข้อเว็บ" ให้ป้อนชื่อที่ต้องการตัวอย่างเช่น  MyWordpress
    ช่อง "ชือผู้ใช้" ยังคงเหมือนเดิมคือ admin
    ช่อง "รหัสผ่าน" ให้ป้อน 2 ครั้ง ตัวอย่างนี้ป้อนว่า 123456 ทั้ง 2 ครั้ง
    ช่อง "อีเมล์ของคุณ" ให้ป้อนอีเมล์ที่ต้องการเช่น my@your.domain
    ช่อง "ส่วนตัว" ยังคงติ๊กเลือก "อนุญาตให้เว็บของฉันปรากฎใน search engines..."
    แล้วคลิกปุ่ม "ติดตั้งเวิร์ดเพรส" รอสักครู่ เมื่อได้หน้าเวบข้อความว่า "สำเร็จ"
    ให้คลิกปุ่ม "เข้าสู่ระบบ" เพื่อทดสอบใช้งานได้เลย
  • การปรับแต่งให้ login เข้าด้วย admin
    ได้เวบหน้าหลัก ที่เมนูด้านซ้ายล่าง ให้คลิกเลือกหัวข้อว่า  "ตั้งค่า" ได้เวบหน้า"ตั้งค่าทั่วไป"
    ช่อง "เขตเวลา" ให้เลือกเปลี่ยนเป็น "Asia" -> "Bangkok"
    ช่อง "รูปแบบวันที่" ให้เลือกเปลี่ยนเป็น "ปรับแต่ง d-m-Y"
    ช่อง "รูปแบบเวลา" ให้เลือกเปลี่ยนเป็น "ปรับแต่ง H:i"
    แล้วคลิกปุ่ม "บันทึกการเปลี่ยนแปลง"
  • จัดให้ wordpress ทำการ authen กับ ldap server ทำดังนี้
    ต้องติดตั้ง php5-ldap ก่อน ด้วยคำสั่ง
    sudo apt-get install php5-ldap
    ดาวน์โหลดแฟ้ม http://ftp.psu.ac.th/pub/wordpress/simple-ldap-login.1.4.0.5.1.zip มาติดตั้ง ด้วยคำสั่ง
    wget -P /tmp http://ftp.psu.ac.th/pub/wordpress/simple-ldap-login.1.4.0.5.1.zip
    แตกแฟ้มออกมาแล้วเอาไปติดตั้งด้วยคำสั่ง
    sudo unzip -d /var/www/wordpress/wp-content/plugins  /tmp/simple-ldap-login.1.4.0.5.1.zip
    ต่อไปให้เข้าหน้าเวบของ http://localhost/wordpress ด้วย login เป็น admin
    ที่เมนูด้านซ้าย ให้คลิกเลือกหัวข้อว่า "ปลั๊กอิน" ได้หน้าเวบ "ปลั๊กอิน"
    ไปที่ช่อง "Simple LDAP Login"  แล้วคลิกเลือก "ใช้งาน"
    กลับไปที่เมนูด้านซ้ายล่าง ให้คลิกเลือกหัวข้อว่า  "ตั้งค่า" -> "Simple LDAP Login"
    ได้หน้าเวบ Simple LDAP Login 1.4.0.5.1  (ตัวอย่างนี้ตั้งค่าให้ใช้กับ LDAP ของ PSU)
    ไปด้านขวาที่ส่วนของ Advanced
    ช่อง Login mode: ให้ติ๊กเลือกเปลี่ยนเป็น Create Wordpress account for anyone who successfully authenticates against LDAP.
    ไปด้านซ้ายที่ส่วนของ Settings
    ช่อง  LDAP Directory: ให้เปลี่ยนไปติ๊กเลือกเป็น OpenLDAP
    ช่อง Account Suffix: ให้ลบข้อความออกหมด ให้เหลือกลายเป็นช่องว่างๆ
    ช่อง LDAP Login Attribute ยังคงเหมือนเดิมคือ uid
    ช่อง Base DN: ให้แก้ไขเปลี่ยนเป็นว่า ou=staff,dc=cc,dc=psu
    ช่อง Domain Controller(s): ให้แก้ไขเปลี่ยนเป็นว่า front.psu.ac.th
    เสร็จแล้วเลื่อนลงไปคลิกปุ่ม "Update Options >>"
    ทำเพียงแค่นี้ แล้วทดสอบผลงานได้เลย
  • การปรับปรุงเปลี่ยนมาใช้ nginx แทน apache ให้ปิด  apache ก่อน ด้วยคำสั่ง
    sudo /etc/init.d/apache2 stop
    sudo update-rc.d -f apache2 remove
    ติดตั้ง nginx ด้วยคำสั่ง
    sudo apt-get install nginx php5-cgi

    สร้างแฟ้ม /etc/init.d/php-fastcgi ให้มีข้อมูลดังนี้
    #!/bin/bash
    BIND=127.0.0.1:9000
    USER=www-data
    PHP_FCGI_CHILDREN=15
    PHP_FCGI_MAX_REQUESTS=1000
    PHP_CGI=/usr/bin/php-cgi
    PHP_CGI_NAME=`basename $PHP_CGI`
    PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
    RETVAL=0
    start() {
          echo -n "Starting PHP FastCGI: "
          start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
          RETVAL=$?
          echo "$PHP_CGI_NAME."
    }
    stop() {
          echo -n "Stopping PHP FastCGI: "
          killall -q -w -u $USER $PHP_CGI
          RETVAL=$?
          echo "$PHP_CGI_NAME."
    }
    case "$1" in
        start)
          start
      ;;
        stop)
          stop
      ;;
        restart)
          stop
          start
      ;;
        *)
          echo "Usage: php-fastcgi {start|stop|restart}"
          exit 1
      ;;
    esac
    exit $RETVAL

    สั่งให้ php-fastcgi ทำงานด้วยคำสั่ง
    sudo chmod +x /etc/init.d/php-fastcgi
    sudo /etc/init.d/php-fastcgi start
    sudo update-rc.d php-fastcgi defaults

    แก้ไขแฟ้ม /etc/nginx/sites-available/default
    ไปประมาณบรรทัด 14-15 แก้ค่าเดิมจาก
    root   /var/www/nginx-default;
    index  index.html index.htm;
    ให้กลายเป็นค่าใหม่ว่า
    root   /var/www;
    index  index.php index.html index.htm;
    ไปประมาณบรรทัด 47-52 แก้ไขยกเลิกการ comment ด้วยการลบเครื่องหมาย # ที่นำหน้าออก กลายเป็นว่า
    location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
    include fastcgi_params;
    }
    สั่งให้ nginx ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/nginx restart
    ทำเพียงแค่นี้ ก็ได้ wordpress บน nginx แล้ว ทดสอบเข้าหน้าเวบ http://localhost/wordpress ได้เลย
  • ติดตั้ง vsftpd บน ubuntu


  • ติดตั้งด้วยคำสั่ง sudo apt-get install vsftpd
  • การให้แฟ้มข้อมูลสามารถเปิดอ่านได้ผู้ใช้แบบสาธารณะชื่อ anonymous
    หากเป็น ubuntu 10.04 เก็บข้อมูลไว้ภายใต้ directory ชื่อ /srv/ftp/pub
    ต้องสร้าง directory เพิ่มด้วยคำสั่ง  sudo mkdir -p /srv/ftp/pub

    หากเป็น ubuntu 8.04 ให้เก็บข้อมูลไว้ภายใต้ directory ชื่อ /var/ftp/pub
    ซึ่งต้องสร้าง directory เพิ่มด้วยคำสั่ง  sudo mkdir -p /var/ftp/pub
  • การปรับแต่งระบบทำได้โดยการแก้ไขแฟ้ม /etc/vsftpd.conf

    ตั้งเวลาให้แสดงผลเวลาตรงกับของ server
    ด้วยการเพิ่ม/แก้ไขบรรทัดข้อความว่า use_localtime=yes

    หากต้องการให้ใช้งานได้เฉพาะภายใน home ของตนเอง ไม่ต้องการให้ออกไปเพ่นพ่านที่อื่น
    เพิ่ม/แก้ไขบรรทัดข้อความว่า chroot_local_user=YES

    หากต้องการห้าม anonymous เข้ามาใช้บริการ
    เพิ่ม/แก้ไขบรรทัดข้อความว่า anonymous_enable=NO

    หากต้องการให้ user สามารถ upload แฟ้มได้
    เพิ่ม/แก้ไขบรรทัดข้อความว่า local_enable=YES และ write_enable=YES

    ตัวอย่างหากต้องการจำกัดจำนวน client ที่เข้ามาใช้บริการ ftp ไม่ให้เกิน 100 คน
    เพิ่ม/แก้ไขบรรทัดข้อความว่า max_clients=100
    แต่ถ้าต้องการจำกัดจำนวน clinet ต่อ 1 เลข IP ที่เข้ามาใช้บริการ ftp ไม่ให้เกิน 50 คนด้วย
    เพิ่ม/แก้ไขบรรทัดข้อความว่า max_per_ip=50

    แก้ไขเสร็จแล้วสั่ง vsftpd ทำงานใหม่ด้วยคำสั่ง  sudo /etc/init.d/vsftpd restart
  • เทคนิคในการสร้าง link ให้สามารถเปิดดูได้ทั้ง http และ ftp ตัวอย่างเช่น
    http://ftp.psu.ac.th/pub/temp/ และ ftp://ftp.psu.ac.th/pub/temp/
    สมมติว่า root directcory ของ http อยู่ที่ /var/www
    และ root directcory ของ http อยู่ที่  /srv/ftp/pub
    ให้ใช้คำสั่งว่า sudo ln -s /srv/ftp/pub /var/www
    แล้วทดสอบดูผลงานได้เลย
  • ตัวอย่างหากต้องการเพิ่ม hard disk ลูกใหม่เข้าไป และต้องการให้ไปเป็นส่วนหนึ่งของพื้นที่ใน /home/ftp/pub
    ให้จัดการติดตั้ง hard disk และ mount ให้เรียบร้อยสามารถใช้งานได้ซะก่อน
    ตัวอย่างของผมคือเพิ่ม hard disk /dev/hdb1 ไปในพื้นที่ /mnt/data
    และต้องการให้ไปโผล่เป็นส่วนหนึ่งของ /home/ftp/pub/newdisk
    ทำคำสั่งขั้นตอนดังนี้คือ
    sudo mkdir  -p  /mnt/data
    sudo mount  /dev/hdb1  /mnt/data
    sudo mkdir  -p  /home/ftp/pub/newdisk
    sudo mount  --bind  /mnt/data  /home/ftp/pub/newdisk
    แค่นี้ก็เสร็จแล้ว ตรวจสอบดูผลงานได้เลย

    ต้องแก้ไขให้ระบบทำงานคำสั่งเหล่านี้โดยอัตโนมัติทุกครั้งที่บูทเครื่อง
    ต้องแก้ไขแฟ้ม /etc/rc.local โดยเพิ่มบรรทัดคำสั่งเหล่านั้นเข้าไปด้วย
  • ติดตั้ง remastersys บน ubuntu


  • การติดตั้งจาก http://www.geekconnection.org/remastersys/repository ทำดังนี้
    ต้อง apt-get ไปเอา remastersys  จาก repository อื่น

    หากเป็น ubuntu 8.04, 8.10, 9.04  ที่ใช้ grub รุ่นเดิมๆ ให้เพิ่ม repository ด้วยคำสั่งว่า
    sudo sh -c "echo 'deb http://www.geekconnection.org/remastersys/repository ubuntu/' > /etc/apt/sources.list.d/remastersys.list"

    หากเป็น ubuntu 9.10 ที่ใช้ grub2 รุ่นใหม่ ให้เพิ่ม repository ด้วยคำสั่งว่า
    sudo sh -c "echo 'deb http://www.geekconnection.org/remastersys/repository karmic/' > /etc/apt/sources.list.d/remastersys.list"

    หากเป็น ubuntu 10.04 หรือใหม่กว่า ให้เพิ่ม repository ด้วยคำสั่งว่า
    sudo sh -c "echo 'deb http://www.geekconnection.org/remastersys/repository lucid/' > /etc/apt/sources.list.d/remastersys.list"
    หลังติดตั้ง remastersys เสร็จแล้ว จะยกเลิกบรรทัดแฟ้มนี้ออกก็ได้

    ติดตั้งด้วยคำสั่ง sudo apt-get update และ sudo apt-get install remastersys
    บางทีเจอบั๊ก โปรแกรมไม่สร้าง /home/remastersys
    ให้แก้ไขด้วยการสร้างเองด้วยคำสั่ง  sudo mkdir -p /home/remastersys
  • หากติดตั้ง rematersys จาก http://www.geekconnection.org/remastersys/repository/ ไม่สำเร็จ
    ให้ติดตั้งด้วยตนเองทำดังนี้ เริ่มต้นติดตั้งโปรแกรมที่จำเป็นใช้งานด้วยคำสั่ง
    sudo apt-get install coreutils dialog genisoimage findutils bash passwd sed squashfs-tools casper rsync mount eject libdebian-installer4 os-prober
    sudo apt-get install ubiquity user-setup discover laptop-detect syslinux xterm util-linux xresprobe

    ต่อให้ดาวน์โหลดแฟ้ม remastersys มาติดตั้งดังนี้
    wget -P /tmp http://ftp.psu.ac.th/pub/remastersys/remastersys_3.0.0-1_all.deb
    sudo dpkg -i /tmp/remastersys_3.0.0-1_all.deb

    บางทีเจอบั๊ก โปรแกรมไม่สร้าง /home/remastersys
    ให้แก้ไขด้วยการสร้างเองด้วยคำสั่ง  sudo mkdir -p /home/remastersys
  • การใช้งานแบบง่ายที่สุด คือเป็นการ backup ทั้ง hard disk มาเก็บไว้เป็น live DVD
    ที่สามารถนำไปบูทใช้งานได้โดยไม่ต้องมี hard disk ใช้คำสั่งว่า  sudo remastersys backup
    แล้วก็ให้รอๆๆ จนงานเสร็จ ช้าหรือเร็วขึ้นกับความเร็วของ disk
    เมื่อเสร็จแล้วจะได้แฟ้ม iso อยู่ที่ /home/remastersys/remastersys
  • หากต้องการให้ปิดการสั่งดีดแผ่นซีดีออกหลังการสั่งให้ shutdown
    ให้แก้ไขแฟ้ม /etc/init.d/casper ประมาณบรรทัดที่ 96
    ยกเลิกบรรทัดคำสั่ง eject เดิม กลายเป็นดังตัวอย่าง
    # eject -p -m /cdrom > /dev/null 2>&1

    และแก้ไขแฟ้ม /etc/remastersys/isolinux/isolinux.cfg.vesamenu
    ให้เพิ่ม noprompt เข้าไป ตัวอย่างเช่น
    label live
      menu label live - boot the Live System
      kernel /casper/vmlinuz
      append  file=/cdrom/preseed/custom.seed boot=casper initrd=/casper/initrd.gz splash noprompt --