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

เช็คสถานะของ Network Interface(การ์ดแลน)


สำหรับผู้ใช้งานอินเตอร์เน็ตทั่วไป ที่ยังงงๆว่าไอ้หน้าจอคอมสองจอ (Network interface) บางทีทำไมมันเป็นแบบหนึ่งและบางทีทำไมมันเป็นอีกแล้ว แต่ก็ยังใช้เน็ตไม่ได้ วันนี้ผมเอามาเขียนซะหน่อย แต่เขียนตามความเข้าใจผมเอง ไม่ได้อ้างอิงหลักวิชาการ คำศัพท์ถูกบ้างผิดบ้างคงไม่ว่า เอาเป็นว่าให้คนอ่านเข้าใจก็พอนะครับ
Network interface (การ์ดแลน) คือ วงจรอิเล็กทรอนิกส์ หรือพูดง่ายๆก็เป็นฮาร์ดแวร์ตัวหนึ่งที่มีหน้าที่ทำให้เครื่องเราใช้งานเครือข่ายได้ครับ อาจจะเป็นแบบเสียบหัว RJ45 Modem หรือ Wireless ก็แล้วแล้วแต่ครับ โดยที่ตรงนี้จะมีสถานะแตกต่างกันไป เมื่อเรา connect internet ได้หรือไม่ได้ยังไง เช่น
inf1 จากรูป สังเกตสถานะ Acquiring network จะหมายถึง การ์ดแลนกำลังทำการขอไอพีแอดเดสร ถ้าเป็นแบบนี้แสดงว่าจะใช้งาน Network ไม่ได้ เพราะเครื่องยังไม่ได้รับไอพีแอดเดรส (กรณีจะเป็นเฉพาะการรับไอพีจาก DHCP Server ครับ)
inf4จากรูปสถานะจะเป็น Connected แสดงว่าเครื่องเรารับไอพีได้แล้ว สามารถใช้งานเครือข่ายได้ แต่หากว่าการ์ดแลนเป็นสถานะ Connected แล้ว แต่ไม่สามารถใช้งานเครือข่ายได้ ก็ต้องครวจสอบไอพีแอดเดรสว่าถูกต้องตามโซน Network นั้นๆหรือมั้ย
inf3 จากรูปสถานะเป็น Cable unplugged หมายถึงไม่ได้เสียบสายแลน หากเป็น Wireless หมายถึงไม่มีสัญญาณไวเลส ใช้งานเครือข่ายไม่ได้ 100%


inf2จากรูปสถานะ Limited แสดงว่าการขอไอพีจาก DHCP Server ไม่สำเร็จครับ แบบนี้จะเป็นกันมาก คือ สายแลนเสียบ แต่ขอไอพีไม่ได้ ปัญหาเกิดจากหลายสาเหตไล่ตั้งแต่ DHCP Client, การ์ดแลน, สายแลน, อุปกรณ์ Switching , สายไฟเบอร์, DHCP Server เป็นต้น แล้วแต่กรณี และทำให้ไม่สามารถใช้งานเครือข่ายได้
กรณีเครื่องท่านไม่สามารถใช้งานได้กรุณาตรวจสอบกับเจ้าหน้าที่ที่หน่วยงานครับ

Basic Linux Commands สำหรับตรวจสอบและแก้ไขปัญหา


บทความนี้ผมจะเขียนถึงการใช้งานคำสั่งลินุกซ์ (Linux Commands) อย่างง่ายๆ หรือขั้นพื้นฐาน ที่มีประโยชน์และสามารถนำมาใช้เพื่อตรวจสอบและแก้ไขปัญหาต่างๆได้ โดยเป็นคำสั่งที่ทดสอบกับ Linux ตระกูล Redhat, CentOS และ Fedora พวกๆนี้นะครับ แต่จริงๆแล้วคำสั่งเหล่านี้เป็นคำสั่งพื้นฐานจริงๆผมว่าใช้ได้กับ linux ทั้งหมดมั้งครับ
1. คำสั่งสำหรับตรวจสอบ Linux เวอร์ชั่น
#cat /proc/version
2. คำสั่งสำหรับตวจสอบ Linux Distribution
#cat /etc/issue
3. คำสั่งตรวจสอบ CPU แสดงทั้ง Model และ Speed
#cat /proc/cpuinfo
4. คำสั่งตรวจสอบ Memory หรือ RAM จากตัวอย่าง -m หมายถึง Mb ถ้าเปลี่ยน m เป็น g จะแสดงเป็น Gb , -t คือแสดง Total ด้วย
#free -mto
5. คำสั่งเกี่ยวกับ Directory
#cd / คือ ไปที่ directory top สุด
#cd – คือ ย้อนกลับไปที่ Directory ก่อนหน้า เช่น ตอนแรกอยู่ที่ /etc/init.d/ แล้วไปที่ Directory /var/log/ ถ้าใช้ cd – จะมาอยู่ที่ /etc/init.d/
#cd.. คือ ย้อนกลับไป Directory บนหนึ่งลำดับ เช่น จาก /var/www/html ถ้าใช้ cd.. จะมาอยู่ที่ /var/www/
#pwd คือ แสดงตำแหน่ง Directory ที่เราอยู่
6.  คำสั่งดูย้อนหลังว่าใช้คำสั่งนั้นๆไป เท่าไหร่ เท่าไหร่
#history | grep <some command name> เช่น history | grep cd
7. คำสั่งสำหรับดู size ของ Directory
#du -sh /var/www/html/ คือ แสดง size ภายใน Directory /var/www/html/
8. ปกติเราจะใช้ man เพื่อดูว่าคำสั่งนั้นใช้ทำอะไรได้บ้าง แต่คำสั่งนี้จะดูว่า อะไรบ้างใช้คำสั่งใดได้ งงมั้ยครับ ตัวอย่างเช่น ผมอยากรู้คำสั่งที่เกี่ยวกับ directory ผมก็ใช้คำสั่งนี้ครับ
#apropos <search phrase> เช่น #apropos directory
9. คำสั่งเปรียบเทียบไฟล์สองไฟล์ ที่มีการแก้ไขค่าไป อาจจะเป็นกรณีแก้ไฟล์คอนฟิกใหม่ เทียบกับคอนฟิกเดิม
#diff config.php config.php.old คือ จะเป็นการเทียบบรรทัดต่อบรรทัดเลยครับ
10. เปรียบเทียบ 2 directory
#diff –urp /old-directory /new-directory
11. หาไฟล์ที่ขนาดมากกว่า 10 M
#find . -size +10M -exec du -h {} \;
12. ค้นหาข้อความในไฟล์ จากตัวอย่าง ข้อความ “matt mullenweg” ในไฟล์ที่เป็น .php
#find . -name “*.php” -exec grep -i -H “matt mullenweg” {} \;
13. โชว์ Process ที่ใช้ CPU สูง แล้วก็ kill มันด้วยคำสั่ง kill -xxx (xxx คือ id)
#ps aux | sort -nrk 3 | head
14. คำสั่งดู load cpu และอื่นๆ
#top
15. คำสั่งเกี่ยวกับ Network เช่น
#ifconfig -a คือ แสดง Network Interface เช่น สถานะ ไอพี เป็นต้น
#dhclient eth1 คือ คำสั่งร้องขอไอพีที่ interface eth1 ใหม่
#netstat คือ คำสั่งดูการสื่อสารข้อมูลระหว่างเครื่องเรากับเครื่องอื่น สามารถเพิ่มพารามิเตอร์ตามได้ เช่น -I หรือตามด้วย ?  เพื่อดูคู่มือ

การใช้คำสั่ง nslookup เพื่อตรวจสอบชื่อโดเมนเนม


nslookup คือคำสั่ง (coommand) ที่ใช้ในการตรวจสอบโดเมนเนม ด้วยโปรแกรม Command prompt หรือโปรแกรม Dos ครับ ซึ่งเอาไว้ทดสอบว่าโดเมนเนมนี้ตรงกับหมายเลขไอพีแอดรสอะไร และยังสามารถตรวจสอบได้ว่า DNS ที่เราใช้อยู่ยังให้บริการได้อยู่หรือไม่ เพราะหาก DNS ไม่สามารถให้บริการเป็นปกติจะไม่สามารถทำการแปลงจากไอพีแอดเดรสเป็นชื่อไม่ได้ (resolve ไม่ได้)
     สำหรับคำสั่ง nslookup สามารถใช้ได้ทั้ง Windows และ Unix ครับ
การใช้งานบน windows สามารถใช้คำสั่งนี้บนโปรแกรม dos ครับ โดยอันดับแรกก็เปิด Dos เลยครับ 
1. คลิก Start Menu ของ windows แล้วเลือกเมนู Run จากนั้นพิมพ์ cmd แล้วกด ok ตามรูปประกอบครับ
2. เมื่อเข้าสู่โปรแกรม Dos แล้วก็พิมพ์คำสั่ง nslookup เพื่อเข้าสู่โปรแกรม nslookup เลยครับ
 
3. เมื่อเข้าสู่โปรแกรม nslookup แล้วโปรแกรมจะบอกว่าตอนนี้เราใช้ DNS จาก Server ไหน (ดูที่ IP) จากนั้นเราก็พิมพ์โดเมนเนมที่เราต้องการตรวจสอบว่าโดเมนนี้ยังว่างอยู่มั้ย หรือโดเมนเนมตรงกับเบอร์ไอพีแอดเดรสอะไร เช่นพิมพ์ www.msu.ac.th
จากรูปข้างบนเป็นการทดสอบกรอกโดเมนเนมของมหาวิทยาลัยมหาสารคามครับ ซึ่งเราจะทราบว่าโดเมนเนมมีการใช้งานแล้วที่เครื่องหมายเลขไอพี 202.28.32.xx ตามรูปครับ
หรือว่าเราจะกรอกเป็นหมายเลขไอพีแอดเดรสเพื่อตรวจสอบโดเมนก็ได้ครับ
4. การทดสอบข้างต้นเป็นการตรวจสอบเฉพาะแบบชื่อ ซึ่งจริงๆแล้วในระบบโดเมนเนมมี type ต่างๆหลาย type โดยเราสามารถเปลี่ยนการทดสอบได้ เช่น เปลี่ยนมาเป็น type mx (เกี่ยวกับอีเมล์ server) ระบุเมลเซร์ฟเวอร์ของโดเมนที่เราต้องการ
โดยพิมพ์คำสั่ง set type=mx แล้วพิมพ์โดเมนเนมที่ต้องการ เช่น msu.ac.th เป็นต้น
5. และถ้าต้องการเปลี่ยน dns server เพื่อทดสอบก็สามารถทำได้โดยการพิมพ์ >server ip_address เช่น >server 203.144.207.29 เป็นต้น
6. สำหรับคำสั่งอื่นสามารถดู Help ได้ด้วยพิมพ์ ?
จบแล้วครับ วิธีการใช้งานข้างต้นเอาไว้ตรวจสอบโดเมนว่าตรงกับไอพีแอดเดรสอะไร ซึ่งหากโดเมนนั้นว่างอยู่จะมีข้อความ
Server_name can’t find testdomain.msu.ac.th: Non-existent domain

แก้ไวรัส amvo.exe [โชว์ hidden file ไม่ได้,ดับเบิลคลิกไดร์ไม่ได้]


ช่วงนี้มีเครื่องหลายท่านติดไวรัส และเครื่องผมก็โดนไปด้วยครับติดจาก flashdrive จึงลองดูไฟล์ที่รันตอนเปิดวินโดว์ขึ้นมาว่ามีอะไรแปลกๆรันขึ้นมาบ้าง(ดูจาก System Configuration Utility หรือ msconfig) ก็เลยพบไฟล์ amvo.exe ผมเลยลองเอาไป search ใน google ดูพบว่าเป็นไวรัสชนิดหนึ่ง ส่วนมันคืออะไรยังไงไม่อธิบายนะครับ เพราะผมก็ไม่รู้
อาการเมื่อโดนไวรัสตัวนี้
  • ทำให้โชว์ไฟล์ซ่อน (hidden file) ไม่ได้
  • เมื่อใช้ USB Device จะช้ากว่าปกติ
  • Adds infections to plugged in USB devices
  • ดับเบิลคลิกไดร์จะเป็น new windows หรือเปิดหน้าต่างใหม่ขึ้นมา หรือดับเบิลเพื่อเปิดไม่ได้
  • วิธีการแก้ไข (ในแต่ละเครื่องอาจจะแก้ไขไม่เหมือนกัน ถึงแม้อาการจะเป็นเหมือนขั้นต้นก็ตาม)
    1. เข้าไปเช็คใน System Configuration Utility  โดยคลิก Start -> Run -พิมพ์ msconfig  -> แท็บ startup จากนั้นมองหาไฟล์ชื่อแปลกตรงนี้อาจจะไม่เหมือนกัน ท่านสามารถนำชื่อไฟล์ไป search ใน google ได้ ในกรณีนี้ของผมจะเป็นไฟล์ amvo.exe หรือจะเป็นชื่ออื่นๆ เช่น ckvo.exe,semo2x,d.com,amvo,semo2x.exe ให้เราติ๊กเครื่องหมายถูกออก เพื่อไม่ให้มันรันตอนบูตวินโดว์ มันจะรันใน C:\Windows\System32\xxx.exe ดูภาพประปอบ
     
    2. จากนั้นให้ทำการ search หาชื่อไฟล์ในโปรแกรม Registry Editor วิธีเข้าโปรแกรม Registry Editor คลิก Start menu -> Run พิมพ์ > regedit กด Ctrl+f พิมพ์ชื่อไวรัส (process) เช่น amvo.exe เจอที่ไหนคลิกขวา delete โดยกด F3 เพื่อทำการค้นหาต่อไปเรื่อยๆจนหมด
    3. จากนั้นทำการแก้ไขไฟล์ registry เพื่อแสดงไฟล์ช่อนทั้งหมดที่อยู่ในคอมพิวเตอร์เรา โดยเข้าโปรแกรม  Registry Editor  เหมือนข้อ 2 แล้วเข้าไปแก้ค่าดังนี้
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer searchidden en 1
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer searchsystemdirs en 1
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced hidden en 1
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced showsuperhiden en 1
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced superhiden en 1
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN CheckedValue 1
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN DefaultValue 1
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL CheckedValue 1
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL DefaultValue 1
    เช่นเข้าไปแก้ค่าใน HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced hidden เป็นค่า 1
    ดับเบิลคลิก แล้วแก้ไขเป็น 1 ดังรูป
    4. จากนั้นทำการ restart เครื่อง
    5. เมื่อวินโดว์บูตขึ้นมาให้ทำการหาไฟล์ amvo.exe ใน c:\windows\system32\amvo.exe และ amvo…dll จากนั้นลบไฟล์ทิ้งไป ดังรูป
    และเข้าไปที่ drive c: d: e: …  โดยเข้าแบบ start -> run พิมพ์ c: กด ok เพื่อลบไฟล์ autorun.inf ทิ้งให้หมด
    ลองทำตามดูครับขั้นตอนรายละเอียดอาจจะไม่เหมือนกัน

    วิธีแก้ปัญหา Remote Desktop User Sessions เต็ม


    Remote Desktop เป็นบริการ (Service) ที่มาพร้อมกับระบบปฏิบัติการ Windows โดยมีให้สำหรับให้เครื่องอื่นสามารถทำการรีโมทเข้ามาทำงานเครื่องตนเองได้ แต่บริการนี้ผู้ดูแลระบบหรือเจ้าของเครื่องจะต้องทำการเปิด Service ขึ้นมาเอง และส่วนใหญ่จะใช้กับเครื่องที่เป็น Server เช่น Web Server, Database Server โดยผู้ดูแลจะทำการเปิด Service เพื่อให้ตนเองสามารถรีโมทเข้ามาแก้ไขปัญหา หรือติดตั้งโปรแกรม หรือปรับปรุงระบบ ผ่านระบบเครือข่ายโดยไม่ต้องมาทำงานที่หน้าเครื่อง เป็นต้น
    แต่การเปิดบริการ Remote Desktop และการใช้งานจะมีข้อจำกัดอยู่อย่างหนึ่ง (หากเป็นค่าปกติ) คือ มีการจำกัดจำนวนผู้ใช้งานที่สามารถรีโมทได้ ซึ่งการจำกัดจำนวนดังกล่าว ทำให้มีปัญหาคือเมื่อผู้ดูแลทำการรีโมทเข้าไปยัง Server แต่ไม่ทำการ Log Off ออกจากระบบหลังทำงานเสร็จ Sessions ก็จะยังคงค้างอยู่ เมื่อมีการรีโมทเข้าไปใหม่จะไม่สามารถเข้าสู่เครื่อง Server ได้ โดยจะมีข้อความว่า “The terminal server has exceeded the maximum number of allowed connections.” ดังรูป
    วิธีการแก้ปัญหาเบื้องต้น
    1. ให้ทำการเข้าโปรแกรม Remote Desktop ด้วยการพิมพ์  mstsc /admin หรือ mstsc /console ในช่อง Run (หรือช่อง Search สำหรับ Windows 7) ที่เครื่องเราเอง (Client) แล้วกด Enter ดังรูป

    2. จากนั้นโปรแกรม Remote Desktop จะเปิดขึ้นมา ให้เราใส่หมายเลขไอพี Server ที่ต้องการ Remote ดังรูป และทำการใส่ Username , Password ก็จะสามารถเข้าสู่ Server ได้ตามปกติ
    3. เมื่อเราเข้าสู่ Server ได้แล้วให้ทำการเคลียร์ Sessions ที่ค้างอยู่ ด้วยการเข้าโปรแกรม Task Manager แล้วไปที่แท็บ Users แล้วทำการคลิกขวา User ที่ต้องการเคลียร์ ดังรูปด้านล่าง แต่อย่า Log Off User ที่ตัวเองกำลังรีโมทนะครับ
    ถ้าไม่อยากให้เกิดปัญหาแบบนี้ ทุกครั้งที่มีการรีโมทต้องทำการ Log Off ทุกครั้งนะครับ