ตรวจสอบความถูกต้องของไฟล์ด้วยวิธีการ hash

shecksumระบบปฏิบัติการ และซอฟต์แวร์ต่าง ๆ ในปัจจุบัน มีขนาดของไฟล์ที่ใหญ่มาก การใช้งานแต่ละครั้ง ต้องทำการดาวน์โหลดระบบปฏิบัติการและซอฟต์แวร์นั้น ๆ มาใช้งาน ซึ่งบางครั้ง ไฟล์ที่ทำการดาวน์โหลดมานั้น เมื่อทำการติดตั้งจะพบข้อผิดพลาด (ไฟล์หาย ไฟล์ไม่สมบูรณ์) ทำให้ต้องเสียเวลาดาวน์โหลดและทดสอบการติดตั้งใหม่ และบ่อยครั้งการที่ไฟล์ไม่สมบูรณ์ อาจจะส่งผลให้ไม่สามารถถอดถอนการติดตั้งอย่างหมดจด จึงมีความผิดพลาดเกิดขึ้นกับคอมพิวเตอร์

ปัจจุบันในเว็บไซต์ที่มีการเปิดให้ดาวน์โหลดไฟล์ที่มีขนาดใหญ่ ๆ นั้น ส่วนมากจะมีการแนบไฟล์ hash มาด้วย เช่น

hash01

ซึ่ในไฟล์ จะบอกถึงการ hash ไฟล์ ออกมาเป็นค่าต่าง ๆ ดังนี้ (ผมเลือก sha1.sum.txt)

6272d724f0abb95d2a5652724fe6b3740706d543  CentOS-4.7.ServerCD-i386.iso

การตรวจสอบความถูกต้องของไฟล์นั้น หากเป็นระบบปฏิบัติการ Linux สามารถใช้คำสั่ง md5sum , sha1sum ได้ทันที แต่หากเป็นระบบปฏิบัติการวินโดว์ ต้องใช้โปรแกรมเสริม ในที่นี้ ผมเลือกใช้โปรแกรม hash ของ www.keir.net โดยดาวน์โหลดได้จากที่นี่  [download id=”23″]

ข้อดีของโปรแกรม Hash จากเว็บไซต์ www.keir.net คือ ความสามารถในการตรวจสอบหลายหลายรูปแบบ เช่น

  • Version
  • Date
  • MD5
  • SHA1
  • CRC32

ซึ่งนับว่าเพียงพอแล้ว ต่อการตรวจสอบ  และเขาให้ใช้งานได้ฟรีครับ

เมื่อดาวน์โหลดมาแล้ว ให้ทำการคลายซิปออกมา จะเจอโปรแกรม hash.exe

ดับเบิลคลิ๊กที่โปรแกรมนั้น

browse เลือกไฟล์ที่ต้องการตรวจสอบ หรือหลาย ๆ ไฟล์พร้อมกันได้

hash02

รอสักครู่(ถ้าไฟล์ขนาดใหญ่จะใช้เวลาเพิ่มขึ้น) โปรแกรมจะแจ้ง hash ที่ได้ ให้เรานำค่าของ hash ของโปรแกรมตรวจสอบกับ hash ที่เว็บไซต์แสดงเอาไว้ ถ้าหากตรงกัน ก็แสดงว่า ไฟล์ที่เราดาวน์โหลดมานั้น มีความสมบูรณ์ สามารถนำไปติดตั้งได้

ดังตัวอย่าง hash ที่ได้รับจากโปรแกรมคือ

SHA1: 6272D724F0ABB95D2A5652724FE6B3740706D543

และ hash ที่เว็บไซต์แสดงคือ

6272d724f0abb95d2a5652724fe6b3740706d543  CentOS-4.7.ServerCD-i386.iso

**ต้องตรวจสอบด้วยว่า hash นั้นเป็นแบบไหน เช่น MD5 , SHA1 , CRC32

แต่ถ้าหาก ค่าไม่ตรงกัน ให้ทำการดาวน์โหลดใหม่อีกครั้ง แล้วตรวจสอบใหม่ เพื่อความมั่นใจว่า ระบบปฏิบัติการ/ซอฟต์แวร์ที่เราต้องการใช้นั้น มีความสมบูรณ์ถูกต้อง




CentOS 5.3 yum upgrade TypeError: unsubscriptable object

วันนี้ผมได้ตรวจสอบเครื่องเซิร์ฟเวอร์ที่เป็นงานประจำ ตามปกติ และได้ทำการอัพเกรดเครื่อง เซิร์ฟเวอร์ ซึ่งรันระบบปฏิบัติการ CentOS 5.3 64 bit โดยใช้คำสั่ง yum upgrade เมื่อโหลดไปซักพักปรากฏว่าเกิด Error ขึ้นดังนี้ครับ

[root@centos ~]# yum -y upgrade
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosn3.centos.org
* updates: centosk3.centos.org
* addons: centosk3.centos.org
* extras: centosh3.centos.org
Setting up Upgrade Process
Resolving Dependencies
–> Running transaction check
—> Package perl-DBD-Pg.x86_64 0:1.49-2.el5_3.1 set to be updated
Traceback (most recent call last):
File “/usr/bin/yum”, line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File “/usr/share/yum-cli/yummain.py”, line 229, in user_main
errcode = main(args)
File “/usr/share/yum-cli/yummain.py”, line 145, in main
(result, resultmsgs) = base.buildTransaction()
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 647, in buildTransaction
(rescode, restring) = self.resolveDeps()
File “/usr/lib/python2.4/site-packages/yum/depsolve.py”, line 704, in resolveDeps
for po, dep in self._checkFileRequires():
File “/usr/lib/python2.4/site-packages/yum/depsolve.py”, line 939, in _checkFileRequires
if not self.tsInfo.getOldProvides(filename) and not self.tsInfo.getNewProvides(filename):
File “/usr/lib/python2.4/site-packages/yum/transactioninfo.py”, line 414, in getNewProvides
for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
TypeError: unsubscriptable object
[root@centos ~]#

สาเหตุน่ามาจาก การอัพเกรดเวอร์ชั่นก่อนหน้านี้ ที่เป็น CentOS 5.2 และ yum คงจำค่าคอนฟิกเดิม ดังนั้น เมื่ออัพมาเป็น CentOS 5.3 แล้ว จึงทำให้ yum ทำงานผิดพลาด

ทางแก้ก็คือ การทำความสะอาดให้กับ yum ครับ ดังนี้

[root@centos ~]# yum clean metadata
Loaded plugins: fastestmirror
29 metadata files removed
12 sqlite files removed
0 metadata files removed

หรือใช้คำสั่ง

[root@centos ~]# yum clean all

ก็จะได้ผลลัพธ์เดียวกันครับ

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

[root@centos ~]# yum -y upgrade

ก็จะอัพเกรดได้ตามปกติแล้วครับ




เล่นกับ google translate

googleยุคแห่งการเชื่อมต่อไร้พรมแดน หรือยุคแห่งอินเตอร์เน็ต ช่วยให้การติดต่อสื่อสาร การค้นหาความรู้ เป็นไปอย่างง่ายดาย เพียงปลายนิ้วคลิ๊ก และแน่นอนว่า เนื้อหาที่แสดงทางหน้าเว็บเพ็จนั้น จะเป็นภาษาของแต่ละประเทศ รวมทั้งประเทศไทยด้วย ซึ่งบางแห่งลงทุนทำเนื้อหาที่เป็นภาษาไทยและภาษาอังกฤษ เพียงแค่ให้ผู้ใช้บริการสามารถใช้งานได้ แต่ต้องแลกมาซึ่งเวลาในการแปลและการปรับแต่งเนื้อหาต่าง ๆ ให้ตรงกัน แต่ถ้าคนอ่านทั่วโลกต้องการอ่านละ เราต้องลงทุนทำเนื้อหาเป็น 10 ภาษาหรือเปล่า ?

เจ้าพ่อแห่งวงการ Search Engine (Google) ได้สร้างเครื่องมือช่วยในการแปลภาษาในรูปแบบต่าง ๆ เช่น

จากหน้าเว็บไซต์

จากไฟล์

จากลิงค์ (URL)

ซึ่งยังไม่สมบูรณ์แบบซะทีเดียว เพราะข้อความที่แปลออกมานั้น อ่านแล้วยังงง ๆ กับคำแปล ยิ่งถ้าเป็นศัพท์เฉพาะทางด้วยแล้ว จะแปลคนละทิศทางกันเลย แต่กระนั้นก็ตาม ยังถือว่า เป็นเครื่องมือที่ช่วยให้การทำงานของเราสะดวกขึ้นมากครับ

การเรียกใช้บริการ สามารถเข้าใช้ได้ที่ http://translate.google.co.th

ภาษาที่พร้อมให้บริการแปล มีดังนี้

ภาษากรีก , ภาษากาลิเชียน , ภาษาเกาหลี , ภาษาคะตะลัน , ภาษาโครเอเชีย , ภาษาจีน , ภาษาเช็ก , ภาษาเซอร์เบียน , ภาษาญี่ปุ่น , ภาษาดัตช์ , ภาษาเดนมาร์ก , ภาษาตุรกี , ภาษาไทย , ภาษานอร์เวย์ , ภาษาบัลกาเรีย , ภาษาเปอร์เซีย , ภาษาโปรตุเกส , ภาษาโปแลนด์ , ภาษาฝรั่งเศส , ภาษาฟินแลนด์ , ภาษาฟิลิปปินส์ ,

ภาษามัลทีส , ภาษายูเครน , ภาษาเยอรมัน , ภาษารัสเซีย , ภาษาโรมาเนีย , ภาษาลัทเวีย , ภาษาลิทัวเนีย , ภาษาเวียดนาม , ภาษาสเปน , ภาษาสโลวัก , ภาษาสโลเวเนีย , ภาษาสวีเดน , ภาษาอังกฤษ , ภาษาอัลบาเนีย , ภาษาอาหรับ , ภาษาอิตาลี , ภาษาอินโดนีเซีย , ภาษาเอสโทเนีย , ภาษาฮังกาเรียน , ภาษาฮินดู , ภาษาฮิบรู

ผมได้ทดสอบป้อนข้อความคร่าว ๆ ผ่านทางหน้าเว็บไซต์ ได้ผลดังนี้ครับ

google01

แต่วันนี้ ผมจะมาแนะนำ การใช้โค๊ดสำหรับแปลเว็บไซต์ของเราเองครับ ให้สามารถรองรับภาษาได้มากขึ้น นั่นคือการใช้งาน “เครื่องมือ” ของ Google จะว่าไปแล้ว ก็คือเอาโค๊ดของ Google มาแปะไว้ที่เว็บไซต์ของเราเองครับ เมื่อเอาโค๊ดไปแปะแล้ว จะมีเครื่องที่ที่ชื่อว่า Google Translate แสดงตามตำแหน่งที่เราได้ระบุไว้

google02

สำหรับผู้ที่ใช้ WordPress แล้ว มี Plugin อีกตัวครับ นั่นคือ global-translator ซึ่งเมื่อเอามาติดตั้งแล้ว เราสามารถคลิ๊กที่ภาษาที่เราต้องการได้เลยครับ ดังตัวอย่าง ผมทดสอบแปลเป็นภาษาอังกฤษ และ ภาษาญี่ปุ่นครับ

google03

google04

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




เล่น/ลบ/ลง Windows live messenger ไม่ได้ (วาระแห่งชาติ)

liveหลังจากที่ผมได้ทดสอบติดตั้ง Windows 7 Build 7260  32 bit ตามที่มีให้โหลดกันทั่วไป พบว่าการใช้งานลื่นไหลดีกว่าเวอร์ชั่นก่อนหน้านี้มาก บั๊คต่าง ๆ หายไปเยอะ (แต่ก็มีอยู่) การติดตั้ง Applications อื่น ๆ ก็ไม่มีปัญหาใด ๆ เกิดขึ้น

คราวนี้มาถึงคิวการติดตั้ง Windows live messenger 2009 ซึ่งผมพยายามติดตั้งเท่าไหร่ มันก็ไม่ยอม ฟ้อง Error ตลอด จำใจต้องไปดาวน์โหลดตัวติดตั้งที่เป็น Offline Install (เฉพาะ messenger) ขนาดประมาณ 24 MB พอกด install เท่านั้น มันก็หายแว๊ปไปเลย ไม่มีการแจ้งว่า ติดตั้งเสร็จหรือไม่เสร็จ แต่ก็มีการสร้าง program group ที่ start menu ซึ่งเรียกใช้งานแล้ว ไม่สามารถ login ได้

พอจะเอามันออก ก็ไม่มีใน program and feture (Add/Remove Program) อุตส่าห์ไปหา เครื่องมือช่วยในการถอดถอนการติดตั้งเช่น your uninstall ก็ยังหาไม่เจอ

ก็เลยไปโหลดตัว windows live messenger 2009 offline install เวอร์ชั่นเต็ม มาติดตั้งทับ มันก็แจ้งว่า มีการติดตั้ง messenger ไปแล้ว ไม่สามารถแก้ไขได้

wlm00

wlm01

wlm02

เอาละสิ เรื่องไม่เป็นเรื่องแท้ ๆ ต้องมาค้นหาวิธีกำจัดมันออกไปให้พัน ๆ ซะแล้ว (คนส่วนใหญ่จะชอบพูดว่า ใช้ติดต่องาน ไม่มี M งานไม่เดิน 55) เลยต้องไปด้อม ๆ มอง ๆ แถวเว็บไซต์ของไมโครซอฟต์ ก็พบเครื่องมืออยู่ตัวหนึ่ง ที่ชื่อว่า Windows Installer CleanUp Utility ซึ่งเป็นเครื่องมือที่ช่วยในการกำจัดหรือทำความสะอาดซอฟต์แวร์(ขยะ) ของไมโครซอฟต์เอง ขนาดของโปรแกรม ประมาณ 351 KB เองครับ

หลังจากที่ดาวน์โหลดมาแล้ว ก็ติดตั้งแปปเดียว แล้วเรียกใช้งาน แล้วพยายามมองหาเจ้าตัวปัญหา Windows live messenger (พบจนได้ครับ)

wlm03

wlm04

จากนั้น ก็ให้คลิ๊ก ที่ชื่อของ windows live messenger แล้วคลิ๊กที่ Remove ตัวโปรแกรมจะแจ้งเตือนนิดหนึ่ง ให้คลิ๊กยอมรับไปครับ เพียงเท่านี้ เจ้า windows live messenger ก็หายลับไปจากคอมพิวเตอร์เราแล้ว

ต่อไปให้ทดสอบติดตั้ง windows live messenger ใหม่อีกที พบว่าสามารถใช้งานได้แล้วครับ

wlm05




แก้ปัญหาเข้า packages ของ trixbox ce ไม่ได้

trixboxสองสามวันนี้น้องที่สำนักฯ ได้รับคำสั่งให้ติดตั้งระบบ VoIP ขึ้นมาใหม่ แทนที่ตัวเดิม ที่ไม่สามารถใช้งานได้ จึงได้โหลดซอฟต์แวร์ Trixbox ce ซึ่ง Build เข้ากับ CentOS 5.2 ลงเสร็จก็เข้าหน้าเว็บคอนฟิกได้เลย

แต่ทุกอย่าง ไม่ได้เป็นอย่างที่ใจคิด เพราะเมื่อจะเข้าไปดูแพ็คเก็จที่ติดตั้งในตัว Trixbox ก็ไม่สามารถใช้งานได้ โดยมีการแจ้ง Error กลับมาดังนี้

Error: the XML response that was returned from the server is invalid.
Received: Cannot write to file (cache/outputYumAvailList.txt)

ซึ่งได้ทำการค้นหาข้อมูลจากเว็บต่าง ๆ ก็ไม่ค่อยได้เรื่องเท่าไหร่ รู้สึกว่าจะคาดเดาไม่ค่อยตรงกับความเป็นจริงเท่าไหร่ จึงได้กลับมาอ่าน Error อีกครั้ง โดยเฉพาะ outputYumAvailList.txt

sip01

เพราะปกติทั่วไปการจะใช้งาน yum ได้ เครื่องต้องสามารถติดต่อกับอินเตอร์เน็ตเท่านั้น (ไม่นับรวมการติดตั้งผ่าน cd-rom) คาดการว่า น่าจะเป็นสาเหตุหลักที่ไม่สามารถใช้งาน packet เพราะมันต่อเน็ตไม่ได้

ลงมือจัดการดังนี้

มีไฟล์หลัก ๆ อยู่ 2 ไฟล์ด้วยกันที่จำเป็นต้องแก้ไข โดยเพิ่มและแก้ไขให้ตรงกับความต้องการใช้งานดังนี้

[trixbox1.localdomain etc]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain   localhost
192.168.10.99              sipcm.rmutl.ac.th       sipcm

ไฟล์ที่ 2 คือ ไฟล์ที่ทำหน้าที่บันทึก dns server ในที่นี้คือ resolv.conf

[trixbox1.localdomain etc]# vi /etc/resolv.conf
nameserver 192.168.10.100
nameserver 192.168.10.101

แก้ไขเพียงเท่านี้ (น่าจะ) ก็สามารถใช้งานได้แล้วครับ ทดสอบโดยการคลิ๊กที่ packages อีกครั้ง แต่หากยังไม่สามารถใช้งานได้ ก็มีอีกกรณีหนึ่งคือ การกำหนดค่าของ memory น้อยเกินไป ให้ทำการแก้ไขดังนี้

vi /etc/php.ini

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60     ; Maximum amount of time each script may spend parsing request data
memory_limit = 512M      ; Maximum amount of memory a script may consume (8MB)

จากนั้น restart service ของ apache ครับ

[trixbox1.localdomain etc]# service  httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

ต้องย้ำเลยนะครับ ว่าเครื่องนี้ ต้องสามารถเชื่อมต่อกับอินเตอร์เน็ตได้ เพราะ packages จะวิ่งไปเช็คจากอินเตอร์เน็ต ว่ามีการอัพเดทแล้วหรือไม่




ตั้ง ntp สำหรับ Alcatel Switch

ได้เวลาเขียนบทความเกี่ยวกับ Alcatel ซะที ซึ่งก่อนหน้านี้เกริ่นหลายรอบแล้วว่าจะเขียน แต่ก็ไปเขียนเกี่ยวกับ 3Com ซะหมด รอบนี้ขอเขียน เป็นจุดเริ่มต้นสำหรับบทความอื่น ๆ ที่จะตามมาก็แล้วกันครับ

NTP ย่อมาจาก Network Time Protocol คือโปรโตคอลสำหรับการปรับค่าเวลาของนาฬิกาในระบบคอมพิวเตอร์ โดย NTP ใช้พอร์ต 123 ของโปรโตคอล UDP เป็นพื้นฐาน ทำให้เวลาที่ใช้งานมีความเทียงตรง และเท่ากันทุก ๆ เครื่องที่ใช้แม่ข่ายเดียวกัน โดยความผิดพลาดจะน้อยมาก อยู่ในระดับ 1/100 วินาที เป็นอย่างต่ำ หากตั้งค่า NTP แล้ว จะสามารถสื่อสารกับเครื่องแม่ข่ายในการปรับเปลี่ยน ปี เดือน วัน วันที่ และเวลา ให้เป็นไปตามเครื่องแม่ข่าย (ยกเว้นระบบปฏิบัติการวินโดว์ทุกตระกูล ที่ปรับเปลี่ยนเวลาได้เท่านั้น และไม่เกิน 864000 วินาที หรือ 1 วัน ถ้าเกินนั้น จะทำให้ วันที่ผิดเพี้ยน) การตั้งค่าของ NTP ให้กับอุปกรณ์ระบบเครือข่าย จะช่วยให้การตรวจสอบข้อมูล ทำได้ง่ายขึ้น และไม่ต้องคอยตั้งค่าเวลาทุก ๆ เครื่อง ทุก ๆ ครั้ง ที่เวลาผิดเพี้ยนไป

สำหรับ Alcatel Switch 6850, 9700 นั้น สามารถดำเนินการได้ตามนี้

ตรวจสอบว่า วันและเวลาที่อุปกรณ์ มีค่าเท่าไหร่

Alcatel-9700-> show system
System:
Description:  6.3.1.1042.R01 Service Release, November 20, 2008.,
Object ID:    1.3.6.1.4.1.6486.800.1.1.2.1.8.1.1,
Up Time:      162 days 0 hours 56 minutes and 6 seconds,
Contact:      Alcatel-Lucent, http://alcatel-lucent.com/wps/portal/enterprise,
Name:         Alcatel-9700,
Location:     network,
Services:     72,
Date & Time:  THU JUN 18 2009  14:27:13 (LOCAL)

กำหนดเครื่องแม่ข่ายหรือ ntp server ดังนี้ ในที่นี้ ntp server คือไอพี 192.168.10.200

Alcatel-9700->ntp server 192.168.10.200

Alcatel-9700->ntp client enable

ทำการตรวจสอบว่า เวลาที่เราได้ชี้ไปหาเครื่องแม่ข่ายนั้นถูกต้องหรือไม่

Alcatel-9700-> show ntp server status
IP address         = 192.168.10.200,
Host mode          = client,
Peer mode          = server,
Prefer             = no,
Version            = 4,
Key                = 0,
Stratum            = 2,
Minpoll            = 6 (64 seconds),
Maxpoll            = 10 (1024 seconds),
Delay              = 0.016 seconds,
Offset             = 0.058 seconds,
Dispersion         = 1.952 seconds
Root distance      = 0.027,
Precision          = -20,
Reference IP       = 203.185.69.59,
Status             = configured : reachable : rejected,
Uptime count       = 13894301 seconds,
Reachability       = 7,
Unreachable count  = 0,
Stats reset count  = 13894136 seconds,
Packets sent       = 3,
Packets received   = 3,
Duplicate packets  = 0,
Bogus origin       = 0,
Bad authentication = 0,
Bad dispersion     = 0,
Last Event         = peer changed to reachable,

ตรวจสอบการเชื่อมต่อกับเครื่อง ntp server โดยใช้คำสั่งดังนี้

Alcatel-9700-> show ntp client server-list
IP Address        Ver   Key    St     Delay        Offset         Disp
—————–+—+——-+—-+———-+—————–+———-
*192.168.10.200        4       0    2      0.016             0.133      0.016

ตรวจสอบการอัพเดทเวลาว่า มีการอัพเดทล่าสุดเมื่อไหร่ และเวลาปัจจุบันตรงกับเครื่องแม่ข่ายหรือไม่ โดยใช้คำสั่ง

Alcatel-9700-> show ntp client
Current time:                   Thu, Jun 18 2009  8:38:44.619 (UTC), –> ตรงนี้เป็น UTC นะครับเวลาดูก็ +7 เอาเองนะครับ
Last NTP update:                Thu, Jun 18 2009  8:38:24.385 (UTC),
Server reference:               192.168.10.200,
Client mode:                    enabled,
Broadcast client mode:          disabled,
Broadcast delay (microseconds): 4000,
Server qualification:           synchronized

ลองตรวจวันและเวลาอีกครั้งด้วยคำสั่ง

Alcatel-9700-> show system
System:
Description:  6.3.1.1042.R01 Service Release, November 20, 2008.,
Object ID:    1.3.6.1.4.1.6486.800.1.1.2.1.8.1.1,
Up Time:      162 days 1 hours 4 minutes and 58 seconds,
Contact:      Alcatel-Lucent, http://alcatel-lucent.com/wps/portal/enterprise,
Name:         Node3Library,
Location:     Library,
Services:     72,
Date & Time:  THU JUN 18 2009  14:36:05 (LOCAL)

หรือตรวจสอบด้วยคำสั่ง

Node 3 Library-> system time
16:01:00 (LOCAL)

Node 3 Library-> system date
THU JUN 18 2009

เพียงเท่านี้ ก็เรียบร้อยครับ คราวนี้ ก็ไม่ต้องกังวลว่า เวลาจะคลาดเคลื่อนกันแล้ว

อย่าลืมบันทึกก่อนออกด้วยนะครับ

Alcatel-9700->write memory

Alcatel-9700->copy working certified

หรือถ้ามี cmm 2 ชุด ก็เพิ่ม flash-synchro เข้าไปด้วยครับ

Alcatel-9700->copy working certified flash-synchro




เปลี่ยนรหัสผ่านของ admin ใน 3com switch

วันนี้น้องที่สำนักวิทยฯ ได้อัพเดทเฟิร์มแวร์ของ switching 3com 4500 ใหม่ อัพเสร็จแล้ว รีบูต มันบังคับให้เปลี่ยนพาสเวิร์ดใหม่ พอน้องใส่รหัสผ่านเดิมเข้าไป มันก็ไม่ยอม จำใจต้องใช้รหัสผ่านที่ยาวถึง 10 ตัว มันถึงจะยอม เรื่องนี้ผมไม่ค่อยได้แตะต้องมันเท่าไหร่นัก ก็มักจะลืม ๆ เหมือนกัน เพราะเซ็ตครั้งเดียวมันก็ใช้งานได้ตลอด เอาละ ในเมื่อมันเกิดปัญหา (ความจริงมันสร้างมาเพื่อความปลอดภัย) เราก็ต้องแก้ไข

login เข้าสู่ตัวอุปกรณ์ และเรียกใช้งาน system-view และผมได้กำหนดให้ ความยาวของรหัสผ่าน อย่างน้อย 6 ตัวอักษร (ในส่วนนี้มีความสำคัญครับ หากรันคำสั่งแบบผม จะส่งผลกับ user ทั้งหมด แต่ถ้าต้องการแก้ไขเฉพาะ user นั้น ๆ ต้องเข้าไปที่ user นั้นก่อนครับ โดยเรียกใช้คำสั่ง local-user xxxx แล้วถึงจะใช้คำสั่งนี้)

ในที่นี้ เป็น switching 3com รุ่น 4500 เฟิร์มแวร์ s3n03_03_02s56.app รุ่นอื่น ๆ หรือเฟิร์มแวร์อื่น อาจจะได้ผลลัพธ์แตกต่างออกไป

<4500>sys
System View: return to User View with Ctrl+Z.
[4500]]password-control length 6
[4500]local-user admin
[4500-luser-admin]

เมื่อเปลี่ยนความยาวของรหัสผ่านแล้ว ทีนี้เราจะมาเปลี่ยนรหัสผ่านกัน ซึ่ง จะมีอยู่ 2 รูปแบบคือ

cipher = การเข้ารหัสของรหัสผ่าน ซึ่งเราจะไม่รู้ว่ารหัสผ่านที่แท้จริงคืออะไร

simple = แสดงรหัสผ่านที่แท้จริง ใส่ยังไง ก็แสดงออกอย่างนั้น **ไม่แนะนำให้ใช้ครับ

[4500-luser-admin]password ?
cipher  Display password with cipher text
simple  Display password with plain text

เอาละ ได้เวลาเปลี่ยนรหัสผ่านกันแล้ว โดยจะเปลี่ยนรหัสผ่านของ admin ให้เป็น abcdef ก็ทำได้ตามคำสั่งด้านล่าง

[4500-luser-admin]password cipher abcdef
The system failed to assign password. It has been used previously.

เจอปัญหาอีกแล้วครับ ครั้งนี้ระบบแจ้งว่า รหัสผ่านที่เรากำลังป้อนนั้น ถูกใช้ไปก่อนหน้านี้แล้ว (ก็คือ ตอนที่มันบังคับให้เปลี่ยนตอนแรกไง)

เราสามารถดูได้ว่า มันมี policy อะไรบ้าง ดังนี้

[4500]password-control ?
aging                   Specify password aging time –> การนำพาสเวิร์ดเดิมกลับมาใช้
alert-before-expire     Specify the alert time before password expired –> การแจ้งเตือนก่อนรหัสผ่านหมดอายุ
authentication-timeout  Specify the authentication timeout –> เวลาที่ใช้ในการกรอกรหัสผ่าน
composition             Specify composition of password –> องค์ประกอบของรหัสผ่าน เช่น ตัวเลข ตัวอักษร อักขระ
history                 Specify maximum history record –> รหัสผ่านที่ผ่านมา (ที่เคยใช้มา)
length                  Specify minimum length of password –> ความยาวของรหัสผ่าน
login-attempt           Specify the local user’s login attempts –> จำนวนครั้งในการ login (ไม่ผ่านติดต่อกัน)
super                   The super user’s password controls –> รหัสผ่านของ super user

เมื่อรู้ว่า แต่ละอย่างคืออะไรแล้ว เราสามารถตรวจสอบว่า ค่าต่าง ๆ นั้น ถูกตั้งค่าเป็นอะไรบ้าง ดังนี้

[4500]display  password-control
Global password settings for all users:
Password aging:                 Enabled
Password length:                Enabled(6 Characters)
Password composition:           Enabled(1 type(s),  1 character(s) per type)
Password history:               Enabled(Max history record:4)
Password alert before expire:   7 days
Password authentication-timeout:60 seconds
Password attempt times:         3 times
Password attempt-failed action: Lock for 120 minutes

ในที่นี้ จะขอปิดระบบทั้งหมดเพื่อให้ใช้งานรหัสผ่านที่ง่ายต่อการจดจำของเรา (ไม่ควรตั้งง่ายเกินไป) ย้ำอีกทีว่าในส่วนนี้มีความสำคัญครับ หากรันคำสั่งแบบผม จะส่งผลกับ user ทั้งหมด แต่ถ้าต้องการแก้ไขเฉพาะ user นั้น ๆ ต้องเข้าไปที่ user นั้นก่อนครับ โดยเรียกใช้คำสั่ง local-user xxxx แล้วถึงจะใช้คำสั่งนี้

[4500]undo password-control aging enable
Password aging disabled for all users.
[4500]undo password-control composition enable
Password composition is disabled for all users.
[4500]undo password-control history enable
Password history disabled for all users.

ต่อไปก็ถึงเวลาที่จะเปลี่ยนรหัสผ่านกันแล้วครับ ผมเข้าไปที่ local-user admin เพื่อจะเปลี่ยนรหัสผ่านของ admin ดังนี้

[4500]local-user admin
[4500-luser-admin]password cipher abcdef
Updating user password, please wait……….

***เมื่อใช้ cipher รหัสผ่านที่เราพิมพ์ว่า  abcdef  อาจจะกลายเป็นแบบนี้  R9E#&=!H6Q_QxT77=^Q`MAF4<1!!

[4500-luser-admin]quit
[4500]save
[4500]quit
<4500>quit

ลองทดสอบเข้าระบบอีกครั้ง ก็จะสามารถใช้งานรหัสผ่านใหม่ได้แล้วครับ




เมื่อ stp ของ alcatel และ 3com แย่งกันเป็น root

connectรูปแบบการเชื่อมต่อระบบเครือข่ายคอมพิวเตอร์ขององค์กรต่าง ๆ มักจะมีรูปแบบเป็น tree คือ มีการเชื่อมต่อเป็นชั้น ๆ โดยชั้นสูงสุดที่เรียกว่า root นั้น จะเป็นตัวสำคัญ ที่จะทำหน้าที่เก็บเส้นทาง (Routing Table) ไปยังลูกข่ายทั้งหมด  ซึ่งบ่อยครั้งที่เกิดปัญหา loop ในเครือข่าย เพราะมีการเชื่อมต่อในรูปแบบวงกลม (โดยตั้งใจ และไม่ได้ตั้งใจ) จึงทำให้อุปกรณ์ระบบเครือข่ายต้องพิจารณาตัวเอง ว่าสมควรจะส่งข้อมูลให้กับใคร หรือใครที่จะทำหน้าที่เป็น root นั่นเอง

ความสำคัญอยู่ที่ค่าของ stp ที่เรียกว่า cost นั้น ปกติจะมีค่าเท่ากัน คือ 32768 ดังนั้น หากมีลูปเกิดขึ้นในระบบจริง อุปกรณ์จะไม่รู้ว่าใครที่สมควรจะเป็น root จึงทำให้มันต้องผลัดกันเป็น root ส่งผลกับระบบเครือข่ายโดยตรงคือ ไม่สามารถใช้งานได้ (เพราะ root เปลี่ยนไปเรื่อย ๆ )

ดังนั้น จึงควรมีการตั้งค่า cost ให้แตกต่างกันออกไป โดยกำหนดให้ root มีค่าน้อยสุด (ค่าน้อยสุดมีความสำคัญมากสุด) และเพิ่มค่าขึ้นเรื่อย ๆ ตามจำนวนของ hop ที่เชื่อมต่อ (ค่อยว่ากันอีกทีในวันอื่นครับ)

Spanning_tree

แต่ถ้าหากมีจำนวนของอุปกรณ์ไม่มากนักเช่น 3-5 ตัว และเราเห็นได้ชัดเจนว่ารูปแบบที่เชื่อมต่อ ไม่ได้ซับซ้อนอะไร ก็สามารถที่จะปิด stp ทิ้งได้เลย เพราะไม่ต้องเสียเวลามาแก้ไขค่า cost ต่าง ๆ (แต่เกิด loop ไม่รู้ด้วยนะ)

ที่อุปกรณ์ switching 3com 4500,5500,9700

หากเจอ log ที่มีข้อความแบบนี้ ที่เยอะมาก ๆ  จะสังเกตุเห็นว่า interface up/down สลับกันไปเรื่อย ๆ นั่นเพราะ มีการโหวตให้ตัวอื่นเป็น root จึงต้องตัดเส้นทางอื่นออกไป (อาการนี้อาจจะเจอในการ loop ด้วยครับ)

#Jun 14 09:41:23:116 2009 4500 L2INF/2/PORT LINK STATUS CHANGE:- 1 – Trap 1.3.6.1.6.3.1.1.5.3(linkDown): portIndex is 4227706, ifAdminStatus is 1, ifOperStatus is 2

%Jun 14 09:41:23:118 2009 4500 L2INF/5/PORT LINK STATUS CHANGE:- 1 – Ethernet1/0/11 is DOWN

ตรวจสอบการทำงานของ stp ด้วยคำสั่ง (ในที่นี้ดูพอร์ตที่ 11 แต่ถ้าต้องการดูทั้งหมดก็ใช้ display stp ก็ได้ครับ)

[3Com-sw]display stp interface Ethernet 1/0/11

—-[CIST][Port11(Ethernet1/0/11)][DISCARDING]—-
Port Protocol       :enabled
Port Role           :CIST Designated Port
Port Priority       :128
Port Cost(Dot1T)    :Config=auto / Active=200000
Desg. Bridge/Port   :32768.001e-c17d-7580 / 128.11
Port Edged          :Config=disabled / Active=disabled
Point-to-point      :Config=auto / Active=true
Transmit Limit      :10 packets/hello-time
Protection Type     :Loop
MSTP BPDU format    :Config=auto / Active=legacy
Port Config
Digest Snooping     :disabled
Num of Vlans Mapped :1
PortTimes           :Hello 2s MaxAge 20s FwDly 15s MsgAge 1s RemHop 20
BPDU Sent           :14
TCN: 0, Config: 0, RST: 0, MST: 14
BPDU Received       :0
TCN: 0, Config: 0, RST: 0, MST: 0

ทำการปิด stp ด้วยคำสั่ง (คำสั่งนี้ จะปิด stp ทุกพอร์ต ถ้าอยากปิดบางพอร์ต ต้องเข้าไปที่ interface นั้น ๆ ก่อน แล้วค่อยใช้ stp disable)

[3Com-sw]stp disable

%Jun 14 09:41:24:623 2009 4500 MSTP/3/STPSTOP:- 1 -STP is now disabled on the de
vice.

ตรวจสอบดูอีกครั้งด้วยคำสั่ง

[3Com-sw]display stp interface Ethernet 1/0/11
Protocol Status    :disabled
Protocol Std.      :IEEE 802.1s
Version            :3
CIST Bridge-Prio.  :32768
MAC address        :001e-c17d-7580
Max age(s)         :20
Forward delay(s)   :15
Hello time(s)      :2
Max hops           :20

[3Com-sw]save

เพียงเท่านี้ ก็จะไม่มีการโหวตการเป็น root อีกแล้วครับ




การตั้งค่า ntp ของ 3com switching

timeSwitching HUB คือ อุปกรณ์ที่ทำหน้าที่กระจายสัญญาณระบบเครือข่ายอินเตอร์เน็ต ทุก ๆ ข้อมูลจะวิ่งผ่าน Switching ทั้งสิ้น ซึ่งถือว่ามีความสำคัญต่อระบบเครือข่ายอย่างมาก รวมไปถึงการเข้าไปปรับแต่งค่าของอุปกรณ์เหล่านั้นด้วย

บางแห่งอาจจะมีผู้ดูแลระบบเครือข่ายหลายคน จึงทำให้ค่าคอนฟิกมีการปรับเปลี่ยนไปมาโดยไม่รู้ตัว ดังนั้นจึงต้องอาศัย syslog ของตัวอุปกรณ์ช่วยตรวจสอบว่า มีใครเข้ามาจัดการปรับแต่งค่าคอนฟิกบ้าง หรือบางแห่งอาจจะสร้าง syslog server แล้วให้อุปกรณ์ Switching ส่งค่าไปเก็บไว้ที่ syslog server ซึ่งจะช่วยให้สามารถเก็บบันทึกได้นานและค้นหาง่ายยิ่งขึ้น

แต่สิ่งที่ผู้ดูแลระบบส่วนใหญ่มักจะปล่อยปะละเลยคือ การตั้งค่าวันเวลา ให้ตรงกัน เพราะมีความสำคัญมากในการสืบค้นประวัติย้อนหลัง หากวันเวลาไม่ตรงกันแล้ว การตรวจสอบแทบจะเป็นไปไม่ได้เลย

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

ในที่นี้จะเสนอการตั้งค่า ntp พร้อมกับ การตั้งค่าการส่ง log ไปยัง syslog server ด้วย

เริ่มต้นจาก 3Com 4500, 3com 5500

<3Com-sw>display clock
22:52:16 th Sat 01/15/2005
Time Zone : th add 07:00:00

<3Com-sw>clock timezone th add 07:00:00

<3Com-sw>system
[3Com-sw]ntp-service unicast-server 10.0.1.105

*หมายเหตุ 10.0.1.105 คือไอพีของเครื่อง ntp server หากในองค์กรไม่มี ntp server ก็สามารถใช้ ntp server จากที่อื่นได้ หรือจะลองใช้ ntp server จากบทความ “เทียบเวลา ให้ตรงตามมาตรฐาน” ก็ได้ครับผม อ้อ nslookup เอาเองนะครับ เพราะในอุปกรณ์ มันจะให้ใส่เป็นไอพีครับผม

ทดสอบเรียกดูเวลาอีกครั้ง จะพบว่ามีการเปลี่ยนแปลง ทั้ง เวลา วัน เดือน และปี ทั้งหมด

[3Com-sw]display clock
08:41:02 th Sat 06/13/2009
Time Zone : th add 07:00:00

ต่อไปเราจะตั้งค่าให้ SW ส่ง log ไปยัง syslogserver (ไอพีของ syslog server ในที่นี้คือ 192.168.10.200)

[3Com-sw]info-center loghost 192.168.10.200

แค่คำสั่งเดียวก็จะทำให้ log ของตัวอุปกรณ์ ถูกส่งไปยัง syslog server แล้วครับ (software manageEngine Eventlog นี้ ถ้าเป็นตัวฟรี จะสามารถใช้ได้ 5 อุปกรณ์ครับ)

syslog

อ้อ อย่าลืม save ด้วยล่ะ เดี๋ยวเปิดเครื่องมาใหม่ คอนฟิกเดิมหายหมดนะครับ

[3Com-sw]save

โอกาสหน้า จะมีวิธีเซ็ตกับ Alcatel มาฝากครับ




ใช้ Data Mapping ใน Moodle

จากการแนะนำการใช้งาน LDAP ใน moodle กับ Active Directory ในครั้งก่อน ช่วยให้การใช้งานเป็นไปอย่างง่ายดาย เพราะใช้ username และ password จาก Active Directory ได้โดยตรง แต่ยังไม่ได้ปรับแต่งให้ดึงข้อมูลที่เป็นชื่อ – สกุล และ e-mail มาใช้งาน ซึ่งใน moodle เรียกการดึงข้อมูลนี้ว่า Data Mappings

Data Mappings ของ moodle คือ การดึงข้อมูลจาก MS Active Directory 2003 server ในฟิลด์ที่เราต้องการ ในที่นี้จะใช้งานหลัก ๆ (สำหรับผมเอง)อยู่ 3 ฟิลด์ด้วยกันคือ

First Name คือ  ชื่อ

Surname คือ นามสกุล

และ Email address คือ e-mail ของคนนั้น ๆ

โดยที่ข้อมูลทั้งหมด จะอยู่ใน AD ซึ่งจะช่วยให้ผู้ใช้งานไม่ต้องกรอกข้อมูลใด ๆ เพิ่มเติม login เข้าไป ก็ใช้งานได้ทันที

ให้เราเข้าไปยังส่วนของ LDAP Server เลื่อนลงมาด้านล่างจะพบกับหัวข้อ DATA MAPPING ให้เราทำการกรอกข้อมูลดังนี้

First Name -> givenName
Surname -> sn
Email address -> mail

moodle-mapping
** มีข้อแม้เดียวคือ ต้องผ่านการใช้งาน LDAP มาก่อน หรือเชื่อมต่อกับ LDAP เสร็จสมบูรณ์แล้ว จึงจะสามารถใช้งานได้

เมื่อกรอกข้อมูลเสร็จเรียบร้อย ให้ทำการบันทึก แล้วล็อกอินด้วยชื่ออื่น ที่มีอยู่ใน Active Directory จะพบว่า ระบบจะดึงชื่อที่มีอยู่ใน Active Directory มาใช้งาน (ต้องเป็น user ที่ยังไม่เคยล็อกอินมาก่อนเท่านั้น เพราะ moodle จะเก็บ Profile ของคนที่ล็อกอินแล้วไว้ในระบบด้วย ดังนั้นจะไม่พบการเปลี่ยนแปลง ให้ลบ user นั้น ๆ ออกจาก moodle จึงจะเห็นการเปลี่ยนแปลง)

ผลลัพธ์ที่ได้คือ

listname

ดูได้จากเมนูของผู้ดูแลระบบ Users –> Accounts –> Browse list of users

หากมีการล็อคอินเข้ามา ก็จะพบ ชื่อ – สกุล และ E-Mail ตามที่มีอยู่ใน AD ครับ

ตัวอย่างอื่น ๆ หรือดูข้อมูลจากเว็บไซต์นี้ครับ http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm

CN – Common Name CN=Guy Thomas.  Actually, this LDAP attribute is made up from givenName joined to SN.
description What you see in Active Directory Users and Computers.  Not to be confused with displayName on the Users property sheet.
displayName displayName = Guy Thomas.  If you script this property, be sure you understand which field you are configuring.  DisplayName can be confused with CN or description.
DN – also distinguishedName DN is simply the most important LDAP attribute.
CN=Jay Jamieson, OU= Newport,DC=cp,DC=com
givenName Firstname also called Christian name
homeDrive Home Folder : connect.  Tricky to configure
name name = Guy Thomas.  Exactly the same as CN.
objectCategory Defines the Active Directory Schema category. For example, objectClass = Person
objectClass objectClass = User.  Also used for Computer, organizationalUnit, even container.  Important top level container.
physicalDeliveryOfficeName Office! on the user’s General property sheet
profilePath Roaming profile path: connect.  Trick to set up
sAMAccountName sAMAccountName = guyt.  Old NT 4.0 logon name, must be unique in the domain.  Can be confused with CN.
SN SN = Thomas. This would be referred to as last name or surname.
userAccountControl Used to disable an account.  A value of 514 disables the account, while 512 makes the account ready for logon.
userPrincipalName userPrincipalName = guyt@CP.com    Often abbreviated to UPN, and looks like an email address.  Very useful for logging on especially in a large Forest.   Note UPN must be unique in the forest.



การปิด / เปิด UAC ใน windows 2008 Server

winlogoระบบปฏิบัติการวินโดว์เซิร์ฟเวอร์ 2008 เป็นระบบปฏิบัติการที่เน้นด้านความปลอดภัย แพ็คเก็จจะถูกติดตั้งน้อยที่สุด (ค่าปกติคือไม่ติดตั้ง) แต่ระบบรักษาความปลอดภัยต่าง ๆ จะถูกเปิดใช้งานเต็มพิกัด รวมไปถึงระบบที่ควมคุมการใช้งาน/แจ้งเตือน ผู้ใช้งานที่เรียกว่า UAC (User Account Control) จะว่าไปก็เป็นระบบที่ดี ช่วยเตือนหรือป้องกันไม่ให้เผลอทำผิดพลาด แต่ก็ก่อให้เกิดความรำคาญใจมากเหมือนกัน

ซึ่งในระบบปฏิบัติการที่เป็น Desktop (vista , se7en) นั้น สามารถปิดได้ที่ Control Panel ได้โดยตรง แต่สำหรับ windows 2008 server (Domain Controller) นั้น ไม่สามารถเข้าใช้งาน User Account ได้ เนื่องจากเป็น Domain Controller (น่าจะใช้ได้กับเครื่องที่ไม่ได้เป็นโดเม็นด้วยนะครับ)

วันนี้ผมต้อง add account ของนักศึกษาเข้าระบบ windows live @edu ซึ่งจะเป็นต้องใช้ Power Shell v2 ที่ต้องสามารถเข้าแก้ไข registry ได้ด้วย แต่เมื่อรันคำสั่งแล้ว ไม่สามารถแก้ไข registry ได้ ผมจึงหาสาเหตุอยู่นานพอสมควร และก็พบว่า ปัญหาหลักอยู่ที่ UAC ครั้นจะไปปิดที่ control panel ก็ไม่สามารถเข้า user account ได้ เลยไปค้นหาข้อมูลจาก google พบว่า เราสามารถปิด UAC ได้ง่าย ๆ ดังนี้

  • คลิ๊กที่ start –> run –> msconfig

ที่แท็ป tools ให้เลื่อนลงมา จะมี Tool Name ที่ชื่อว่า Disable UAC ให้คลิ๊กที่ชื่อของ Tool Name นั้น แล้วคลิ๊กที่ Launch

uac

เมื่อคลิ๊กที่ Launch เรียบร้อยแล้ว (น้าต่างของดอส) จะข้อความแจ้งว่า The operation completed successfully.

จากนั้นให้ทำการรีสตาร์ทเครื่อง ก็จะสามารถใช้งานระบบต่าง ๆ โดยไม่มีข้อความแจ้งเตือนอีก

แต่ถ้าอยากกลับมาใช้ UAC อีกครั้ง ก็ทำรูปแบบเดิม แต่ให้คลิ๊กที่ Tool Name ที่ชื่อว่า Enable UAC แล้วกด Launch จากนั้น รีสตาร์ทเครื่องก็จะสามารถใช้งานได้แล้วครับ




เปิดใช้งานฟังก์ชั่น LDAP ให้กับ Moodle

moodle-logoMoodle เป็นซอฟต์แวร์ Open Source ที่ใช้สำหรับทำบทเรียนออนไลน์ หรือที่เรียกว่า LMS (Learning Management System) ซึ่งได้รับความนิยมอย่างแพร่หลาย เพราะครอบคลุมฟังก์ชั่นการใช้งานด้านการเีรียนออนไลน์ และง่ายต่อการใช้งาน มทร.ล้านนา ของเราเอง ก็ทำการติดตั้ง moodle อยู่หลายหน่วยงาน

แต่การ จะเข้าใช้งานแต่ละหน่วยงานนั้น ต้องใช้ username และ password ตามที่หน่วยงานนั้นกำหนด จึงเกิดปัญหาการจดจำ username และรหัสผ่าน (สมมุติมี 10 แผนก ก็ใช้คนละตัว ต้องจำ 10 username) แต่ปัญหานี้จะหมดไป ถ้าเราเรียกใช้งานฟังก์ชั่นของ LDAP ที่ติดมากับตัวของ Moodle อยู่แล้ว

ใน บทความนี้ผมจะไม่ขอเอ่ยถึงการติดตั้ง extentions ldap นะครับ (หากใครติดจริง ๆ ถามได้ครับ จะตอบเป็นกรณีพิเศษ) สิ่งที่เราต้องมีในการใช้งานคือ

  • DC (Active Directory) ที่สร้างไว้เรียบร้อยแล้ว
  • Moodle (ติดตั้งบนวินโดว์หรือลีนุกซ์ก็ได้ครับ)
  • เวลาว่างซักนิด


มาเริ่มกันเลยครับ

  • ข้าสู่ระบบด้วย username admin ของตัว moodle

moodle04

คลิ๊กที่รูปเพื่อดูขนาดใหญ่

  • ไปที่เมนู Users –> Authentication
  • เปิดการใช้งาน LDAP Server โดยคลิ๊กที่ไอคอนลูกตา
  • คลิ๊กที่ Settings

moodle05

เราจะตั้งค่าการใช้งาน LDAP Server อย่างคร่าว ๆ (ให้ใช้งานได้) 3 หัวข้อหลัก ๆ ดังนี้

  • LDAP Server Settings
    • Host URL คือ ที่อยู่ของ DC ครับ จะใส่เป็นชื่อหรือไอพีก็ได้ แต่เขาแนะนำให้ใส่เป็นไอพี (มีหรือไม่มี ldap:// ก็ได้) เพราะถ้าใส่เป็นชื่อแล้ว บางครั้งอาจจะ lookup ไปผิดเครื่อง ตัวอย่างเช่น
      • Host URL : ldap://192.168.1.10
    • Version คือรุ่นของ ldap หรือ ad ครับ รุ่นใหม่ ๆ นี้เป็น 3 กันหมดแล้วครับ ดังนั้นเราก็เลือกให้เป็น 3
      • Version 3
    • LDAP Encoding คือ การเข้ารหัสหรือรูปแบบของตัวอักษรที่จะคุยกัน ก็ให้เป็น utf-8 ครับ ถ้าเป็นรุ่นเก่า version 2 ก็จะเป็น cp 1252 (เขาว่างั้นนะ อันนี้ผมก็ไม่ได้ทดสอบ)
      • LDAP Encoding : utf-8
  • Bind Settings
    • Hide Password คือการระบุว่าจะเก็บรหัสผ่านไว้ที่ตัว moodle หรือไม่ ถ้าไม่เก็บ moodle ก็จะวิ่งไปถามที่ AD ทุกครั้ง (ให้วิ่งถามดีกว่าครับ ป้องกันการเก็บรหัสผ่านไว้หลายที่)
      • Hide Password : Yes
    • Distinguished name คือ ชื่อของผู้ใช้ที่มีสิทธิเรียกใช้งาน AD โดย username นั้น อย่างน้อยต้องอยู่ในกลุ่มของ Domain Admin ขึ้นไป ไม่งั้นจะไม่สามารถติดต่อได้ครับ แต่ที่สำคัญ ต้องทำการตั้งค่า cn,dc ให้ถูกต้องด้วย เอาละ คราวนี้ทุกท่านจะเริ่มส่งสัย ว่าอะไรคือ cn , dn ,ou,dc อธิบายไปยาวแน่ ๆ เอาเป็นว่า ผมมีวิธีตรวจสอบว่า จะใส่ให้ถูกต้องต้องทำแบบไหน
      • ที่เครื่อง AD ให้เรียกใช้งาน Active Directory Service Interfaces หรือ adsi โดยคลิ๊กที่
      • start –> run –> adsiedit.msc

moodle02

moodle03

      • ที่หน้าต่าง ADSI Edit ให้แตกย่อยออกมาเรื่อย ๆ แล้วพยายามหา user administrator ที่เราต้องการใช้งาน เมื่อเลือกได้แล้ว จะเห็นช่องทางขวามือ จะมีการกำหนดค่าของ cn,dc ต่าง ๆ ให้เราจำค่านี้แหละครับ แล้วเอาไปใส่ที่ช่อง Distinguished name (โปรดระวังช่องว่าง ที่ cn และ ou ต้องตรงกับที่มีอยู่ใน AD จริง ๆ )
      • Distinguished name : cn=administrator,cn=users,dc=university,dc=local
    • Password คือ รหัสผ่านของ user ที่เราได้ระบุไว้ใน Distinguished name ซึ่งในที่นี้คือ administrator นั่นเอง
      • Password : **********

moodle06

  • User lookup settings
    • User type คือ ประเภทของ Directory Service ในที่นี้คือ AD
      • User type :  MsActiveDirectory
    • Contexts คือ ที่อยู่ของ Organizational Unit (รูปที่เราเห็นคล้าย ๆ โฟลเดอร์นั่นแหละครับ) ซึ่งเราต้องระบุให้ถูกต้อง เพราะนั่นจะเป็นตำแหน่งที่จะให้ moodle เข้าไปค้นหารายชื่อผู้ใช้งาน หากไม่รู้ว่าอยู่ที่ไหน ก็ให้เปิด Active Directory user and computer กรณีที่ต้องการระบุเฉพาะเจาะจง ก็ให้ระบุ OU ตามที่ต้องการได้เลยครับ แต่ถ้าจะให้ค้นหาใน OU ไหนก็ได้ ระบุ OU นอกสุดก็พอครับ
      • Contexts : ou=user accounts,dc=university,dc=local

moodle01

    • Search Subcontexts คือ การให้ค้นหา OU ย่อย จากที่ได้ระบุไว้ใน Contexts (ดูรูปประกอบครับ จะเห็นมี OU ย่อย ใน User Accounts อีกที)
      • Search Subcontexts : Yes
    • Derelicence aliases คือ การตั้งชื่อเสมือนของบุคคลทั่วไปที่ไม่ได้อยู่ในระบบ (อันนี้ผมก็ยังไม่เคยใช้งานเหมือนกันครับ)
      • Derelicence aliases : No
    • User Attribute คือ คุณลักษณะของ User ถ้าเป็น AD แล้ว ให้ใช้ sAMAccountName ครับ (บางแห่งบอกว่าใช้ cn ก็ได้) แต่ระวังการใช้งานนะครับ เพราะ sAMAccountName นี้ ใช้งานได้สูงสุด 20 ตัวอักษรครับ
      • User Attribute : sAMAccountName
    • Member Attribute คือ คุณลักษณะของสมาชิก
      • Member Attribute : member
    • Member Attribute user dn คือ การยอมให้/ยกเลิก user ที่อยู่ในกลุ่มเดียวกันกับที่ระบุไว้ใน Distinguished name ใช้งานได้หรือไม่
      • Member Attribute user dn : 1 **ไม่จำเป็นต้องกรอกและไม่มีผลกับ user ทั่วไป
    • Object Class คือ การระบุ สมาชิก ว่าให้ค้นหาจากอะไร ใน ad เราเรียก username ว่า user
      • Object Class : user

เมื่อปรับแต่งค่าเรียบร้อยแล้วให้ทำการบันทึกข้อมูล โดยคลิ๊กที่ Save change ตรงด้านล่างสุด

แล้วให้ทำการ logout เพื่อทำการทดสอบครับ

จากนั้นให้คลิ๊กที่ login อีกครั้ง แล้วกรอก username และ password ที่ใช้งานได้จริงใน ad

กรณีที่ไม่ผ่าน จะมีข้อมความแจ้งเตือนดังนี้ (อาจจะไม่เหมือนกัน) ให้เข้าไปดูการปรับแต่งค่าอีกครั้งหนึ่ง

moodle07

กรณีที่ผ่าน จะปรากฎหน้าต่างให้กรอกรายละเอียดส่วนตัว เป็นอันว่าเสร็จสิ้นครับ

moodle08

moodle09

คราวนี้ก็สามารถใช้งานร่วมกันได้แล้วครับ ไม่ว่าจะมีกี่เครื่อง จะมีกี่เว็บ ก็จะใช้ username และ password ชุดเดียวกันทั้งหมด