ทำอย่างไรให้ Wireguard มาใช้กับ Application บน Server ฉบับเข้าใจง่าย

หากเพื่อน ๆ น้อง ๆ คนไหนกำลังแวะมาอ่านบทความนี้ อยากบอกว่าบทความนี้จะมาอธิบายและขั้นตอนการติดต่อรวมถึงการใช้งานพื้นฐาน โดยจะอธิบายองค์ประกอบคร่าว ๆ
Wireguard คือ ?
WireGuard เป็น VPN ที่เรียบง่ายแต่รวดเร็วและทันสมัยซึ่งใช้การเข้ารหัสที่ล้ำสมัย เช่น Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF รวมถึงพัฒนา Source Code เพียงแค่ 3,800 บรรทัดเท่านั้น เลยมีขนาดเล็ก รองรับการใช้งานบน Application Windows, MacOS, BSD, IOS, Android เหมาะสำหรับนำมาใช้ในหลากหลายในการแก้ไขปัญหา
Wireguard มีอะไรประโยชน์อะไร ?
- ปกป้องความเป็นส่วนตัวของเรา
- เพิ่มความปลอดภัยของเรา
- สร้างช่องการสื่อสารส่วนตัวร่วมกัน
- รองรับการโรมมิ่งได้ดี
- เร็วในการเชื่อมต่อและการจับคู่
- รองรับการใช้งานหลากหลายอุปกรณ์ได้
Wireguard มีข้อจำกัดอยู่
- โปรโตคอลและโค้ดยังอยู่ในช่วงทดลองในหลายๆเรื่อง
- ยังขาดการสนับสนุนสำหรับแพลตฟอร์มอื่น ๆ นอกเหนือจาก Linux
- ยังไม่มีเวอร์ชันแบบสเถียรที่สามารถทำการติดตามแบบ Common Vulnerabilities and Exposures (CVE) tracking ความเสี่ยงเกี่ยวกับความปลอดภัย
- ช่องทางการให้บริการยังน้อย หากเทียบกับคู่แข่งในตลาด
ด้านประสิทธิภาพ VPN
ขั้นตอนการติดตั้ง WireGuard
WireGuard Server Step 1
โดยเราจะทำการยกตัวอย่าง OS Linux Ubuntu
sudo apt install wireguard
sudo apt install wireguard-tools
sudo cd /etc/wireguard
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
sudo vim /etc/wireguard/wg0.conf
เราจะต้องทำการสร้าง VPN Interface ขึ้นมา โดย
[Interface]
##ทำการสร้าง VPN Private IP ของ Server
Address = 10.XX.XX.1/24
ListenPort = 54230
PrivateKey = ##ค้นหาจาก cat privatekey แล้วนำมาวาง
PostUp = iptables -I INPUT -p udp --dport 54230 -j ACCEPT
PostUp = iptables -I FORWARD -i eth0 -o wg0 -j ACCEPT
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D INPUT -p udp --dport 54230 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
เบื้องต้นในส่วนของ file “wg0.conf” เบื้องต้นให้ทำการทดสอบว่าใช้งานได้จริงหรือไม่ โดยทำการลอง run wg0 เพื่อทดสอบใช้งาน
wg-quick up wg0
wg show ##ทำการดูว่า wg0 มาจริงๆแล้วหรือไม่ เมื่อมาแล้วลองทำการทดสอบว่าภายในคุยกันได้หรือไม่
ping 10.XX.XX.1 ##ทดสอบว่าปิงติดไหม
PING 10.XX.XX.1 (10.XX.XX.1) 56(84) bytes of data.
64 bytes from 10.XX.XX.1: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 10.XX.XX.1: icmp_seq=2 ttl=64 time=0.073 ms
#ถือเป็นอันเสร็จสิ้นและใช้งานได้สำหรับฝั่ง Server
WireGuard Client Step 1
โดยเราจะทำการยกตัวอย่าง MacOS ในการใช้งาน ทำการเปิด Wireguard Tunnels
ให้ทำการคัดลอก Public Key and Private Key มาสร้างเป็น File เพื่อจะได้ไม่ลืม โดยตั้งค่าพื้นฐานตามนี้
PrivateKey
cIjzDNL4htYeTzqdtAC3wp04/leqKRgqwJ+AoJIEkXU=
PublicKey
HpTeWSoREL2VpM7wHOfs3BtWljM2k1nhXAt8mC2ww0E=
[Interface]
PrivateKey = cIjzDNL4htYeTzqdtAC3wp04/leqKRgqwJ+AoJIEkXU=
Address = 10.XX.XX.2/32
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = ##นำจาก Key Public Server ที่ทำการ gen นำมาใส่ไว้
AllowedIPs = 0.0.0.0/0
Endpoint = XXX.XXX.XXX.XXX:54230 #IP Server
WireGuard Server Step 2
ให้เราทำการกลับมาจัดการทฝั่ง Server อีกครั้ง โดยทำตามขั้นตอน
sudo cd /etc/wireguard
sudo vim wg0.conf
[Interface]
##ทำการสร้าง VPN Private IP ของ Server
Address = 10.XX.XX.1/24
ListenPort = 54230
PrivateKey = ##ค้นหาจาก cat privatekey แล้วนำมาวาง
PostUp = iptables -I INPUT -p udp --dport 54230 -j ACCEPT
PostUp = iptables -I FORWARD -i eth0 -o wg0 -j ACCEPT
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D INPUT -p udp --dport 54230 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = #ทำการอ้างอิง Public Key มาจาก Client
AllowedIPs = 10.XX.XX.2/32
ทำการเปิด อัพเดท Wireguard ในฝั่ง Server ด้วย
wg-quick up wg0 ##จัดการ Up Interface Wireguard
wg-quick down wg0 ##จัดการ Down Interface Wireguard
wg show ##เพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่
กรณีที่ต้องการจัดการ wireguard autostart
systemctl enable [email protected]
systemctl daemon-reload
WireGuard Client Step 2
ให้เราทำการกลับมาจัดการทฝั่ง Client อีกครั้ง โดยทำตามขั้นตอน ✌️
เบื้องต้นจะทำการตรวจสอบว่า Client กับ Server มีการสื่อสารการแล้วหรือไม่ให้ทำการเปิด Terminal
ping 10.XX.XX.1
PING 10.XX.XX.1 (10.XX.XX.1) 56(84) bytes of data.
64 bytes from 10.XX.XX.1: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 10.XX.XX.1: icmp_seq=2 ttl=64 time=0.073 ms
#ถือเป็นอันเสร็จสิ้นและใช้งานได้สำหรับฝั่ง Client
เท่านี้ก็เป็นอันเสร็จสิ้น 👍 🥳🥳🥳🥳🥳🥳🥳
ที่นี้ลองทำการสร้าง Application ของเรา ขึ้นมาแล้วใช้งาน โดยให้ Client ทำการเชื่อมต่อไปหา Server ที่นี่เราก็สามารถใช้งานได้แล้ว
เพิ่มเติมกรณีที่เราอยากให้ เรารองรับการเชื่อมต่อ client to server จะใช้ networks อื่น ๆ ไม่ให้ช่องการการเชื่อมต่อล่าช้าเราสามารถทำการเพิ่ม allowedIP โดยการเพิ่มช่องทางในการรับได้มากขึ้น เช่น 10.XX.XX.0/24 , X.X.X.X
หมายเหตุ ในเคสนี้จำลองแค่ตัวอย่างเดียวคือ Client 1 คนเมื่อต้องการใช้งานเท่านั้น หากข้อมูลใดไม่ครบถ้วนหรือขาดตอนไป ขออภัยมา ณ ที่นี่ด้วยนะครับ
หากท่านชอบและรู้สึกว่ามีประโยชน์ รบกวนแชร์และแบ่งปันให้ผู้ที่สนใจและควรจะได้รับการเข้าถึงบทความนี้ แล้วพบกันใหม่ครับ