WireGuard เหมาะกับ Site-to-Site VPN ระหว่างเครื่อง Linux หรืออุปกรณ์ที่รองรับ เพราะตั้งค่าง่าย โค้ดมีขนาดเล็ก และให้ Performance สูงบน CPU ทั่วไป ส่วน IPsec แบบ IKEv2 เหมาะเมื่อต้องเชื่อมกับ Firewall หรือ Router ที่มีอยู่แล้ว เพราะเป็นมาตรฐานที่อุปกรณ์ Network เกือบทุกรุ่นรองรับ และอุปกรณ์หลายรุ่นมี Hardware ช่วยเข้ารหัส คำถามที่ควรถามก่อนเลือกจึงไม่ใช่ "ตัวไหนเร็วกว่า" แต่เป็น "ปลายทั้งสองฝั่งรองรับอะไร และทีมดูแลแบบไหนได้"
WireGuard ทำงานอย่างไร
WireGuard เป็นโปรโตคอล VPN ที่อยู่ใน Linux Kernel ตั้งแต่เวอร์ชัน 5.6 ใช้ชุดการเข้ารหัสที่กำหนดตายตัว ได้แก่ Curve25519, ChaCha20-Poly1305 และ BLAKE2s ทำให้ไม่ต้องเลือกหรือเจรจา Cipher Suite แต่ละ Peer ระบุตัวตนด้วย Public Key และทำงานบน UDP พอร์ตเดียว ดูรายละเอียดของโครงการได้ที่ wireguard.com
IPsec IKEv2 ทำงานอย่างไร
IPsec ประกอบด้วย IKE ซึ่งใช้เจรจาและแลกเปลี่ยนกุญแจ และ ESP ซึ่งใช้เข้ารหัสข้อมูล IKEv2 เป็นรุ่นที่ใหม่และเสถียรกว่า IKEv1 รองรับการยืนยันตัวตนด้วย Pre-shared Key หรือ Certificate และเลือก Cipher ได้หลายแบบ เช่น AES-GCM ความยืดหยุ่นนี้ทำให้เชื่อมกับอุปกรณ์ต่างผู้ผลิตได้ แต่ก็เพิ่มโอกาสตั้งค่าไม่ตรงกันระหว่างสองฝั่ง
เปรียบเทียบ WireGuard และ IPsec
เมื่อไรควรเลือก WireGuard
- ทั้งสองฝั่งเป็น Linux Server หรือ Cloud Server ที่ทีมดูแลเอง
- ต้องการเชื่อมหลายสาขาเข้าจุดกลางแบบ Hub-and-Spoke ด้วยการตั้งค่าที่เหมือนกัน
- อุปกรณ์ปลายทางมี CPU ไม่แรงและไม่มี Hardware ช่วยเข้ารหัส
เมื่อไรควรเลือก IPsec
- ฝั่งใดฝั่งหนึ่งเป็น Firewall หรือ Router ที่ไม่รองรับ WireGuard
- ต้องเชื่อมกับองค์กรคู่ค้าที่กำหนดมาตรฐานมาแล้ว
- TOR หรือนโยบายความปลอดภัยกำหนดโปรโตคอลหรือ Cipher ที่ต้องใช้
- ต้องการ Route-based VPN ร่วมกับ BGP เพื่อทำ Failover อัตโนมัติระหว่างหลายลิงก์
ขั้นตอนที่ 1: ตั้งค่า WireGuard แบบ Site-to-Site
สร้าง Key บนทั้งสองเครื่อง
wg genkey | tee privatekey | wg pubkey > publickey
ไฟล์ /etc/wireguard/wg0.conf ฝั่ง Cloud (ตัวอย่าง)
[Interface]
Address = 10.99.0.1/30
ListenPort = 51820
PrivateKey = <private-key-ฝั่ง-cloud>
[Peer]
PublicKey = <public-key-ฝั่งสาขา>
AllowedIPs = 10.99.0.2/32, 192.168.10.0/24
ฝั่งสาขาตั้งค่าคล้ายกัน โดยเพิ่ม Endpoint = <public-ip-cloud>:51820 และ PersistentKeepalive = 25 เพื่อรักษาการเชื่อมต่อผ่าน NAT จากนั้นเปิดใช้งานด้วย systemctl enable --now wg-quick@wg0 และตรวจสถานะด้วย wg show
ค่า AllowedIPs ทำหน้าที่ทั้งเป็น Routing Table และตัวกรองว่า Peer นั้นส่ง Packet จาก IP ไหนได้ ต้องใส่ Subnet ของอีกฝั่งให้ครบ
ขั้นตอนที่ 2: ตั้งค่า IPsec IKEv2 ด้วย strongSwan
ตัวอย่างไฟล์ swanctl.conf แบบย่อ ดูตัวเลือกทั้งหมดได้ที่ เอกสาร strongSwan
connections {
branch {
version = 2
remote_addrs = 203.0.113.20
local { auth = psk id = cloud.example.com }
remote { auth = psk id = branch.example.com }
children {
net {
local_ts = 10.20.0.0/16
remote_ts = 192.168.10.0/24
esp_proposals = aes256gcm16-prfsha384-ecp384
}
}
proposals = aes256-sha384-ecp384
}
}
ค่า Proposals ต้องตรงกันทั้งสองฝั่ง ถ้าอีกฝั่งเป็น Firewall ให้ตรวจเอกสารของผู้ผลิตว่ารองรับชุด Cipher ใดบ้าง
ขั้นตอนที่ 3: แก้ปัญหา MTU และ MSS
อาการที่เจอบ่อยที่สุดของ Site-to-Site VPN คือ Ping ผ่าน แต่เปิดเว็บหรือโอนไฟล์ขนาดใหญ่ไม่ได้ สาเหตุมักเป็น MTU เพราะ VPN เพิ่ม Header ทำให้ Packet ใหญ่เกินกว่าที่เส้นทางรับได้
- WireGuard เพิ่ม Overhead ประมาณ 60 bytes บน IPv4 และ 80 bytes บน IPv6 ค่า MTU เริ่มต้นจึงเป็น 1420
- IPsec ESP เพิ่ม Overhead ประมาณ 50–73 bytes ขึ้นกับ Cipher และการใช้ NAT-T
ทดสอบขนาด Packet ที่ส่งผ่านได้โดยไม่ต้องแบ่ง
ping -M do -s 1372 192.168.10.1
ลดค่า -s ลงทีละน้อยจนกว่าจะผ่าน แล้วตั้ง MSS Clamping บน Gateway เพื่อให้ TCP ปรับขนาดเอง
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ข้อควรระวังด้านความปลอดภัย
- จำกัดพอร์ต VPN ให้รับเฉพาะ IP ของอีกฝั่งถ้า IP คงที่
- ใช้ Firewall กรอง Traffic ภายในอุโมงค์ด้วย ไม่ใช่เปิดทุกพอร์ตระหว่างสาขา
- สำหรับ IPsec ให้ใช้ Certificate แทน Pre-shared Key เมื่อมีหลายสาขา และหลีกเลี่ยง Cipher เก่า เช่น 3DES และ SHA-1
- เก็บ Private Key ของ WireGuard ด้วยสิทธิ์ไฟล์ที่เข้มงวด เช่น
chmod 600
คำถามที่พบบ่อย
WireGuard ปลอดภัยกว่า IPsec ไหม?
ทั้งสองปลอดภัยเมื่อตั้งค่าถูกต้อง WireGuard มีโค้ดน้อยและไม่มีตัวเลือก Cipher ที่อ่อนแอ จึงลดโอกาสตั้งค่าผิด ส่วน IPsec ปลอดภัยเท่ากันถ้าเลือก Cipher ที่ทันสมัยและอัปเดตอุปกรณ์สม่ำเสมอ
WireGuard เร็วกว่า IPsec จริงไหม?
บน CPU ทั่วไปที่ไม่มี Hardware Offload WireGuard มักให้ Throughput สูงกว่า แต่บน Firewall ที่มี Hardware เข้ารหัส IPsec อาจเร็วเท่าหรือเร็วกว่า ควรทดสอบกับอุปกรณ์จริงด้วย iperf3
ใช้ WireGuard กับ Firewall ที่มีอยู่ได้ไหม?
ขึ้นกับรุ่นและ Firmware Firewall รุ่นใหม่บางรุ่นรองรับแล้ว ถ้าไม่รองรับ ให้ใช้ IPsec หรือวาง Linux Gateway ขนาดเล็กไว้หลัง Firewall
Site-to-Site VPN ต่างจาก Private Network อย่างไร?
Site-to-Site VPN เข้ารหัสข้อมูลผ่านอินเทอร์เน็ต ส่วน Private Network หรือ Leased Line เป็นวงจรเฉพาะที่ไม่ผ่านอินเทอร์เน็ต ให้ Latency คงที่กว่าแต่ค่าใช้จ่ายสูงกว่า หลายองค์กรใช้ทั้งสองแบบ โดยให้ VPN เป็นเส้นทางสำรอง
สรุป
เลือก WireGuard เมื่อควบคุมปลายทั้งสองฝั่งได้และต้องการความเรียบง่าย เลือก IPsec IKEv2 เมื่อต้องเชื่อมกับอุปกรณ์ Network ที่มีอยู่หรือมีข้อกำหนดด้านมาตรฐาน ไม่ว่าจะเลือกแบบไหน ให้ตรวจ MTU และตั้ง MSS Clamping ตั้งแต่แรก เพราะเป็นสาเหตุอันดับต้นของปัญหาที่หาสาเหตุยาก
THAI DATA CLOUD ให้บริการ VPN Gateway และ Private Network สำหรับเชื่อมสำนักงานและสาขาเข้ากับ Cloud Server บน Data Center ในประเทศไทย [ตรวจสอบ: โปรโตคอล VPN ที่ VPN Gateway รองรับ และรูปแบบบริการ Private Network] หากต้องการให้ทีมช่วยออกแบบเครือข่ายระหว่างสาขา ปรึกษาได้ที่ ติดต่อ THAI DATA CLOUD