Network
เอาจริงๆ สมัยผมทำร้านเน็ต SiamCafe เมื่อ 20 กว่าปีก่อนเนี่ย เรื่อง VPN มันไม่ได้ฮิตขนาดนี้หรอก ส่วนใหญ่ก็ใช้กันในบริษัทใหญ่ๆ ที่ต้องเชื่อมต่อสำนักงาน แต่เดี๋ยวนี้มันคนละเรื่องเลย ทุกคนอยากมี VPN ส่วนตัว ด้วยเหตุผลต่างๆ กันไป
Wireguard เนี่ย มันเป็น VPN ประเภทหนึ่งที่ "มาใหม่" แต่แรงแซงโค้ง ด้วยความที่มัน config ง่าย (กว่า OpenVPN เยอะ!) เร็ว และ secure กว่าหลายๆ ตัวที่มีอยู่ ทำให้คนหันมาใช้กันเยอะขึ้นมากๆ
ทำไมถึงสำคัญน่ะเหรอ? ลองคิดดูสิ เวลาเราใช้ Wi-Fi สาธารณะ พวก Starbucks, สนามบิน ใครๆ ก็ดักฟังข้อมูลเราได้ Wireguard มันช่วยเข้ารหัสข้อมูล ทำให้คนอื่นอ่านข้อมูลของเราไม่ได้ หรือบางทีเราอยากเข้าเว็บที่โดนบล็อกในประเทศ Wireguard ก็ช่วยให้เราเข้าได้
IP Address ก็เหมือนบ้านเลขที่ของคอมพิวเตอร์เราในโลกอินเทอร์เน็ต Subnet Mask ก็คือส่วนที่บอกว่า IP Address ไหนอยู่ในเครือข่ายเดียวกัน สมัยก่อนผมต้องสอนเด็กที่ร้านเรื่องนี้แทบทุกวัน เพราะมันสำคัญกับการตั้งค่า Network มากๆ
ตัวอย่าง IP Address: 192.168.1.10
ตัวอย่าง Subnet Mask: 255.255.255.0 (หรือ /24)
อันนี้สำคัญมากๆ ใน Wireguard ทุกเครื่องจะมี Public Key (เหมือนกุญแจสาธารณะที่ใครก็เห็นได้) และ Private Key (เหมือนกุญแจส่วนตัวที่ต้องเก็บไว้ให้ดี) เวลาจะคุยกัน เครื่อง A จะเข้ารหัสข้อมูลด้วย Public Key ของเครื่อง B แล้วเครื่อง B ก็จะใช้ Private Key ของตัวเองถอดรหัส
เปรียบเทียบง่ายๆ เหมือนส่งจดหมายลับ เครื่อง A ใส่จดหมายในกล่องที่ล็อคด้วยกุญแจของเครื่อง B แล้วส่งไป เครื่อง B เท่านั้นที่จะเปิดกล่องได้
Peer ใน Wireguard ก็คือเครื่องที่เชื่อมต่อ VPN ด้วยกัน อาจจะเป็นคอมพิวเตอร์, มือถือ, หรือแม้แต่ Router แต่ละ Peer จะมี IP Address, Public Key, และ Private Key ของตัวเอง
การเริ่มต้นใช้งาน Wireguard ไม่ได้ยากอย่างที่คิด สมัยผมเริ่มทำร้านเน็ตใหม่ๆ อะไรๆ ก็ยากไปหมด แต่ Wireguard นี่ถือว่า user-friendly กว่าเยอะ สิ่งที่ต้องมีคือ:
ผมแนะนำให้ใช้ VPS เพราะมันเปิดตลอด 24 ชั่วโมง และมี IP Address ที่แน่นอน แต่ถ้าอยากลองเล่นที่บ้านก่อนก็ได้
อันนี้เป็นตัวอย่างการติดตั้งบน Ubuntu Server นะครับ
sudo apt update
sudo apt upgrade
sudo apt install wireguard
จากนั้น generate Private Key และ Public Key:
wg genkey | tee privatekey | wg pubkey > publickey
อย่าลืมเก็บ privatekey ไว้ให้ดี! ส่วน publickey เอาไว้ให้ Client
สร้างไฟล์ wg0.conf ใน /etc/wireguard/ (ต้องใช้ sudo)
[Interface]
PrivateKey = <PRIVATE_KEY_SERVER>
Address = 10.6.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <PUBLIC_KEY_CLIENT>
AllowedIPs = 10.6.0.2/32
เปลี่ยน <PRIVATE_KEY_SERVER> และ <PUBLIC_KEY_CLIENT> ด้วย Key ที่ generate ไว้ และเปลี่ยน eth0 เป็น Network Interface ของ Server
ติดตั้ง Wireguard บน Client (เช่น มือถือ หรือคอมพิวเตอร์)
สร้าง config file (เช่น wg0.conf)
[Interface]
PrivateKey = <PRIVATE_KEY_CLIENT>
Address = 10.6.0.2/32
DNS = 8.8.8.8, 8.8.4.4
[Peer]
PublicKey = <PUBLIC_KEY_SERVER>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
เปลี่ยน <PRIVATE_KEY_CLIENT>, <PUBLIC_KEY_SERVER>, และ <SERVER_IP> ให้ถูกต้อง
จากนั้น start Wireguard interface:
sudo wg-quick up wg0
ถ้าทุกอย่างถูกต้อง Client ก็จะเชื่อมต่อ VPN ได้แล้ว ลองเช็ค IP Address ดูว่าเปลี่ยนเป็น IP ของ Server หรือยัง
Wireguard ไม่ได้เป็น VPN ตัวเดียวในตลาด ยังมี OpenVPN, IPSec, และอื่นๆ อีกมากมาย แต่ละตัวก็มีข้อดีข้อเสียต่างกัน
| VPN | ข้อดี | ข้อเสีย |
|---|---|---|
| Wireguard | เร็ว, config ง่าย, secure | อาจจะยังไม่ support ทุก platform |
| OpenVPN | Support ทุก platform, established | Config ซับซ้อน, อาจจะช้ากว่า |
| IPSec | Secure, ใช้กันในองค์กรใหญ่ | Config ยาก, อาจจะมีปัญหาเรื่อง NAT |
สมัยผมทำร้านเน็ต OpenVPN เป็นตัวเลือกหลัก แต่ตอนนี้ Wireguard น่าสนใจกว่าเยอะ ด้วยความที่มันเร็วกว่าและ config ง่ายกว่า ทำให้เหมาะกับคนทั่วไปมากกว่า
ถ้าอยากอ่านบทความอื่นๆ เกี่ยวกับ Network และ IT แวะมาที่ SiamCafe Blog ได้นะครับ
และอย่าลืมติดตาม SiamCafe Blog เพื่ออัพเดทข่าวสาร IT ใหม่ๆ อยู่เสมอ
เอาล่ะน้องๆ หลังจากที่เราเซ็ต Wireguard VPN กันไปแล้วเนี่ย มันก็ไม่ได้จบแค่นั้นนะ สมัยผมทำร้านเน็ตอ่ะ เรื่อง Network Security นี่สำคัญสุดๆ เพราะถ้าหลุดทีเดียวคือจบเห่เลย ดังนั้นมาดู Best Practices ที่ผมสรุปจากประสบการณ์จริงกันดีกว่า
อันนี้คือเบสิคเลย แต่สำคัญมาก! อย่าให้ใครมีสิทธิ์เยอะเกินความจำเป็น สมมติมี User ที่ต้องเข้าถึงแค่ Web Server ก็ให้สิทธิ์แค่ Web Server พอ ไม่ต้องให้เข้าถึง Database Server หรือ File Server เข้าใจ๋?
# ตัวอย่าง iptables rule
iptables -A FORWARD -i wg0 -s 10.6.0.2 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i wg0 -s 10.6.0.2 -d 192.168.1.10 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i wg0 -s 10.6.0.2 -j DROP
ในตัวอย่างนี้คือ User ที่มี IP 10.6.0.2 จะเข้าถึง Server 192.168.1.10 ได้แค่ Port 80 และ 443 เท่านั้น นอกนั้น Block หมด
Logs นี่แหละคือเพื่อนแท้ของเรา! Wireguard เองก็มี Logs ให้เราดูนะ ลองเข้าไปส่องดูบ้างว่ามีอะไรผิดปกติรึเปล่า มีใครพยายาม Login ผิดพลาดเยอะๆ หรือเปล่า ถ้าเจออะไรแปลกๆ จะได้รีบแก้ไขทัน
# ตัวอย่าง ดู Logs ใน Linux (อาจจะต้องปรับตาม Distro)
tail -f /var/log/syslog | grep Wireguard
คำสั่งนี้จะแสดง Logs ที่เกี่ยวข้องกับ Wireguard แบบ Real-time เลย สังเกตดีๆ นะน้อง
อันนี้ไม่ต้องพูดเยอะ เจ็บคอ! Software ทุกอย่างต้องอัพเดทเสมอ ไม่ว่าจะเป็น Wireguard เอง หรือ OS ที่ใช้ เพราะการอัพเดทมันคือการ Patch ช่องโหว่ต่างๆ ที่ Hacker มันจ้องจะเล่นงานเราอยู่
# ตัวอย่าง อัพเดท Ubuntu/Debian
sudo apt update
sudo apt upgrade
Command ง่ายๆ แต่ชีวิตปลอดภัยขึ้นเยอะ!
Wireguard ใช้ Public/Private Key ในการ Authentication ดังนั้นการเก็บรักษา Private Key จึงสำคัญมากๆ ห้ามเอาไปวางทิ้งไว้ที่ไหนมั่วซั่วนะน้อง เก็บไว้ในที่ปลอดภัย และ Backup ไว้ด้วย เผื่อเครื่องพังจะได้กู้คืนได้
Wireguard เนี่ย มันถูกออกแบบมาให้ Minimalist คือ Code มันน้อยกว่า VPN ตัวอื่นเยอะ ทำให้ Overhead น้อยตามไปด้วย ส่งผลให้มันเร็วกว่าไงล่ะ
ปลอดภัยสิ! Wireguard ใช้ Cryptography ที่ทันสมัย และ Code มันน้อย ทำให้ตรวจสอบได้ง่ายกว่า VPN ที่มี Code เยอะๆ แถมยัง Open Source อีกด้วย ใครๆ ก็เข้าไปดู Code ได้
ได้แน่นอน! Wireguard มี App ให้ใช้ทั้ง iOS และ Android เลย สะดวกมากๆ
iCafeForexWireguard เนี่ย เป็น VPN ที่น่าสนใจมากๆ ทั้งเรื่องความเร็ว ความปลอดภัย และความง่ายในการใช้งาน หวังว่า Guide นี้จะเป็นประโยชน์กับน้องๆ นะครับ ลองเอาไปปรับใช้กันดู และอย่าลืมเรื่อง Security เป็นสำคัญนะ
ถ้าอยากอ่านบทความเกี่ยวกับ IT และ Network ดีๆ แบบนี้อีก ก็อย่าลืมแวะมาที่ SiamCafe Blog นะครับ