จาก IPsec สู่ WireGuard: ประสบการณ์เปลี่ยนผ่านระบบ VPN ในออฟฟิศที่เคยปวดหัว

Photo by Ed Webster on Pexels
ในฐานะเน็ตเวิร์กเอนจิเนียร์ที่ต้องดูแลระบบเครือข่ายของออฟฟิศที่มีสาขาย่อยและพนักงาน Work from Home (WFH) หลายสิบชีวิต ปัญหาเรื่อง VPN หลุด ช้า หรือเชื่อมต่อยาก มักจะเป็นฝันร้ายที่ผมต้องเจอในทุกๆ เช้าวันจันทร์ ย้อนกลับไปเมื่อสองปีก่อน ระบบเดิมของเราใช้งาน IPsec VPN บนอุปกรณ์ MikroTik รุ่นยอดนิยมอย่าง RB3011 แม้ว่ามันจะมีความปลอดภัยสูง แต่มันก็แลกมาด้วยความซับซ้อนในการตั้งค่า และที่สำคัญคือ “กินทรัพยากร CPU สูงมาก” เมื่อพนักงานเริ่มเชื่อมต่อเข้ามาพร้อมกันเกิน 20 คน เสียงพัดลมในตู้แร็กก็เริ่มดัง และ CPU Usage ก็พุ่งทะลุ 90% จนทำให้ทราฟฟิกอื่นๆ ในออฟฟิศเริ่มหน่วงอย่างเห็นได้ชัด
ปัญหาที่น่าปวดหัวที่สุดของ IPsec และ L2TP/IPsec คือเมื่อพนักงานเดินทางและเปลี่ยนการเชื่อมต่อ เช่น จาก Wi-Fi บ้าน เป็น Hotspot มือถือ 4G/5G การเชื่อมต่อ VPN มักจะขาดทันที และต้องใช้เวลานานในการ Re-connect ใหม่ บางครั้งค้างอยู่สถานะ Connecting จนพนักงานต้องโทรศัพท์มาโวยวายกับทีมไอที วันหนึ่งหลังจากที่ผมนั่งแก้ปัญหา VPN หลุดซ้ำซากจนถึงดึกดื่น ผมจึงตัดสินใจว่าถึงเวลาแล้วที่เราต้องมองหาทางเลือกใหม่ และนั่นคือจุดเริ่มต้นของการนำ WireGuard เข้ามาทดลองใช้งานบน MikroTik RouterOS v7 ซึ่งเพิ่งเปิดตัวฟีเจอร์นี้อย่างเป็นทางการได้ไม่นาน
การตัดสินใจเปลี่ยนผ่านในครั้งนั้นไม่ใช่เรื่องง่าย เพราะเราต้องรื้อระบบ VPN เดิมที่ทำงานมาหลายปี แต่ผลลัพธ์ที่ได้กลับคุ้มค่าเกินคาด WireGuard ไม่เพียงแต่ช่วยลดภาระการทำงานของ CPU บน MikroTik ลงอย่างมหาศาล แต่ยังมอบประสบการณ์การใช้งานที่ลื่นไหลจนพนักงานแทบไม่รู้สึกว่ากำลังเปิดใช้งาน VPN อยู่เลย บทความนี้ผมจึงอยากมาแชร์ประสบการณ์จริง ปัญหาที่พบระหว่างทาง และวิธีคอนฟิกที่ใช้งานได้จริงในโปรดักชันครับ
ทำไมต้อง WireGuard? ความแตกต่างที่สัมผัสได้จริง
ก่อนที่เราจะไปดูวิธีตั้งค่า ผมอยากเล่าให้ฟังก่อนว่าทำไม WireGuard ถึงกลายเป็น Game Changer ของวงเกณฑ์ VPN ยุคนี้ ข้อดีอย่างแรกที่เห็นได้ชัดเจนที่สุดคือ “ความเร็วและความเบา” WireGuard ถูกเขียนขึ้นมาด้วยโค้ดเพียงไม่กี่พันบรรทัดเมื่อเทียบกับ IPsec ที่มีโค้ดเป็นแสนบรรทัด ความเรียบง่ายนี้ทำให้มันทำงานได้เร็วมาก และประหยัดพลังงานอย่างยิ่ง จากการทดสอบในแล็บส่วนตัว ทราฟฟิกที่วิ่งผ่าน WireGuard แทบจะใกล้เคียงกับความเร็วอินเทอร์เน็ตจริง (Line Rate) โดยที่ CPU ของ MikroTik ขยับขึ้นมาเพียงแค่ 5-10% เท่านั้น แตกต่างจาก IPsec ที่เห็นตัวเลขพุ่งไปไกล
ข้อดีอย่างที่สองคือความสามารถในการจัดการกับ “Roaming” ที่ยอดเยี่ยมที่สุดเท่าที่ผมเคยเจอมา เนื่องจาก WireGuard ทำงานบนโปรโตคอล UDP และไม่มีการรักษา Session แบบเดิมๆ แต่ใช้ระบบ Cryptographic Key Routing ทำให้เมื่อผู้ใช้งานสลับเครือข่ายจาก Wi-Fi ไปเป็น 5G ตัว WireGuard Client จะส่งแพ็กเกจถัดไปพร้อมคีย์เดิมทันที ส่งผลให้การเชื่อมต่อไม่เคยหลุดเลย พนักงานสามารถประชุมสายผ่าน Zoom หรือดึงไฟล์จาก NAS ออฟฟิศได้อย่างต่อเนื่องไม่มีสะดุด แม้จะเดินเปลี่ยนจุดเชื่อมต่ออินเทอร์เน็ตก็ตาม
ข้อจำกัดที่ต้องรู้ก่อนเริ่มใช้งาน
อย่างไรก็ตาม WireGuard ก็ไม่ได้มีแต่ข้อดีไปเสียทั้งหมด สิ่งหนึ่งที่ต้องพึงระวังคือเรื่องของ Dynamic IP แอดเดรส เนื่องจาก WireGuard ออกแบบมาให้ทำงานแบบ Static Peer-to-Peer เป็นหลัก หากฝั่ง Server ของเราไม่มี Public IP แบบคงที่ (Static IP) การตั้งค่าจะมีความยุ่งยากขึ้นเล็กน้อย แต่โชคดีที่ MikroTik มีบริการ IP Cloud (DDNS) มาให้ฟรี ทำให้เราสามารถหลีกเลี่ยงข้อจำกัดนี้ได้ นอกจากนี้ระบบ Authentication ของ WireGuard จะใช้ Key คู่ (Public/Private Key) เท่านั้น ไม่มีระบบ Username/Password แบบเดิมๆ ซึ่งอาจจะทำให้การจัดการสิทธิ์ผู้ใช้งานจำนวนมากๆ ต้องใช้ความเป็นระเบียบในการเก็บข้อมูลคีย์ค่อนข้างสูง
ขั้นตอนการ Setup WireGuard Server บน MikroTik
การตั้งค่า WireGuard บน MikroTik RouterOS v7 นั้นง่ายกว่า IPsec หลายเท่าตัวครับ โดยเราจะแบ่งขั้นตอนออกเป็นสองส่วนหลักๆ คือการสร้างอินเตอร์เฟส WireGuard (ตัว Server) และการกำหนดหมายเลข IP สำหรับวง VPN นี้ โดยในตัวอย่างนี้ผมจะกำหนดให้วง Network สำหรับ VPN เป็น 10.0.99.0/24 และตัว MikroTik เองจะมี IP เป็น 10.0.99.1 ซึ่งจะทำหน้าที่เป็น Gateway ให้กับ Client ทุกเครื่องที่เชื่อมเข้ามา
สิ่งแรกที่เราต้องทำคือการสร้าง Interface WireGuard ขึ้นมา ซึ่งในขั้นตอนนี้ตัว RouterOS จะทำการเจนเนอเรต Private Key และ Public Key ให้เราโดยอัตโนมัติ จากนั้นเราจะต้องเข้าไปกำหนด IP Address ให้กับอินเตอร์เฟสใหม่นี้ และที่สำคัญที่สุดคือการเปิดพอร์ตที่ Firewall (ปกติแล้ว WireGuard จะใช้พอร์ต UDP 13231 หรือพอร์ตอื่นๆ ตามที่เรากำหนด) เพื่อยอมรับการเชื่อมต่อจากภายนอกเข้ามายังเราเตอร์
ตัวอย่างการคอนฟิกผ่าน Command Line (CLI)
ด้านล่างนี้คือสคริปต์คำสั่งในการสร้าง Interface, กำหนด IP Address และตั้งค่า Firewall Rule เพื่อเปิดพอร์ต UDP สำหรับ WireGuard บน MikroTik ของคุณครับ
/interface wireguard
add listen-port=13231 name=wireguard-vpn comment="Company VPN Server"
/ip address
add address=10.0.99.1/24 interface=wireguard-vpn comment="VPN Gateway IP"
/ip firewall filter
add action=accept chain=input dst-port=13231 protocol=udp comment="Allow WireGuard Traffic"
add action=accept chain=input src-address=10.0.99.0/24 comment="Allow VPN Clients to Router"
การเพิ่ม Clients (Peers) และการตั้งค่าฝั่งผู้ใช้งาน
หลังจากที่เราเตรียมฝั่ง Server เรียบร้อยแล้ว ขั้นตอนต่อไปคือการเพิ่ม “Peer” หรือผู้ใช้งานเข้ามาในระบบ ในโลกของ WireGuard ทุกๆ อุปกรณ์ไม่ว่าจะเป็น Server, PC, หรือมือถือ จะถูกเรียกว่า Peer ทั้งสิ้น โดยการเชื่อมต่อจะเกิดขึ้นได้ก็ต่อเมื่อทั้งสองฝั่งต่างรู้จัก Public Key ของกันและกัน สำหรับฝั่ง Client นั้น เราสามารถดาวน์โหลดแอปพลิเคชัน WireGuard ได้ฟรีทั้งบน Windows, macOS, iOS และ Android
เมื่อติดตั้งแอปพลิเคชันบน Client แล้ว ให้สร้าง Tunnel ใหม่ขึ้นมา ตัวแอปจะสร้าง Public/Private Key ของฝั่ง Client เอง จากนั้นเราต้องนำ Public Key ของ Client มากรอกใน MikroTik (ในเมนู Peers) พร้อมทั้งระบุหมายเลข IP ที่เราอนุญาตให้ Client เครื่องนั้นใช้งาน (เช่น 10.0.99.2/32) และในทางกลับกัน เราก็นำ Public Key ของ MikroTik ไปกรอกในแอปฝั่ง Client ด้วยเช่นกัน
ตัวอย่างการเพิ่ม Peer บน MikroTik และการตั้งค่า Client Config
นี่คือคำสั่งในการเพิ่ม Peer (พนักงานชื่อ Somsak) บน MikroTik Server และตัวอย่างไฟล์คอนฟิก (.conf) ที่ต้องนำไปใส่ในแอปพลิเคชันของ Client เพื่อให้สามารถเชื่อมต่อกลับมายังออฟฟิศได้
# คำสั่งบน MikroTik Server (แทนที่ [CLIENT_PUBLIC_KEY] ด้วยคีย์จริงจากแอปของพนักงาน)
/interface wireguard peers
add allowed-address=10.0.99.2/32 interface=wireguard-vpn public-key="[CLIENT_PUBLIC_KEY]" comment="Somsak_Laptop"
# ตัวอย่างไฟล์คอนฟิกสำหรับฝั่ง Client (Somsak_Laptop.conf)
[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY_HERE]
Address = 10.0.99.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = [MIKROTIK_PUBLIC_KEY_HERE]
Endpoint = vpn.yourcompany.com:13231
AllowedIPs = 10.0.99.0/24, 192.168.1.0/24
PersistentKeepalive = 25
ปัญหาหน้างานที่เจอจริง และเทคนิคการแก้ไข (Troubleshooting)
ในการใช้งานจริง ผมเจออุปสรรคอยู่ 2-3 ประเด็นที่อยากจะแชร์เพื่อไม่ให้ทุกคนต้องเสียเวลาหาทางแก้เหมือนผม ปัญหาแรกคือ “เชื่อมต่อได้แต่เปิดเว็บไม่ได้ หรือเข้าสู่วงภายในออฟฟิศไม่ได้” ปัญหานี้มักเกิดจากเรื่องของ Firewall Rule และ Routing บน MikroTik ครับ ตรวจสอบให้แน่ใจว่าคุณได้เพิ่ม Rule ใน Firewall Filter ให้ยอมรับทราฟฟิกจากวง 10.0.99.0/24 ให้สามารถ Forward ไปยังวงแลนภายในออฟฟิศ (เช่น 192.168.1.0/24) ได้ และหากต้องการให้พนักงานใช้อินเทอร์เน็ตผ่าน VPN ด้วย อย่าลืมทำ NAT (Masquerade) ให้กับวง VPN ออกสู่อินเทอร์เน็ตภายนอก
ปัญหาที่สองคือ “อาการเน็ตเวิร์กค้าง หรือเปิดบางหน้าเว็บไม่ได้เมื่อต่อ VPN” ปัญหานี้เกิดจากขนาดของ MTU (Maximum Transmission Unit) ที่ใหญ่เกินไป เนื่องจาก WireGuard มีการหุ้มแพ็กเกจด้วยคีย์ความปลอดภัย ทำให้มี Overhead เพิ่มขึ้น หากเราปล่อยให้ MTU เป็นค่า Default (1500) แพ็กเกจอาจจะถูก Drop ในระหว่างทาง วิธีแก้คือให้ปรับลดขนาด MTU ของอินเตอร์เฟส WireGuard บน MikroTik และฝั่ง Client ลงมาอยู่ที่ 1420 หรือ 1410 จะช่วยแก้ปัญหาเรื่องเว็บโหลดไม่ขึ้นหรือเปิดบางบริการไม่ได้อย่างชะงัด
สรุปประเด็นสำคัญและเช็คลิสต์ก่อนเปิดใช้งานจริง
- เวอร์ชันของ RouterOS: ต้องอัปเกรด MikroTik เป็น RouterOS v7 ขึ้นไปเท่านั้น เนื่องจาก v6 ไม่รองรับ WireGuard
- ความปลอดภัยของพอร์ต: ควรเปลี่ยน Listen Port จากค่าเริ่มต้น (เช่น เลี่ยงพอร์ต 13231) ไปเป็นพอร์ตอื่นเพื่อป้องกันการสแกนพอร์ตจากผู้ไม่หวังดี
- การจัดการ Keys: ควรทำตารางจดบันทึก Public Key และ IP Address ของพนักงานแต่ละคนอย่างเป็นระบบเพื่อป้องกัน IP ชนกัน
- Keepalive: ในฝั่ง Client ควรตั้งค่า PersistentKeepalive = 25 เสมอ เพื่อให้เราเตอร์ปลายทางและไฟร์วอลล์ภายนอกรักษาการเชื่อมต่อไว้ตลอดเวลา
- MTU Adjustment: หากพนักงานเจอปัญหาเข้าบางเว็บไซต์ไม่ได้ ให้ปรับลด MTU ของ WireGuard ลงมาที่ 1420
สรุป
การเปลี่ยนมาใช้งาน WireGuard VPN บน MikroTik ถือเป็นการตัดสินใจที่ถูกต้องที่สุดครั้งหนึ่งในการดูแลระบบเน็ตเวิร์กออฟฟิศของผม มันช่วยแก้ปัญหาเรื่องความหน่วงของอินเทอร์เน็ต ลดภาระการทำงานของ CPU เราเตอร์ลงอย่างเห็นได้ชัด และที่สำคัญที่สุดคือช่วยลดจำนวนเคสแจ้งปัญหา VPN หลุดจากพนักงานลงไปได้เกือบ 100% ด้วยความเสถียรในการสลับเครือข่ายที่ยอดเยี่ยม
แม้ว่าในช่วงแรกอาจจะต้องปรับตัวกับระบบการจัดการคีย์ (Public/Private Key) แทนการใช้ Username/Password แบบเดิมๆ บ้าง แต่เมื่อระบบเข้าที่แล้ว มันเป็นระบบ VPN ที่แทบไม่ต้องเข้าไปดูแลรักษาอะไรเพิ่มเติมเลย (Configure and Forget) หากออฟฟิศของคุณยังใช้ IPsec หรือ L2TP ที่แสนจะปวดหัวอยู่ ผมแนะนำให้ลองหาเวลาอัปเกรด MikroTik เป็น v7 แล้วเริ่มทดลองใช้ WireGuard วันนี้ เชื่อผมเถอะครับว่าชีวิตไอทีของคุณจะง่ายขึ้นอีกเยอะ!





