บทนำ: ปัญหา Network เรื่องกวนใจที่หลีกเลี่ยงไม่ได้
ปัญหา network เป็นสิ่งที่หลีกเลี่ยงไม่ได้สำหรับทุกคนที่ทำงานเกี่ยวข้องกับ IT ไม่ว่าจะเป็นผู้ดูแลระบบ network, developer, หรือแม้แต่ผู้ใช้งานทั่วไป ลองนึกภาพตามนะครับ วันที่คุณกำลังจะส่งงานสำคัญ แต่ internet ดันใช้งานไม่ได้ซะอย่างนั้น หรือ application ที่คุณพัฒนามาอย่างยากลำบากกลับเชื่อมต่อกับ database ไม่ได้ ปัญหาเหล่านี้ล้วนเป็นสิ่งที่ทำให้เสียเวลาและบั่นทอนกำลังใจทั้งสิ้น จากสถิติที่ผมเคยอ่านเจอ (และประสบการณ์ตรงของตัวเอง) พบว่าปัญหา network เป็นสาเหตุหลักของการ downtime ของระบบต่างๆ คิดเป็นประมาณ 30-40% เลยทีเดียว ตัวเลขนี้แสดงให้เห็นว่าการแก้ไขปัญหา network ได้อย่างรวดเร็วและมีประสิทธิภาพเป็นสิ่งสำคัญอย่างยิ่งต่อการดำเนินธุรกิจและการทำงานต่างๆ สมัยก่อนตอนที่ผมเริ่มทำงานใหม่ๆ ผมเคยเจอปัญหา network ที่ทำให้ระบบ production ล่มไปหลายชั่วโมง กว่าจะหาสาเหตุเจอว่าเป็นเพราะ configuration ของ firewall ผิดพลาดไปนิดเดียว ตอนนั้นผมรู้สึกเครียดมากและได้เรียนรู้ว่าการมีความรู้พื้นฐานเกี่ยวกับ network และเครื่องมือ troubleshooting ที่ดีเป็นสิ่งจำเป็นอย่างยิ่ง บทความนี้จะรวบรวมความรู้และเทคนิคต่างๆ ที่ผมได้เรียนรู้และสั่งสมมาตลอด 20 ปีในการทำงานด้าน IT เพื่อช่วยให้คุณสามารถแก้ไขปัญหา network ได้อย่างมีประสิทธิภาพมากยิ่งขึ้น เราจะเริ่มต้นจากพื้นฐานความรู้ที่จำเป็น เครื่องมือที่ใช้ในการ troubleshooting และวิธีการแก้ไขปัญหาที่พบบ่อย พร้อมทั้งตัวอย่าง command และ code จริงเพื่อให้คุณสามารถนำไปประยุกต์ใช้ได้จริงพื้นฐานความรู้ที่จำเป็นสำหรับการ Network Troubleshooting
การแก้ไขปัญหา network ให้ได้ผลนั้นไม่ใช่แค่การลองผิดลองถูก แต่ต้องอาศัยความเข้าใจในหลักการทำงานของ network และ protocol ต่างๆ อย่างถ่องแท้ ลองมาดูกันว่ามีพื้นฐานความรู้อะไรบ้างที่เราจำเป็นต้องรู้IP Address และ Subnetting
IP address คือหมายเลขประจำตัวของอุปกรณ์แต่ละชิ้นที่เชื่อมต่อกับ network เปรียบเสมือนบ้านเลขที่ที่ทำให้เรารู้ว่าข้อมูลจะต้องส่งไปที่ไหน การเข้าใจโครงสร้างของ IP address ทั้ง IPv4 และ IPv6 รวมถึง subnetting เป็นสิ่งสำคัญมากในการกำหนดค่า network และแก้ไขปัญหาที่เกี่ยวข้องกับการเชื่อมต่อ Subnetting คือการแบ่ง network ขนาดใหญ่ออกเป็น network ย่อยๆ เพื่อให้การจัดการง่ายขึ้น และเพิ่มประสิทธิภาพในการใช้งาน IP address ลองคิดดูว่าถ้าทุกอุปกรณ์ในโลกต้องอยู่ใน network เดียวกัน จะเกิดอะไรขึ้น คงวุ่นวายน่าดู! การทำ subnetting ช่วยให้เราสามารถแบ่งกลุ่มอุปกรณ์ต่างๆ ตามลักษณะการใช้งานหรือแผนกในองค์กรได้ ตัวอย่างเช่น ถ้าเรามี network ขนาด /24 (255.255.255.0) เราสามารถแบ่งออกเป็น 4 subnet ขนาด /26 (255.255.255.192) ได้ โดยแต่ละ subnet จะมี IP address ที่ใช้งานได้ 62 หมายเลข (256 - 4 - 2 = 62 เพราะต้องหัก network address และ broadcast address)
# ตัวอย่างการคำนวณ subnet
IP Address: 192.168.1.0
Subnet Mask: 255.255.255.192 (/26)
Number of subnets: 2^(32-26) = 2^6 = 4
Number of hosts per subnet: 2^(32-26) - 2 = 2^6 - 2 = 64 - 2 = 62
การเข้าใจ subnetting ช่วยให้เราสามารถตรวจสอบได้ว่าอุปกรณ์ต่างๆ อยู่ใน subnet ที่ถูกต้องหรือไม่ และสามารถสื่อสารกันได้หรือไม่ หากมีการกำหนดค่า subnet mask ผิดพลาด อาจทำให้เกิดปัญหาการเชื่อมต่อได้
DNS (Domain Name System)
DNS คือระบบที่แปลงชื่อ domain name ที่เราคุ้นเคย เช่น siamcafe.net ให้เป็น IP address ที่เครื่องคอมพิวเตอร์เข้าใจได้ ลองนึกภาพว่าถ้าเราต้องจำ IP address ของทุกเว็บไซต์ที่เราเข้าชม คงเป็นเรื่องที่ยุ่งยากมาก DNS จึงเข้ามาช่วยให้ชีวิตเราง่ายขึ้น การทำงานของ DNS เริ่มต้นจากการที่เครื่องคอมพิวเตอร์ของเราส่ง query ไปยัง DNS server เพื่อขอ IP address ของ domain name ที่เราต้องการ หาก DNS server ไม่รู้จัก domain name นั้น ก็จะทำการ query ไปยัง DNS server อื่นๆ ที่มีข้อมูลมากกว่า จนกว่าจะพบ IP address ที่ถูกต้อง ปัญหาเกี่ยวกับ DNS เป็นสาเหตุที่พบบ่อยของการไม่สามารถเข้าเว็บไซต์ได้ เช่น DNS server ไม่ตอบสนอง หรือ DNS record ไม่ถูกต้อง หากเกิดปัญหา DNS เราสามารถแก้ไขได้โดยการเปลี่ยน DNS server ที่เครื่องคอมพิวเตอร์ของเรา หรือตรวจสอบ DNS record ของ domain name นั้นๆ
# ตัวอย่างการตรวจสอบ DNS record ด้วย command 'nslookup'
nslookup siamcafe.net
Output ที่ได้จะแสดง IP address ของ siamcafe.net รวมถึงข้อมูลอื่นๆ เช่น name server และ mail exchanger record การตรวจสอบข้อมูลเหล่านี้ช่วยให้เราสามารถระบุปัญหาที่เกี่ยวข้องกับ DNS ได้
TCP/IP Model และ Port
TCP/IP model คือชุดของ protocol ที่ใช้ในการสื่อสารผ่าน internet แบ่งออกเป็น 4 layer ได้แก่ Application, Transport, Internet, และ Network Access แต่ละ layer มีหน้าที่เฉพาะในการจัดการข้อมูลและการสื่อสาร Port คือหมายเลขที่ใช้ระบุ application หรือ service ที่กำลังทำงานอยู่บนเครื่องคอมพิวเตอร์แต่ละเครื่อง เปรียบเสมือนหมายเลขห้องในอาคารสำนักงานที่ระบุว่าข้อมูลจะต้องส่งไปยัง application ใด ตัวอย่างเช่น web server มักจะใช้ port 80 (HTTP) หรือ 443 (HTTPS) ส่วน email server มักจะใช้ port 25 (SMTP), 110 (POP3), หรือ 143 (IMAP) การเข้าใจเรื่อง port ช่วยให้เราสามารถตรวจสอบได้ว่า application ที่เราต้องการใช้งานเปิด port ที่ถูกต้องหรือไม่ และ firewall อนุญาตให้ traffic ผ่าน port นั้นหรือไม่
# ตัวอย่างการตรวจสอบ port ที่เปิดอยู่บนเครื่อง Linux ด้วย command 'netstat'
netstat -tulnp
Output ที่ได้จะแสดงรายการ port ที่กำลัง listen อยู่ รวมถึง application ที่กำลังใช้งาน port นั้น การตรวจสอบ port ที่เปิดอยู่ช่วยให้เราสามารถระบุปัญหาที่เกี่ยวข้องกับ firewall หรือ application ที่ไม่ทำงานได้อย่างถูกต้อง
วิธีติดตั้งและใช้งานเครื่องมือ Troubleshooting
การมีเครื่องมือ troubleshooting ที่ดีอยู่ในมือก็เหมือนกับการมีเครื่องมือช่างครบชุด ช่วยให้เราสามารถซ่อมแซมปัญหาต่างๆ ได้อย่างรวดเร็วและมีประสิทธิภาพ ลองมาดูกันว่ามีเครื่องมืออะไรบ้างที่เราควรรู้จักและวิธีการใช้งานเครื่องมือพื้นฐาน: ping และ traceroute
**Ping** คือเครื่องมือที่ใช้ตรวจสอบว่าเครื่องคอมพิวเตอร์หรืออุปกรณ์ network อื่นๆ สามารถติดต่อกันได้หรือไม่ โดยการส่ง packet ขนาดเล็กไปยังปลายทาง และรอรับ response หากได้รับ response แสดงว่าการเชื่อมต่อเป็นปกติ แต่หากไม่ได้รับ response อาจแสดงว่ามีปัญหาเกี่ยวกับการเชื่อมต่อ network **Traceroute** คือเครื่องมือที่ใช้ติดตามเส้นทางการเดินทางของ packet จากต้นทางไปยังปลายทาง โดยจะแสดงรายการ router ที่ packet ผ่าน และเวลาที่ใช้ในการเดินทางไปยังแต่ละ router เครื่องมือนี้มีประโยชน์อย่างมากในการระบุจุดที่เกิดปัญหาใน network ตารางสรุปการใช้งาน ping และ traceroute: | เครื่องมือ | คำอธิบาย | ตัวอย่างการใช้งาน | | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ping | ตรวจสอบว่า host สามารถติดต่อได้หรือไม่ โดยการส่ง ICMP echo request ไปยัง host ปลายทาง |ping siamcafe.net หาก ping สำเร็จ จะแสดงเวลาที่ใช้ในการรับส่ง packet และ TTL (Time To Live)
หาก ping ไม่สำเร็จ จะแสดง error message เช่น "Request timed out" หรือ "Destination host unreachable" | | traceroute | ติดตามเส้นทางการเดินทางของ packet จากต้นทางไปยังปลายทาง โดยแสดงรายการ router ที่ packet ผ่าน |
traceroute siamcafe.net (Linux/macOS)
tracert siamcafe.net (Windows) traceroute จะแสดงรายการ hop (router) ที่ packet ผ่าน และเวลาที่ใช้ในการเดินทางไปยังแต่ละ hop
หาก traceroute ไม่สามารถไปถึงปลายทางได้ จะแสดงเครื่องหมาย * แทน router ที่ไม่ตอบสนอง ซึ่งอาจเป็นจุดที่เกิดปัญหา | ตัวอย่างการใช้งาน ping และ traceroute:
# ตัวอย่างการใช้งาน ping
ping siamcafe.net
# ตัวอย่างการใช้งาน traceroute (Linux/macOS)
traceroute siamcafe.net
# ตัวอย่างการใช้งาน tracert (Windows)
tracert siamcafe.net
"ผมเคยใช้ traceroute ในการ troubleshooting ปัญหา network ที่ซับซ้อนมากๆ ตอนนั้นผู้ใช้งานแจ้งว่าไม่สามารถเข้าเว็บไซต์บางแห่งได้ ผมใช้ traceroute เพื่อตรวจสอบเส้นทางการเดินทางของ packet และพบว่ามี router ตัวหนึ่งใน ISP ที่มีปัญหา ทำให้ packet ไม่สามารถเดินทางไปยังปลายทางได้ หลังจากแจ้งให้ ISP ทราบ พวกเขาก็แก้ไขปัญหาได้ในที่สุด"
เครื่องมือขั้นสูง: Wireshark และ Nmap
**Wireshark** คือเครื่องมือที่ใช้ในการวิเคราะห์ packet ที่วิ่งอยู่ใน network ช่วยให้เราสามารถเห็นข้อมูลที่ถูกส่งผ่าน network ได้อย่างละเอียด Wireshark มีประโยชน์อย่างมากในการ troubleshooting ปัญหาที่เกี่ยวข้องกับ protocol ต่างๆ เช่น HTTP, DNS, TCP, และ UDP **Nmap** คือเครื่องมือที่ใช้ในการ scan network เพื่อค้นหา host และ port ที่เปิดอยู่ Nmap มีประโยชน์ในการตรวจสอบ security ของ network และระบุช่องโหว่ที่อาจถูกโจมตีได้ นอกจากนี้ Nmap ยังสามารถใช้ในการตรวจสอบว่า firewall ทำงานได้อย่างถูกต้องหรือไม่ เครื่องมือทั้งสองนี้มีฟังก์ชันการทำงานที่ซับซ้อน แต่สามารถเรียนรู้ได้ไม่ยากนัก ผมแนะนำให้ลองศึกษาและฝึกใช้งานเครื่องมือเหล่านี้ให้คล่องแคล่ว จะช่วยให้คุณสามารถแก้ไขปัญหา network ได้อย่างมืออาชีพ ในส่วนต่อไป เราจะมาดูวิธีการแก้ไขปัญหา network ที่พบบ่อย พร้อมทั้งตัวอย่างการใช้งานเครื่องมือต่างๆ ที่ได้กล่าวมาแล้ว เพื่อให้คุณสามารถนำไปประยุกต์ใช้ได้จริงในการทำงานของคุณครับเทคนิคขั้นสูง / Configuration
การแก้ไขปัญหาเครือข่ายบางครั้งก็ต้องการเครื่องมือและเทคนิคที่ซับซ้อนกว่าการ ping หรือ traceroute ธรรมดา เพื่อเจาะลึกถึงปัญหาที่ซ่อนอยู่ภายใต้พื้นผิว เราจึงต้องรู้จักเครื่องมือที่ช่วยวิเคราะห์ packet, ตรวจสอบ configuration ของอุปกรณ์เครือข่าย, และการปรับแต่งค่าต่างๆ เพื่อให้เครือข่ายทำงานได้อย่างราบรื่น ซึ่งเทคนิคเหล่านี้มักจะต้องอาศัยความเข้าใจใน protocol และ architecture ของเครือข่ายในระดับที่ลึกซึ้งยิ่งขึ้นครับการวิเคราะห์ Packet ด้วย Wireshark
Wireshark เป็นเครื่องมือวิเคราะห์ packet ที่ได้รับความนิยมอย่างมาก ช่วยให้เราสามารถดักจับข้อมูลที่วิ่งผ่านเครือข่ายและตรวจสอบเนื้อหาของ packet ได้อย่างละเอียด ไม่ว่าจะเป็น HTTP requests, DNS queries, หรือ TCP handshakes ครับ การใช้งาน Wireshark ช่วยให้เราเข้าใจการสื่อสารระหว่างอุปกรณ์ต่างๆ ในเครือข่าย และระบุปัญหาที่เกิดจากการสื่อสารผิดพลาด หรือข้อมูลที่สูญหายได้ ขั้นตอนการใช้งาน Wireshark อย่างง่าย: 1. ดาวน์โหลดและติดตั้ง Wireshark จากเว็บไซต์หลัก 2. เลือก network interface ที่ต้องการดักจับข้อมูล 3. เริ่มการดักจับข้อมูล (capture) 4. ใช้ filter เพื่อกรองข้อมูลที่สนใจ เช่น `http`, `dns`, หรือ `tcp.port == 80` 5. ตรวจสอบรายละเอียดของ packet ที่ถูกดักจับ เช่น source/destination IP, port, protocol, และ payload ตัวอย่างการใช้ Wireshark เพื่อตรวจสอบปัญหา DNS: สมมติว่าคุณสงสัยว่า DNS server ของคุณตอบสนองช้า ลองใช้ Wireshark ดักจับ packet ที่เกี่ยวข้องกับ DNS query ของคุณ โดยใช้ filter `dns`. จากนั้น ตรวจสอบเวลาที่ใช้ในการตอบสนองของ DNS server หากพบว่าใช้เวลานานเกินไป อาจจะต้องตรวจสอบ DNS server configuration หรือ performance ของ DNS server ครับการตรวจสอบและแก้ไข Configuration ของ Router/Firewall
Router และ firewall เป็นอุปกรณ์สำคัญที่ควบคุมการไหลของ traffic ในเครือข่าย การ configuration ที่ผิดพลาดอาจทำให้เกิดปัญหาการเชื่อมต่อ, security vulnerability, หรือ performance bottleneck ได้ ดังนั้น การตรวจสอบและแก้ไข configuration ของอุปกรณ์เหล่านี้จึงเป็นสิ่งสำคัญในการแก้ไขปัญหาเครือข่าย ตัวอย่างการตรวจสอบ configuration ของ Cisco router:
enable
show running-config
คำสั่ง `show running-config` จะแสดง configuration ปัจจุบันของ router ซึ่งคุณสามารถตรวจสอบ ACL (Access Control List), routing table, และ interface configuration เพื่อหาข้อผิดพลาดได้ หากพบข้อผิดพลาด สามารถแก้ไข configuration ได้โดยใช้คำสั่ง `configure terminal` เพื่อเข้าสู่ configuration mode และใช้คำสั่งต่างๆ เพื่อแก้ไขค่าต่างๆ ครับ
ตัวอย่างการแก้ไข ACL บน Cisco router:
configure terminal
ip access-list extended BLOCK_HTTP
deny tcp any any eq 80
permit ip any any
interface GigabitEthernet0/0
ip access-group BLOCK_HTTP in
end
ตัวอย่างนี้จะสร้าง ACL ชื่อ `BLOCK_HTTP` เพื่อบล็อก HTTP traffic (port 80) และ apply ACL นี้กับ interface `GigabitEthernet0/0` ครับ การตรวจสอบ firewall rules ก็มีความสำคัญเช่นกัน เพื่อให้แน่ใจว่า traffic ที่ต้องการอนุญาตนั้นไม่ถูกบล็อกโดย firewall
การใช้ `tcpdump` เพื่อวิเคราะห์ Traffic
`tcpdump` เป็นเครื่องมือ command-line ที่ใช้ในการดักจับและวิเคราะห์ packet ที่วิ่งผ่านเครือข่าย คล้ายกับ Wireshark แต่ทำงานใน command-line interface ทำให้เหมาะสำหรับการใช้งานบน server หรืออุปกรณ์ที่ไม่มี GUI ครับ ตัวอย่างการใช้งาน `tcpdump`: * ดักจับ packet ทั้งหมดบน interface `eth0`:
tcpdump -i eth0
* ดักจับเฉพาะ packet ที่มี port เป็น 80:
tcpdump -i eth0 port 80
* ดักจับ packet และบันทึกลงในไฟล์:
tcpdump -i eth0 -w capture.pcap
ไฟล์ `capture.pcap` สามารถเปิดด้วย Wireshark เพื่อวิเคราะห์เพิ่มเติมได้ `tcpdump` มีประโยชน์อย่างมากในการตรวจสอบ traffic ที่วิ่งผ่าน server และวิเคราะห์ปัญหาที่เกี่ยวข้องกับ protocol หรือ application ครับ ผมเคยใช้ tcpdump ตอนที่ server โดน attack เพื่อดูว่า traffic แปลกๆ มาจาก IP ไหน แล้วก็ block IP นั้นไปเลยครับ
เปรียบเทียบเครื่องมือและเทคนิค
การเลือกใช้เครื่องมือและเทคนิคในการแก้ไขปัญหาเครือข่าย ขึ้นอยู่กับสถานการณ์และลักษณะของปัญหาที่เกิดขึ้น ไม่มีเครื่องมือใดที่ "ดีที่สุด" ในทุกสถานการณ์ การเปรียบเทียบข้อดีข้อเสียของแต่ละเครื่องมือและเทคนิค จะช่วยให้เราเลือกใช้ได้อย่างเหมาะสมและมีประสิทธิภาพมากขึ้นครับตารางเปรียบเทียบเครื่องมือวิเคราะห์ Packet
| เครื่องมือ | ข้อดี | ข้อเสีย | เหมาะสำหรับ | | :------------ | :---------------------------------------------------------------- | :------------------------------------------------------------------------ | :------------------------------------------------------------------------ | | Wireshark | GUI ใช้งานง่าย, มี filter ที่หลากหลาย, วิเคราะห์ packet ได้ละเอียด | ใช้ resource มาก, ไม่เหมาะกับการดักจับ traffic จำนวนมากบน server | วิเคราะห์ปัญหาในระดับ application, ตรวจสอบ protocol, debug client issues | | tcpdump | Command-line, ใช้ resource น้อย, เหมาะกับการดักจับ traffic จำนวนมาก | ไม่มี GUI, filter ซับซ้อนกว่า Wireshark, ต้องมีความรู้ command-line | ดักจับ traffic บน server, วิเคราะห์ปัญหาในระดับ network, automation | | tshark | Command-line version ของ Wireshark | ไม่มี GUI, อาจต้องใช้ command ที่ซับซ้อน | ดักจับ traffic บน server โดยใช้ filter ของ Wireshark, automation |ตารางเปรียบเทียบเครื่องมือ Network Diagnostic
| เครื่องมือ | ข้อดี | ข้อเสีย | เหมาะสำหรับ | | :------------ | :------------------------------------------------------------- | :------------------------------------------------------------------- | :---------------------------------------------------------------------- | | ping | ตรวจสอบ connectivity ง่ายและรวดเร็ว | ไม่สามารถบอกรายละเอียดของปัญหาได้, อาจถูก firewall บล็อก | ตรวจสอบว่า host สามารถ reach ได้หรือไม่, ตรวจสอบ network latency เบื้องต้น | | traceroute | แสดง path ของ packet, ช่วยระบุจุดที่เกิดปัญหา | อาจถูก firewall บล็อก, ข้อมูลอาจไม่ถูกต้องเสมอไป | ระบุ hop ที่ทำให้เกิดปัญหา, ตรวจสอบ routing path | | nslookup/dig | ตรวจสอบ DNS resolution, ค้นหา DNS record | ต้องมีความรู้เกี่ยวกับ DNS record type, อาจไม่แสดงผลลัพธ์ที่ถูกต้องเสมอไป | ตรวจสอบ DNS configuration, debug DNS resolution issues | | iperf3 | วัด bandwidth และ network performance | ต้องมี server และ client, ผลลัพธ์อาจไม่แม่นยำเสมอไปขึ้นอยู่กับ environment | benchmark network performance, ตรวจสอบ bandwidth ระหว่างสอง host | ตัวอย่าง benchmark ด้วย iperf3: 1. ติดตั้ง iperf3 บน server และ client
# บน server
iperf3 -s
# บน client
iperf3 -c <server_ip>
2. ตรวจสอบผลลัพธ์ที่ได้จาก client เพื่อดู bandwidth, jitter, และ packet loss
ข้อควรระวังในการ Troubleshooting
การแก้ไขปัญหาเครือข่ายเป็นกระบวนการที่ต้องใช้ความระมัดระวัง เพราะการเปลี่ยนแปลง configuration ที่ไม่ถูกต้อง อาจทำให้เกิดปัญหาที่ใหญ่กว่าเดิมได้ นอกจากนี้ การตีความข้อมูลที่ได้จากเครื่องมือต่างๆ ต้องทำอย่างรอบคอบ เพื่อหลีกเลี่ยงการวินิจฉัยที่ผิดพลาด และการแก้ไขปัญหาที่ไม่ตรงจุดครับ"Be careful when changing network configurations. Always have a backup and understand the potential impact of your changes."ข้อควรระวังในการแก้ไขปัญหาเครือข่าย: * **Documentation is Key:** จดบันทึกทุกขั้นตอนที่คุณทำ รวมถึง configuration เดิมก่อนที่จะทำการเปลี่ยนแปลง เพื่อให้สามารถ rollback ได้หากเกิดปัญหา * **Test in a Non-Production Environment:** หากเป็นไปได้ ให้ทดสอบการเปลี่ยนแปลงใน environment ที่ไม่ใช่ production ก่อน เพื่อหลีกเลี่ยงผลกระทบต่อผู้ใช้งานจริง * **Understand the Impact:** ก่อนที่จะทำการเปลี่ยนแปลงใดๆ ให้เข้าใจถึงผลกระทบที่อาจเกิดขึ้นกับระบบและผู้ใช้งาน * **Monitor After Changes:** หลังจากทำการเปลี่ยนแปลงแล้ว ให้ monitor ระบบอย่างใกล้ชิด เพื่อตรวจสอบว่าการเปลี่ยนแปลงนั้นส่งผลกระทบตามที่คาดหวังหรือไม่ * **Rollback Plan:** เตรียมแผน rollback ในกรณีที่การเปลี่ยนแปลงทำให้เกิดปัญหา สมัยก่อนผมเคยพลาดตอนที่รีบแก้ปัญหาแล้วไม่ได้ backup configuration เดิม พอแก้ไปแก้มาปรากฏว่า network ล่มหนักกว่าเดิม สุดท้ายต้องเสียเวลา restore configuration จาก backup เก่า (โชคดีที่ backup ไว้) ทำให้รู้เลยว่าการ backup configuration สำคัญมากๆ ครับ
ตัวอย่างจากประสบการณ์ 20 ปี
ตลอด 20 ปีที่ผ่านมา ผมได้เจอปัญหาเครือข่ายมามากมาย ตั้งแต่ปัญหาง่ายๆ อย่างสาย LAN หลุด ไปจนถึงปัญหาที่ซับซ้อนอย่าง routing loop หรือ firewall misconfiguration ประสบการณ์เหล่านี้สอนให้ผมรู้ว่าการแก้ไขปัญหาเครือข่ายไม่ใช่แค่การใช้เครื่องมือ แต่เป็นการผสมผสานความรู้, ประสบการณ์, และความละเอียดรอบคอบครับ **สถานการณ์ที่ 1: ปัญหา Network Slowness** ลูกค้าแจ้งว่า network ช้ามากในช่วงเวลาทำการ ผมเริ่มจากการ ping ไปที่ gateway เพื่อตรวจสอบ connectivity และ latency พบว่า latency สูงผิดปกติ (มากกว่า 100ms) จากนั้นใช้ traceroute เพื่อตรวจสอบ path ของ packet พบว่ามี hop หนึ่งที่ใช้เวลานานมากในการตอบสนอง เมื่อตรวจสอบ router ตัวนั้น พบว่า CPU utilization สูงถึง 100% เนื่องจากมี broadcast storm เกิดขึ้นใน network ผมจึงทำการตรวจสอบ switch port ที่เชื่อมต่อกับ router และพบว่ามี port หนึ่งที่ส่ง broadcast packet จำนวนมาก เมื่อตรวจสอบเพิ่มเติม พบว่ามีเครื่อง client เครื่องหนึ่งติด malware และกำลังแพร่กระจาย broadcast packet ใน network ผมจึงทำการ isolate เครื่อง client นั้นออกจาก network และทำการกำจัด malware ทำให้ network กลับมาทำงานเป็นปกติ **สถานการณ์ที่ 2: ปัญหา Application ไม่สามารถ Connect Database ได้** Application server ไม่สามารถ connect ไปยัง database server ได้ ผมเริ่มจากการตรวจสอบว่า database server ทำงานอยู่หรือไม่ และตรวจสอบ firewall ว่าอนุญาตให้ traffic จาก application server ไปยัง database server หรือไม่ พบว่า firewall rule อนุญาตให้ traffic ผ่านได้ แต่ application server ยังไม่สามารถ connect ได้ ผมจึงใช้ `tcpdump` บน database server เพื่อตรวจสอบว่ามี traffic จาก application server มาถึงหรือไม่ พบว่าไม่มี traffic ใดๆ มาจาก application server เลย ผมจึงตรวจสอบ routing table บน application server และพบว่า routing table ไม่ถูกต้อง ทำให้ application server ไม่สามารถหา path ไปยัง database server ได้ ผมจึงทำการแก้ไข routing table ให้ถูกต้อง และ application server ก็สามารถ connect ไปยัง database server ได้ **สถานการณ์ที่ 3: ปัญหา DNS Resolution ล้มเหลว** ผู้ใช้งานไม่สามารถเข้าเว็บไซต์บางแห่งได้ ผมเริ่มจากการตรวจสอบว่า DNS server ทำงานอยู่หรือไม่ และตรวจสอบว่า DNS server สามารถ resolve domain name ของเว็บไซต์นั้นได้หรือไม่ พบว่า DNS server สามารถ resolve domain name ได้ถูกต้อง แต่ผู้ใช้งานยังไม่สามารถเข้าเว็บไซต์ได้ ผมจึงตรวจสอบ DNS configuration บนเครื่อง client และพบว่า client กำลังใช้ DNS server ที่ไม่ถูกต้อง ผมจึงทำการแก้ไข DNS configuration บนเครื่อง client ให้ใช้ DNS server ที่ถูกต้อง และผู้ใช้งานก็สามารถเข้าเว็บไซต์ได้ ปัญหาเหล่านี้เป็นเพียงส่วนหนึ่งของปัญหาเครือข่ายที่ผมเคยเจอมา การแก้ไขปัญหาแต่ละครั้งต้องอาศัยการวิเคราะห์, การทดลอง, และการเรียนรู้จากความผิดพลาด ผมหวังว่าประสบการณ์เหล่านี้จะเป็นประโยชน์สำหรับผู้ที่กำลังเริ่มต้นเรียนรู้การแก้ไขปัญหาเครือข่ายนะครับเครื่องมือแนะนำสำหรับการแก้ไขปัญหา Network
การแก้ไขปัญหา network ไม่ใช่เรื่องยากอย่างที่คิดครับ ถ้าเรามีเครื่องมือที่เหมาะสมอยู่ในมือ ลองนึกภาพว่าเราเป็นช่างซ่อมรถ ถ้าไม่มีเครื่องมือก็คงซ่อมไม่ได้ หรือซ่อมได้แต่ก็อาจจะช้าและไม่ตรงจุด เครื่องมือเหล่านี้จะช่วยให้เราวิเคราะห์ปัญหาได้อย่างแม่นยำและรวดเร็วขึ้นPing: เพื่อนเก่าที่ไว้ใจได้
Ping เป็นเครื่องมือพื้นฐานที่ทุกคนคุ้นเคยกันดี แต่ก็ยังคงมีประโยชน์อย่างมากในการตรวจสอบว่า host ปลายทางนั้นสามารถติดต่อได้หรือไม่ หลักการทำงานของ ping คือการส่ง ICMP (Internet Control Message Protocol) echo request ไปยัง host ปลายทาง และรอรับ ICMP echo reply กลับมา ถ้าได้รับ reply ก็แสดงว่า host ปลายทางนั้นยังทำงานอยู่และสามารถติดต่อได้ ตัวอย่างการใช้งาน ping:ping google.com
PING google.com (142.250.191.142): 56 data bytes
64 bytes from 142.250.191.142: icmp_seq=0 ttl=117 time=1.234 ms
64 bytes from 142.250.191.142: icmp_seq=1 ttl=117 time=1.345 ms
64 bytes from 142.250.191.142: icmp_seq=2 ttl=117 time=1.456 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.234/1.345/1.456/0.111 ms
จากตัวอย่างจะเห็นว่าเราสามารถ ping ไปยัง google.com ได้ และได้รับ reply กลับมา ซึ่งแสดงว่าเราสามารถติดต่อกับ google.com ได้ นอกจากนี้ ping ยังแสดงข้อมูลอื่นๆ ที่เป็นประโยชน์ เช่น round-trip time (เวลาที่ใช้ในการส่งและรับข้อมูล) และ packet loss (จำนวน packet ที่สูญหาย) ซึ่งสามารถนำไปวิเคราะห์ปัญหาได้
Traceroute: ตามรอยเส้นทางข้อมูล
Traceroute เป็นเครื่องมือที่ช่วยให้เราเห็นเส้นทางที่ข้อมูลเดินทางจากต้นทางไปยังปลายทาง โดยจะแสดงรายชื่อ router ทุกตัวที่ข้อมูลผ่านไป ซึ่งมีประโยชน์อย่างมากในการระบุว่า router ตัวไหนที่มีปัญหา ทำให้ข้อมูลไม่สามารถเดินทางไปยังปลายทางได้ Traceroute ทำงานโดยการส่ง packet ที่มี TTL (Time To Live) น้อยๆ ไปยังปลายทาง เมื่อ packet เดินทางผ่าน router แต่ละตัว TTL จะลดลง เมื่อ TTL เป็น 0 router จะส่ง ICMP Time Exceeded message กลับมายังต้นทาง ทำให้ traceroute สามารถระบุ router ตัวนั้นได้ จากนั้น traceroute จะเพิ่ม TTL ขึ้นเรื่อยๆ จนกว่าจะถึงปลายทาง ตัวอย่างการใช้งาน traceroute:traceroute google.com
traceroute to google.com (142.250.191.142), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.234 ms 1.345 ms 1.456 ms
2 10.0.0.1 (10.0.0.1) 2.345 ms 2.456 ms 2.567 ms
3 172.217.160.110 (172.217.160.110) 3.456 ms 3.567 ms 3.678 ms
4 142.250.191.142 (142.250.191.142) 4.567 ms 4.678 ms 4.789 ms
จากตัวอย่างจะเห็นว่าข้อมูลเดินทางผ่าน router 4 ตัวก่อนที่จะถึง google.com ถ้าเราพบว่า router ตัวใดตัวหนึ่งไม่ตอบสนอง เราก็สามารถสันนิษฐานได้ว่า router ตัวนั้นอาจจะมีปัญหา
Nslookup/Dig: เจาะลึก DNS
DNS (Domain Name System) เป็นระบบที่แปลงชื่อ domain name (เช่น google.com) ให้เป็น IP address (เช่น 142.250.191.142) ถ้า DNS มีปัญหา เราจะไม่สามารถเข้าเว็บไซต์ได้ แม้ว่า network connection ของเราจะปกติก็ตาม Nslookup และ dig เป็นเครื่องมือที่ใช้ในการ query DNS server เพื่อตรวจสอบว่า DNS server ทำงานถูกต้องหรือไม่ เราสามารถใช้เครื่องมือเหล่านี้เพื่อตรวจสอบว่า DNS server สามารถแปลงชื่อ domain name เป็น IP address ได้หรือไม่ และตรวจสอบว่า DNS record ถูกต้องหรือไม่ ตัวอย่างการใช้งาน nslookup:nslookup google.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: google.com
Address: 142.250.191.142
ตัวอย่างการใช้งาน dig:
dig google.com
; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38297
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 299 IN A 142.250.191.142
;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Oct 26 10:23:45 UTC 2024
;; MSG SIZE rcvd: 55
จากตัวอย่างจะเห็นว่าทั้ง nslookup และ dig สามารถแปลงชื่อ google.com เป็น IP address 142.250.191.142 ได้ ซึ่งแสดงว่า DNS server ทำงานถูกต้อง
Case Study: ประสบการณ์จริง
ผมเคยเจอปัญหา network ที่บริษัทแห่งหนึ่งเมื่อปี 2022 ครับ ตอนนั้นบริษัทมีพนักงานประมาณ 200 คน ทุกคนใช้งาน internet ไม่ได้เลย ทีม IT ก็วุ่นวายกันมาก เพราะทุกคน report ว่า "เน็ตล่ม" ตอนแรกผมคิดว่าเป็นปัญหาที่ router หลักของบริษัท ก็เลยเข้าไปตรวจสอบ config ต่างๆ แต่ก็ไม่พบอะไรผิดปกติ ผมลอง ping ไปยัง google.com ก็ไม่สำเร็จ แสดงว่าปัญหาไม่ได้อยู่ที่ router ภายในบริษัท ผมเลยลอง traceroute ไปยัง google.com ปรากฏว่า packet ไปติดอยู่ที่ router ของ ISP (Internet Service Provider) ตัวหนึ่ง ผมโทรไปแจ้ง ISP ทาง ISP ก็แจ้งว่ามีปัญหาที่อุปกรณ์ของเขา และกำลังแก้ไขอยู่ หลังจากนั้นประมาณ 30 นาที ISP ก็แก้ไขปัญหาเรียบร้อย ทุกคนก็สามารถใช้งาน internet ได้ตามปกติ จากเหตุการณ์นี้ทำให้ผมรู้ว่าการมีเครื่องมือที่เหมาะสม และการวิเคราะห์ปัญหาอย่างเป็นขั้นตอน จะช่วยให้เราแก้ไขปัญหาได้อย่างรวดเร็ว อีกเคสหนึ่งที่ผมเคยเจอคือ ปัญหา DNS resolution ล่ม ตอนนั้นผมกำลัง setup Kubernetes cluster บน cloud provider แห่งหนึ่ง ปรากฏว่า pod ที่สร้างขึ้นมาไม่สามารถ resolve hostname ภายนอกได้เลย ผมลองเข้าไป investigate ใน pod ก็พบว่า /etc/resolv.conf ชี้ไปยัง DNS server ที่ไม่ถูกต้อง ผมเลยแก้ไข resolv.conf ให้ชี้ไปยัง DNS server ของ cloud provider ปัญหาก็หายไป สิ่งที่ผมเรียนรู้จากเคสนี้คือ การตรวจสอบ DNS configuration เป็นสิ่งสำคัญ โดยเฉพาะอย่างยิ่งใน environment ที่มีความซับซ้อน เช่น KubernetesFAQ: คำถามที่พบบ่อย
หลายครั้งที่การแก้ไขปัญหา network ก็เหมือนกับการคลำทางในความมืด แต่ไม่ต้องกังวลครับ ผมได้รวบรวมคำถามที่พบบ่อยเกี่ยวกับการแก้ไขปัญหา network มาให้แล้ว ลองอ่านดูนะครับ อาจจะเจอปัญหาที่คุณกำลังเจออยู่ก็ได้ทำไม ping ได้ แต่เข้าเว็บไซต์ไม่ได้?
การที่ ping ได้แต่เข้าเว็บไซต์ไม่ได้ อาจเกิดจากหลายสาเหตุครับ สาเหตุที่พบบ่อยที่สุดคือ ปัญหา DNS resolution คือ เครื่องไม่สามารถแปลงชื่อเว็บไซต์ (เช่น google.com) เป็น IP address ได้ ลองตรวจสอบ DNS server ที่เครื่องใช้งานอยู่ว่าถูกต้องหรือไม่ หรือลองเปลี่ยนไปใช้ DNS server สาธารณะ เช่น 8.8.8.8 (Google Public DNS) หรือ 1.1.1.1 (Cloudflare DNS) นอกจากนี้ อาจเกิดจาก firewall ที่ block port 80 (HTTP) หรือ port 443 (HTTPS) ลองตรวจสอบ firewall rules ดูครับทำไม internet ช้าเป็นบางครั้ง?
Internet ช้าเป็นบางครั้งอาจเกิดจากหลายสาเหตุครับ สาเหตุที่พบบ่อยคือ network congestion คือ มีผู้ใช้งานจำนวนมากใช้งาน internet ในเวลาเดียวกัน ทำให้ bandwidth ไม่เพียงพอ นอกจากนี้ อาจเกิดจากปัญหาที่ router หรือ switch ที่มีการใช้งานสูง ทำให้ packet loss เกิดขึ้น หรืออาจเกิดจากปัญหาที่เว็บไซต์ปลายทางเอง ที่ server มีการใช้งานสูง ทำให้ response ช้า ลองตรวจสอบ network utilization และ server load ดูครับWireless signal อ่อน แก้ยังไงดี?
Wireless signal อ่อนอาจเกิดจากหลายสาเหตุครับ สาเหตุที่พบบ่อยคือ ระยะห่างระหว่างอุปกรณ์กับ wireless router มากเกินไป หรือมีสิ่งกีดขวางสัญญาณ เช่น ผนังคอนกรีต หรือเครื่องใช้ไฟฟ้า ลองย้ายอุปกรณ์ให้ใกล้กับ wireless router มากขึ้น หรือหลีกเลี่ยงสิ่งกีดขวางสัญญาณ นอกจากนี้ อาจเกิดจากสัญญาณ wireless ช่องสัญญาณ (channel) ที่ router ใช้งานอยู่ มีการใช้งานสูง ลองเปลี่ยนช่องสัญญาณ wireless ดูครับทำไมบางเว็บไซต์เข้าได้ บางเว็บไซต์เข้าไม่ได้?
การที่บางเว็บไซต์เข้าได้ บางเว็บไซต์เข้าไม่ได้ อาจเกิดจากหลายสาเหตุครับ สาเหตุที่พบบ่อยคือ ปัญหา DNS resolution คือ DNS server ไม่สามารถ resolve ชื่อเว็บไซต์บางเว็บไซต์ได้ ลองเปลี่ยนไปใช้ DNS server สาธารณะ หรือตรวจสอบว่า DNS record ของเว็บไซต์นั้นถูกต้องหรือไม่ นอกจากนี้ อาจเกิดจาก firewall ที่ block การเข้าถึงเว็บไซต์บางเว็บไซต์ ลองตรวจสอบ firewall rules ดูครับจะรู้ได้อย่างไรว่าปัญหาอยู่ที่ Network หรือ Application?
การที่จะรู้ว่าปัญหาอยู่ที่ network หรือ application ต้องทำการวิเคราะห์อย่างเป็นระบบครับ เริ่มจากการตรวจสอบ network connection ก่อน โดยใช้ ping และ traceroute เพื่อตรวจสอบว่าสามารถติดต่อกับ server ปลายทางได้หรือไม่ ถ้า network connection ปกติ อาจเป็นปัญหาที่ application เอง เช่น application มี bug หรือ server มีการใช้งานสูง ลองตรวจสอบ application logs และ server load ดูครับIP address ชนกัน แก้ยังไง?
IP address ชนกัน (IP address conflict) เกิดขึ้นเมื่อมีอุปกรณ์สองเครื่องใน network ใช้งาน IP address เดียวกัน ทำให้ทั้งสองเครื่องไม่สามารถใช้งาน network ได้ วิธีแก้ไขคือ กำหนด IP address ให้กับอุปกรณ์แต่ละเครื่องใหม่ โดยใช้ DHCP server เพื่อแจก IP address อัตโนมัติ หรือกำหนด IP address แบบ static ให้กับแต่ละเครื่อง โดยตรวจสอบให้แน่ใจว่าไม่มี IP address ซ้ำกันสรุป
การแก้ไขปัญหา network เป็นทักษะที่สำคัญสำหรับทุกคนที่ทำงานด้าน IT ไม่ว่าจะเป็น developer, system administrator หรือ network engineer การมีความรู้ความเข้าใจเกี่ยวกับ network protocols และเครื่องมือต่างๆ จะช่วยให้เราสามารถวิเคราะห์และแก้ไขปัญหาได้อย่างรวดเร็วและมีประสิทธิภาพ ในบทความนี้ เราได้เรียนรู้เกี่ยวกับเครื่องมือพื้นฐานสำหรับการแก้ไขปัญหา network เช่น ping, traceroute, nslookup/dig และ Wireshark นอกจากนี้ เรายังได้เรียนรู้เกี่ยวกับขั้นตอนการแก้ไขปัญหา network อย่างเป็นระบบ เริ่มจากการระบุปัญหา รวบรวมข้อมูล วิเคราะห์ข้อมูล ทดสอบสมมติฐาน และแก้ไขปัญหา สิ่งที่สำคัญที่สุดในการแก้ไขปัญหา network คือ การมีสติและใจเย็น อย่ารีบร้อนสรุปปัญหา ลองวิเคราะห์ข้อมูลอย่างละเอียด และทดสอบสมมติฐานอย่างรอบคอบ ถ้าทำตามขั้นตอนเหล่านี้ ผมเชื่อว่าทุกคนจะสามารถแก้ไขปัญหา network ได้อย่างแน่นอน สุดท้ายนี้ ผมขอแนะนำให้ทุกคนฝึกฝนการแก้ไขปัญหา network อย่างสม่ำเสมอ ลองสร้าง network เล็กๆ ขึ้นมาเอง แล้วลองจำลองสถานการณ์ต่างๆ เพื่อฝึกแก้ไขปัญหา เมื่อเจอปัญหาจริงๆ จะได้ไม่ตื่นตระหนก และสามารถแก้ไขปัญหาได้อย่างรวดเร็วครับ ขอให้ทุกคนสนุกกับการแก้ไขปัญหา network นะครับ!Tips จากประสบการณ์ 20 ปี
1. เริ่มจาก Layer ล่างสุดเสมอ
เมื่อพูดถึงการแก้ปัญหา Network สิ่งแรกที่ผมอยากแนะนำจากประสบการณ์กว่า 20 ปีคือ ให้เริ่มจาก Layer ล่างสุดของ OSI model เสมอครับ หลายคนอาจจะมองข้าม แต่จริงๆ แล้วปัญหาเล็กๆ น้อยๆ ที่ Layer 1 (Physical Layer) หรือ Layer 2 (Data Link Layer) นี่แหละ ที่เป็นตัวการทำให้ Network ทั้งระบบรวนได้เลยนะ
ลองนึกภาพว่าสาย LAN หลวมนิดหน่อย หรือ Switch port มีปัญหา ไม่เสถียร การ ping ไปที่ Gateway อาจจะติดๆ ดับๆ ทำให้เราเข้าใจผิดคิดว่า Gateway มีปัญหา ทั้งๆ ที่จริงๆ แล้วต้นเหตุมาจากสาย LAN เส้นเดียวนี่เอง สมัยก่อนผมเคยเจอปัญหาแปลกๆ คือ User บางคนเข้า Website ได้บ้างไม่ได้บ้าง พอไปดูปรากฏว่าสาย LAN ที่โต๊ะทำงานเขาโดนเก้าอี้ทับอยู่ ทำให้สายมันงอจนสัญญาณไม่ดีเท่าที่ควร พอเปลี่ยนสาย LAN ก็หายเลยครับ
ดังนั้นก่อนจะไปดูเรื่อง IP address, DNS หรือ Firewall ให้เช็คพวกสายสัญญาณ, หัว Connector, Switch port, Wireless signal ให้ละเอียดก่อนเสมอ ถ้าเป็นไปได้ลองเปลี่ยนสาย LAN, ย้ายไปเสียบ Switch port อื่น หรือ Restart อุปกรณ์ Network ไปเลยครับ ง่ายๆ แต่ได้ผลชะงัดนัก
2. ใช้เครื่องมือให้เป็นประโยชน์
ในโลกของการแก้ปัญหา Network มีเครื่องมือมากมายให้เราเลือกใช้ แต่ละเครื่องมือก็มีจุดเด่นและวิธีการใช้งานที่แตกต่างกันไป การเลือกใช้เครื่องมือที่เหมาะสมกับสถานการณ์ จะช่วยให้เราวิเคราะห์ปัญหาได้รวดเร็วและแม่นยำยิ่งขึ้นครับ
เครื่องมือพื้นฐานที่ทุกคนควรมีติดตัวไว้คือ ping, traceroute (หรือ tracert ใน Windows), ipconfig (หรือ ifconfig ใน Linux/macOS) เครื่องมือเหล่านี้ช่วยให้เราตรวจสอบการเชื่อมต่อ Network, หาเส้นทางที่ Packet เดินทาง และดูข้อมูล IP address ของเครื่องเราได้ นอกจากนี้ยังมีเครื่องมือที่ Advance ขึ้นมาอีก เช่น Wireshark สำหรับดักจับ Packet และวิเคราะห์ข้อมูล Network หรือ Nmap สำหรับ Scan หา Port ที่เปิดอยู่บนเครื่อง Server ต่างๆ
สมัยก่อนผมใช้ tcpdump บ่อยมากในการดักจับ Packet เวลาเจอปัญหา Application คุยกันไม่รู้เรื่อง ลองดัก Packet ดูแล้วเอามาวิเคราะห์ ก็จะเห็นว่า Packet วิ่งไปวิ่งมายังไง ใครส่งอะไรให้ใครบ้าง ทำให้เราเข้าใจ Flow ของข้อมูลได้ชัดเจนขึ้น ตรงนี้สำคัญมากนะ! เพราะบางทีปัญหาไม่ได้อยู่ที่ Network แต่อยู่ที่ Application ส่งข้อมูลผิดรูปแบบต่างหาก
# ตัวอย่างการใช้ tcpdump ดักจับ packet ที่ port 80
sudo tcpdump -i eth0 port 80
3. DNS คือเพื่อนรัก หรือศัตรูร้าย
DNS (Domain Name System) เป็นเหมือนสมุดโทรศัพท์ของ Internet ทำหน้าที่แปลงชื่อ Domain ที่เราคุ้นเคย เช่น www.google.com ให้เป็น IP address ที่เครื่อง Computer เข้าใจได้ เวลาที่เราพิมพ์ชื่อ Website ใน Browser แล้วเข้า Website ไม่ได้ หลายครั้งสาเหตุมาจาก DNS นี่แหละครับ
ปัญหา DNS ที่พบบ่อยคือ DNS Server ตอบผิด, DNS Cache เก่า, หรือ DNS Server ล่ม วิธีแก้ปัญหาเบื้องต้นคือลอง Flush DNS Cache ในเครื่องเราดูก่อน (ipconfig /flushdns ใน Windows หรือ sudo dscacheutil -flushcache ใน macOS) ถ้ายังไม่หาย ให้ลองเปลี่ยนไปใช้ DNS Server อื่น เช่น Google DNS (8.8.8.8 และ 8.8.4.4) หรือ Cloudflare DNS (1.1.1.1) ดูครับ
ผมเคยเจอปัญหา DNS แปลกๆ คือ Application บางตัว Query DNS Server ตัวหนึ่งตลอดเวลา ทั้งๆ ที่ในเครื่อง Server มี DNS Server หลายตัว Config ไว้ พอ DNS Server ตัวนั้นล่ม Application ก็ใช้งานไม่ได้เลย วิธีแก้คือต้องไป Config Application ให้ Query DNS Server ตัวอื่นด้วย หรือไม่ก็ต้องทำ DNS Server Load Balancing เพื่อให้ Application เลือกใช้ DNS Server ที่ใช้งานได้
4. Firewall: กำแพงที่ต้องดูแล
Firewall เป็นปราการด่านแรกที่ช่วยปกป้อง Network ของเราจากภัยคุกคามต่างๆ แต่ในขณะเดียวกัน Firewall ก็อาจเป็นตัวการที่ทำให้ Application ของเราใช้งานไม่ได้เช่นกัน ถ้า Firewall Block Port ที่ Application ใช้
เวลาเจอปัญหา Application คุยกับ Server ไม่ได้ สิ่งแรกที่ต้องเช็คคือ Firewall ครับ ดูว่า Firewall Block Port ที่ Application ใช้หรือไม่ ถ้า Block อยู่ก็ต้อง Allow Port นั้นใน Firewall Rule ครับ นอกจากนี้ต้องดู Direction ของ Traffic ด้วย ว่าขาเข้า (Inbound) หรือขาออก (Outbound) ที่ถูก Block
สมัยก่อนผมเคยเซ็ต Firewall ผิด ทำให้ User บางคนเข้า Website ได้ บางคนเข้าไม่ได้ เพราะ Firewall Rule มัน Match User ไม่เหมือนกัน วิธีแก้คือต้อง Review Firewall Rule ให้ละเอียด แล้วจัดเรียง Rule ให้ถูกต้อง โดย Rule ที่เฉพาะเจาะจงกว่า ควรอยู่ด้านบน Rule ที่ทั่วไปกว่า
# ตัวอย่างการ Allow port 80 บน Linux firewall (iptables)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
5. Subnet Mask สำคัญกว่าที่คิด
Subnet Mask เป็นตัวกำหนดว่า IP address ไหนอยู่ใน Network เดียวกัน ถ้า Subnet Mask Config ผิดพลาด จะทำให้เครื่อง Computer ไม่สามารถสื่อสารกันได้ ถึงแม้ว่าจะอยู่ใน Network เดียวกันก็ตาม
ปัญหาส่วนใหญ่ที่เจอคือ Subnet Mask ไม่ตรงกัน เช่น เครื่องหนึ่งใช้ 255.255.255.0 แต่อีกเครื่องใช้ 255.255.0.0 ทำให้สองเครื่องนี้มองว่าอยู่คนละ Network กัน ทั้งๆ ที่จริงๆ แล้วควรจะคุยกันได้ วิธีแก้คือต้อง Config Subnet Mask ให้ตรงกันทุกเครื่องใน Network
ผมเคยเจอปัญหาแปลกๆ คือ Printer ใช้งานไม่ได้ เพราะ Printer กับ Computer อยู่คนละ Subnet กัน ทั้งๆ ที่ Gateway เดียวกัน วิธีแก้คือต้องเพิ่ม Route ใน Printer ให้ชี้ไปยัง Subnet ของ Computer หรือไม่ก็ต้องเปลี่ยน Subnet Mask ของ Printer ให้เหมือนกับ Computer
6. Gateway: ทางออกสู่โลกภายนอก
Gateway เป็นเหมือนประตูที่เชื่อมต่อ Network ของเรากับโลกภายนอก ถ้า Gateway มีปัญหา เราจะไม่สามารถเข้า Internet หรือติดต่อกับ Server ที่อยู่นอก Network ได้
เวลาเจอปัญหาเข้า Internet ไม่ได้ สิ่งแรกที่ต้องเช็คคือ Gateway ครับ ลอง Ping ไปที่ Gateway ดู ถ้า Ping ไม่ติด แสดงว่า Gateway มีปัญหา อาจจะเกิดจาก Router ล่ม, สายสัญญาณหลุด, หรือ ISP มีปัญหา
ผมเคยเจอปัญหา Gateway ซ้ำซ้อน คือมี Router หลายตัวใน Network ทำหน้าที่เป็น Gateway ทำให้เครื่อง Computer สับสนว่าจะใช้ Gateway ตัวไหน วิธีแก้คือต้อง Disable DHCP Server บน Router ตัวที่ไม่ต้องการให้เป็น Gateway หรือไม่ก็ต้อง Config Router ให้ทำงานใน Mode Bridge
7. DHCP: พระเอก หรือผู้ร้าย
DHCP (Dynamic Host Configuration Protocol) เป็น Protocol ที่ช่วยแจกจ่าย IP address ให้กับเครื่อง Computer โดยอัตโนมัติ ทำให้เราไม่ต้อง Config IP address เอง แต่ในขณะเดียวกัน DHCP ก็อาจเป็นตัวการที่ทำให้ IP address ชนกัน หรือเครื่อง Computer ไม่ได้รับ IP address เลย
ปัญหาส่วนใหญ่ที่เจอคือ DHCP Server มีปัญหา เช่น DHCP Scope เต็ม, DHCP Server ล่ม, หรือ DHCP Lease Time สั้นเกินไป วิธีแก้คือต้องขยาย DHCP Scope, Restart DHCP Server, หรือเพิ่ม DHCP Lease Time
สมัยก่อนผมเคยเจอปัญหา IP address ชนกัน เพราะมี User คนหนึ่ง Config IP address เอง โดยไม่ได้ใช้ DHCP ทำให้ IP address ไปชนกับเครื่อง Server อีกเครื่องหนึ่ง วิธีแก้คือต้อง Disable Static IP address บนเครื่อง User แล้วบังคับให้ใช้ DHCP อย่างเดียว
8. Documentation คือเพื่อนแท้
การทำ Documentation ที่ดี เป็นสิ่งสำคัญมากในการแก้ปัญหา Network โดยเฉพาะอย่างยิ่งใน Environment ที่ซับซ้อน Documentation ที่ดีจะช่วยให้เราเข้าใจโครงสร้าง Network, การ Config อุปกรณ์ต่างๆ, และประวัติการแก้ไขปัญหา ทำให้เราสามารถแก้ปัญหาได้รวดเร็วและมีประสิทธิภาพยิ่งขึ้น
Documentation ที่ดีควรประกอบไปด้วย Diagram Network, IP address scheme, Firewall rule, DNS configuration, และ Troubleshooting steps นอกจากนี้ควรมีการ Update Documentation อยู่เสมอ เมื่อมีการเปลี่ยนแปลง Network
ผมเคยเจอปัญหาแก้ Network ไม่ได้ เพราะไม่มี Documentation อะไรเลย ต้องมานั่งไล่ Config อุปกรณ์ทีละตัว ซึ่งเสียเวลามาก หลังจากนั้นผมเลยเริ่มทำ Documentation อย่างละเอียด แล้ว Update อยู่เสมอ ทำให้การแก้ปัญหา Network ง่ายขึ้นมาก
FAQ
H3: ทำไม Ping ติด แต่เข้า Website ไม่ได้?
การที่ Ping ติด แต่เข้า Website ไม่ได้ เป็นปัญหาที่พบบ่อยมากครับ สาเหตุอาจมีได้หลายอย่าง ลองคิดดูนะว่า Ping เนี่ยมันแค่เช็คว่าเราสามารถติดต่อกับ Server ได้หรือไม่ แต่ไม่ได้หมายความว่าทุกอย่างจะทำงานได้ปกติ
สาเหตุที่เป็นไปได้คือ:
- DNS Problem: อย่างที่บอกไปข้างต้น DNS อาจจะ Resolve ชื่อ Domain ผิด หรือ DNS Server ล่ม ทำให้ Browser ไม่รู้ว่าจะไปที่ IP address ไหน
- Firewall: Firewall อาจจะ Block Port 80 (HTTP) หรือ Port 443 (HTTPS) ทำให้ Browser ไม่สามารถเชื่อมต่อกับ Web Server ได้
- Web Server Problem: Web Server อาจจะล่ม, Overload, หรือมีปัญหา Configuration ทำให้ไม่สามารถตอบสนอง Request ได้
- Browser Cache: Browser อาจจะ Cache ข้อมูลเก่าของ Website ไว้ ทำให้แสดงผลผิดพลาด
วิธีแก้ปัญหาคือ:
- Flush DNS Cache ในเครื่อง
- ลองเข้า Website ด้วย IP address โดยตรง (ถ้าทราบ)
- ตรวจสอบ Firewall Rule
- ลองใช้ Browser อื่น หรือ Clear Browser Cache
H3: ทำไม Wireless หลุดบ่อย?
ปัญหา Wireless หลุดบ่อย เป็นอะไรที่น่าหงุดหงิดมากครับ โดยเฉพาะเวลาที่กำลังทำงานสำคัญๆ สาเหตุของปัญหานี้ก็มีเยอะแยะมากมาย แต่ส่วนใหญ่แล้วจะมาจากเรื่องสัญญาณรบกวน หรือการ Config Wireless Router ไม่ถูกต้อง
สาเหตุที่เป็นไปได้คือ:
- สัญญาณรบกวน: สัญญาณ Wireless อาจจะถูกรบกวนจากอุปกรณ์ไฟฟ้าอื่นๆ เช่น Microwave, Bluetooth, หรือ Wireless Router อื่นๆ ที่ใช้ Channel เดียวกัน
- ระยะทาง: ระยะทางระหว่าง Computer กับ Wireless Router อาจจะไกลเกินไป ทำให้สัญญาณอ่อน
- Driver Wireless: Driver Wireless Card ใน Computer อาจจะเก่า หรือมีปัญหา
- Wireless Router Configuration: Wireless Router อาจจะ Config ไม่ถูกต้อง เช่น Channel ไม่เหมาะสม, Security Protocol ไม่ถูกต้อง, หรือ Firmware เก่า
วิธีแก้ปัญหาคือ:
- ลองเปลี่ยน Channel ของ Wireless Router
- ย้าย Wireless Router ไปไว้ในที่โล่ง
- Update Driver Wireless Card
- ตรวจสอบ Wireless Router Configuration
H3: ทำไม Internet ช้า?
Internet ช้า เป็นปัญหาที่ทุกคนต้องเคยเจอครับ สาเหตุอาจจะมาจากหลายปัจจัย ทั้งจากฝั่งเราเอง และจากฝั่ง ISP (Internet Service Provider)
สาเหตุที่เป็นไปได้คือ:
- Bandwidth Overload: มีคนใช้งาน Internet พร้อมกันเยอะเกินไป ทำให้ Bandwidth ไม่พอ
- Router Problem: Router อาจจะเก่า, Overload, หรือมีปัญหา Configuration
- Malware: เครื่อง Computer อาจจะติด Malware ที่ใช้ Bandwidth เยอะ
- ISP Problem: ISP อาจจะมีปัญหา Network ทำให้ Internet ช้า
วิธีแก้ปัญหาคือ:
- Restart Router
- ตรวจสอบว่ามีใครใช้ Bandwidth เยอะหรือไม่
- Scan Virus ในเครื่อง Computer
- ติดต่อ ISP
H3: จะรู้ได้อย่างไรว่า Server ล่ม?
การตรวจสอบว่า Server ล่มหรือไม่ เป็นเรื่องสำคัญมาก โดยเฉพาะอย่างยิ่งถ้า Server นั้นให้บริการ Application ที่สำคัญต่อธุรกิจของเรา มีหลายวิธีในการตรวจสอบ Server Status ตั้งแต่การ Ping ไปจนถึงการใช้ Monitoring Tools
วิธีตรวจสอบ Server Status:
- Ping: Ping เป็นวิธีที่ง่ายที่สุดในการตรวจสอบว่า Server ยัง Online อยู่หรือไม่ ถ้า Ping ติด แสดงว่า Server ยังทำงานอยู่ แต่ไม่ได้หมายความว่าทุกอย่างจะปกติ
- Telnet: Telnet ช่วยให้เราตรวจสอบว่า Port ที่ Server ใช้ยังเปิดอยู่หรือไม่ ถ้า Telnet ไปที่ Port นั้นได้ แสดงว่า Service ที่ใช้ Port นั้นยังทำงานอยู่
- Monitoring Tools: มี Monitoring Tools มากมายให้เราเลือกใช้ เช่น Nagios, Zabbix, หรือ Prometheus เครื่องมือเหล่านี้จะช่วย Monitor Server Status อย่างละเอียด และแจ้งเตือนเมื่อ Server มีปัญหา
ผมเคยใช้ Nagios ในการ Monitor Server หลายร้อยเครื่อง ช่วยให้ผมรู้ว่า Server ไหนมีปัญหา ก่อนที่ User จะโทรมาแจ้งซะอีก
| ปัญหา | สาเหตุที่เป็นไปได้ | วิธีแก้ไข |
|---|---|---|
| เข้า Website ไม่ได้ | DNS ผิดพลาด, Firewall Block, Web Server ล่ม | Flush DNS, ตรวจสอบ Firewall, ตรวจสอบ Web Server |
| Wireless หลุดบ่อย | สัญญาณรบกวน, ระยะทางไกล, Driver เก่า | เปลี่ยน Channel, ย้าย Router, Update Driver |
| Internet ช้า | Bandwidth Overload, Router Problem, Malware | Restart Router, Scan Virus, ติดต่อ ISP |
| Server ล่ม | Hardware Failure, Software Bug, Network Problem | ตรวจสอบ Hardware, Debug Software, ตรวจสอบ Network |