ติดตั้ง Open VPN Server บน Google Cloud Platform ใช้งานแบบฟรีๆ
ส่วนประกอบที่จำเป็นต้องรู้จัก
Google Cloud Platform (GCP) เป็นบริการ Public Cloud ของ Google ซึ่งคนทำงานฝั่งคอมพิวเตอร์ที่ต้องทำ Computer Server น่าจะรู้จักกันอยู่แล้ว ความเด็ดของมันคือ เมื่อไม่นานมานี้มีปรับการให้บริการจาก $300 ฟรี 1 ปี ไปเป็น Always Free ในบางบริการ ซึ่งหนึ่งในนั้นคือ Google Compute Engine หรือ Virtual Private Server (VPS) บน GCP นั่นเอง ซึ่ง Google บอกว่า เครื่องกระจอกสุด นายเอาไปใช้ได้เลยฟรีๆ ตลอดไป ซึ่งเราจะทิ้งโอกาสไปทำไม ก็เอามาใช้งานซะเลยOpen VPN (OVPN) เป็นหนึ่งในโปรแกรมสำหรับใช้งาน Virtual Private Network (VPN) ถ้าให้อธิบายง่ายๆ ก็คือ สมมุติว่าเราเล่น Free WiFi ที่ร้านกาแฟ แต่ WiFi นั้นดันไม่เข้ารหัส ซ้ำร้ายต่ออยู่กับคนแปลกหน้ามากมาย มันมีโอกาสที่สัญญาณของเราที่ส่งออกไปจะถูกดักจับได้กลางอากาศ หรือแม้กระทั่งถูก man-in-the-middle attack (MITM) จากผู้ใช้ในวงเดียวกันเอง หาก Network นั้นถูกเซทมาไม่ดี (ซึ่งหลายๆ แห่งเท่าที่เห็นจะเป็นแบบนั้น) ถ้าเราเข้าเว็บด้วย HTTPS ก็พอจะอุ่นใจได้เพราะเป็นการเข้ารหัสเพื่อใช้งานเว็บไซต์ที่เป็นที่ยอมรับ (แต่ไม่ได้แปลว่าปลอดภัย 100%) แต่ถ้าเป็น HTTP ธรรมดาล่ะก็ ผู้โจมตีจะเห็นหมดว่า เราเข้าเว็บไหน ส่งและรับข้อมูลอะไร ซึ่งนั่นรวมไปถึง User/Pass ที่พิมพ์ลงไปด้วย และจะเลวร้ายสุดๆ ถ้าคุณใช้ User/Pass เดียวกันกับทุกเว็บไซต์ เพราะนั่นหมายความว่า การหลุดครั้งเดียวอาจทำให้คุณโดนยาวไปถึง Gmail Facebook และ อื่นๆ ที่คุณใช้ซ้ำ ดังนั้นการต่อ VPN เวลาออกไปใช้อินเทอร์เน็ตสาธารณะจึงเป็นเรื่องที่สำคัญมากและไม่ควรละเลย โลกนี้ก็มี VPN Providers มากมายหลายเจ้า ราคาก็ไม่ได้แพงมาก แต่จะเยี่ยมมากถ้าเรามีใช้ของเราเองฟรีๆ ใช่ไหมล่ะ
PiVPN เป็นชุดติดตั้งโปรแกรม ช่วยให้เราติดตั้ง OVPN Server ได้โดยง่าย ซึ่งแรกเริ่มเดิมทีนั้นมันออกแบบมาให้ถูกใช้บน Raspberry Pi ซึ่งผมก็มีใช้งานอยู่ประจำ แต่ผมลองเอามาลงบน GCP ปรากฎว่าใช้ได้ ก็เลยเป็นเหตุที่มาเขียน Entry นี้นั่นเอง
ขั้นตอนการติดตั้ง
ก่อนอื่นคงต้องบอกก่อนว่าจะไม่ลงลึกไปสอนวิธีการใช้ GCP ตั้งแต่เปิด Account เรื่องพวกนั้นขอให้ไปศึกษากันเองนะครับ ผมจะเริ่มจากการตั้งเครื่องและตั้งค่า Network เป็นต้นไปตั้งเครื่อง Google Compute Engine
เริ่มต้นจากการสร้าง VM ใหม่ โดยไปที่ Compute Engine > VM Instances > Create
จากนั้นตั้งชื่อตามที่ต้องการ
เลือก Zone ให้อยู่ใน US
เลือก Machine Type เป็นเครื่อง micro แบบเล็กสุด f1-micro (จะได้ Memory 0.6GB)
ทางด้านขวาจะเป็นว่าเราสามารถใช้เครื่อง f1-micro ได้ฟรี 720 ชั่วโมง
จากนั้นเลือก Boot disk เป็น Debian GNU/Linux 9 (Stretch) ส่วน ใช้ HDD 10GB
เลื่อนลงมาหน่อยจะเห็น Firewall ไม่ต้องทำอะไร เพราะไม่ได้ทำ Web Server
ถัดจาก Firewall เลือกไปที่ Networking จากนั้นช่อง Network tags ใส่เป็น ovpn-server เดี๋ยวเราจะไปสร้าง Firewall rule มาแมพกับเครื่อง
ส่วน SSH Keys ก็ไม่ต้องเซทครับ เดี๋ยวใช้ Web terminal ได้
ตั้งทุกอย่างเรียบร้อยแล้วกด Create มันก็จะหมุนๆ รอสักพักก็จะได้เครื่องออกมาเรียบร้อย
ตั้งค่า Static IP
เนื่องจากเราเปิด Server ที่จะต่อเข้าไปทางอินเทอร์เน็ต ก็เลยต้องมีการล็อค Static IP เอาไว้ก่อน วิธีการก็คือ เข้าไปที่ VPC network > External IP addresses
จากนั้นก็จะเห็นว่ามี IP แบบ Ephemeral อยู่หนึ่งอันของเครื่องที่เราสร้างขึ้นมา กดเปลี่ยนเป็น Static
จากนั้นมันจะให้ตั้งชื่อ ก็ตั้งไป เสร็จเรียบร้อยกด Reserve เราก็จะได้ Public Static IP ที่สามารถเข้าถึงได้จากทุกที่
ตั้งค่า Firewall
เนื่องจาก Open VPN เป็น Service ที่ไม่ได้มีตั้งค่าไว้แต่ต้น เราจึงต้องเพิ่ม Firewall rule เอง โดยเข้าไปตั้งค่าที่ VPS network > Firewall rules > Credit Firewall Rule
จากนั้นตั้งชื่อ แนะนำให้ตั้งเป็น default-allow-ovpn หรือแปลว่า ให้ allow รับ ovpn ที่เป็น port default
สร้างแล้วที่ Target tags ใส่ลงไปว่า ovpn-server ตรงนี้จะตรงกับที่เราใส่ network tags ตอนสร้าง VM
ตั้ง Source IP rages เป็น 0.0.0.0/0 หมายความว่าเปิดรับการเชื่อมต่อจาก IP นอกทุกอัน
สุดท้ายใส่ udp:1194 ลงไปในช่อง Protocols and ports
แล้วกด Create
ติดตั้ง PiVPN
ต่อมาจะเป็นการติดตั้ง Ovpn VPN Server โดยใช้ PiVPN โดนเริ่มต้นจากเปิด SSH Terminal ผ่านทาง Web browser โดยกดที่เครื่อง VM ที่สร้างขึ้นมา แล้วกด SSH
อย่างนั้นก็จะเห็นหน้าดำๆ ประมาณอย่างในภาพข้างบน
ต่อมาลง PiVPN โดยการพิมพ์คำสั่ง
หน้าต่าง PiVPN ก็จะโหลดขึ้นมา เห็นเป็นประมาณในภาพ
มันก็จะบอกว่า นี่จะเปลี่ยน Raspberry Pi ให้กลายเป็น OpenVPN Server ก็ OK ไปแม้เราจะไม่ได้ใช้ Raspberry Pi ก็ตาม
มันก็จะให้เลือก User ที่จะถือ configurations
ซึ่งจะมีอยู่คนเดียว ก็เลือกไป
แล้วมันก็จะแจ้งเตือนถึงการให้ Upgrade อัตโนมัติ เผื่อเวลามี Patch ช่องโหว่มันจะได้อัพเดทเอง
ซึ่งเครื่องที่สร้างขึ้นนี้ก็มีแค่ Open VPN ดังนั้นก็ให้อัพเดทไปได้เลย
ต่อมาเลือก Protocal ที่จะใช้กับ OpenVPN ข้อนี้ให้เลือก UDP
(ยกเว้นแต่ว่า Network ที่ใช้ Block ก็ค่อยเลือก TCP แต่ถ้าเลือก TCP แล้วอย่าลืมไปแก้ Firewall ด้วย)
ต่อมาเป็นการตั้งค่า Port ก็เอาตามที่เซทไว้ใน Firewall เลย ก็คือ 1194
Confirm การตั้งค่า
ต่อมาเป็นการตั้งค่าระดับการเข้ารหัสโดยใช้ Diffie-Hellman Key Exchange
ซึ่งโดยปรกติแล้วจะแนะนำให้ใช้ 2048-bit แต่มันจะใช้เวลา Generate นานพอสมควร ถ้าอยากจะทำไวๆ ทดลองใช้ก่อนก็ 1024-bit ก่อน แล้วค่อยมาลบลงใหม่ทีหลังก็ได้ ส่วน Server ส่วนตัวของผมใช้ 4096-bit จัดสุด ไปเลย แต่มันจะ Generate นานมาก ผมทำบน Raspbery Pi ปล่อยมัน Generate ข้ามคืนเลย ซึ่งมันไม่เหมาะสม
ดังนั้นจึงไม่แนะนำถ้ายังไม่มั่นใจ แนะนำให้เลือก 1024-bit ไปก่อน แล้วเดี๋ยวค่อยมาลงอีกรอบดีกว่า จะได้ไม่เสียเวลามากเกินไป
จากนั้นมันจะบอกว่า กำลังจะ Generate Key แล้วนะ ให้เตรียมทำใจ เพราะมันจะใช้เวลานานหลายนาที (ถ้าเลือก key ยาว จากขั้นตอนข้างบน)
อันนี้บอกว่า จะรอง Elliptic Curves ด้วยหรือไม่ ก็รองรับไป อันนี้จะใช้ได้เฉพาะกับ Client เวอร์ชั่นใหม่ๆ
เสร็จแล้วก็จะให้เลือกการติดต่อมาหา Server ระหว่าง Public IP หรือ Domain name ซึ่งในเมื่อเรามี Static Public IP แล้ว ก็สามารถเลือกใช้ Public IP ได้เลย
ต่อมาเป็นการเลือก DNS Service ที่จะใช้ เลือก Google ไปเป็น Default
เสร็จเรียบร้อย หน้านี้วิธีการสร้าง User ใหม่ โดยให้เป็น pivpn add ลงไปใน terminal เพื่อสร้าง user ใหม่
จากนั้นมันก็จะแนะนำให้ Reboot เครื่อง ก็ Reboot ไปได้เลย จากนั้นเปิด Terminal ไป
การสร้าง User OVPN ใหม่
เปิด Web Terminal เข้ามาทางเดิมจากนั้นพิมพ์คำสั่ง
จากนั้นก็จะได้ไฟล์ configuration ของ OpenVPN ออกมา
ไฟล์ Configuration ที่สร้างขึ้นมาจะอยู่ที่ ~/ovpns/*.ovpn
แต่เดี๋ยวจะได้ใช้ Absolute path ให้ไปที่ ~/ovpns/ จากนั้นพิมพ์ pwd
ต่อมาให้ ls ดูชื่อไฟล์ config แล้วเอาไปต่อกับ path ข้างต้น
อย่างในภาพ เราจะได้ Path คือ /home/spicydog/ovpns/gcppivpn.ovpn
ต่อมาเราจะทำการโหลด configuration file ลงมาในเครื่อง ซึ่งถ้าปรกติก็จะต้องใช้ SCP โหลดลงมา แต่ GCP Web Terminal สามารถกดที่เฟืองด้านมุมขวา แล้วกด Download file ได้เลย
หลังจากกด Download ก็จะมี Popup ให้ใส่ Path ไฟล์ที่ต้องการ ก็ใส่ลงไป แล้วกด Download
รอแปบเดียวก็จะได้ไฟล์ที่ต้องการโหลดลงมาที่เครื่อง (ชอบฟีเจอร์นี้มากๆ)
ทดลองใช้งานกับ Tunnelblick
เนื่องจากผมใช้ MacOS ตัว Client ที่ใช้ยมใช้กันชื่อ Tunnelblick หน้าตาจะห่วยๆ หน่อยแต่ใช้งานได้ ส่วนคนใช้ Android ผมแนะนำให้ใช้ OpenVPN for Android สำหรับ Platform อื่นๆ ให้ไปดูที่ Official Website ครับสำหรับส่วนนี้ผมจะแสดงวิธีการใช้งานกับ Tunnelblick ให้ดู
ถ้ามี Tunnelblick ในเครื่องแล้ว พอโหลด Configuration file ลงมา ก็จะเห็นมันเป็น icon ประมาณในภาพ จากนั้นเปิดไฟล์ได้เลย
มันก็จะถามว่า จะให้ลงใช้เฉพาะตัวเองหรือกับทุก Users เลือกผมเลือกใช้เฉพาะตัวเอง (คอมมีใช้อยู่คนเดียวอยู่แล้ว) มันจะให้ใส่รหัสผ่านของ Account อะไรก็ใส่ไป
จากนั้นก็ทางด้านซ้ายก็จะได้ configuration อันใหม่ขึ้นมา โดยจะตรงกับชื่อไฟล์ที่เปิด สามารถเปลี่ยนชื่อได้ตามต้องการ
พอพร้อมใช้งานก็กดเชื่อมต่อได้เลย จากนั้นมันก็จะถามรหัสผ่านที่เราเซทเอาไว้ตอนสร้าง configuration file ใส่ลงไป ถ้าจะใช้บ่อยก็กดเซฟใน Keychain เลย จะได้ไม่ต้องมากรอกทุกรอบ
เชื่อมต่อสำเร็จแล้ว
ทดลองประสิทธิภาพกับเว็บ speedtest.net ก็วิ่งได้เต็มอินเทอร์เน็ตที่มี แต่สังเกตว่า ping ค่อนข้างสูง เพราะว่า Server ตั้งอยู่ใน US อันนี้จึงไม่เหมาะกับการเล่นเกม
อ่อ สังเกตดูที่ซ้ายล่างจะเป็นว่าเป็น Google Cloud Platform นี่หมายความว่าเราต่อผ่าน VPN ถูกต้องแน่นอน
สรุป
ก็จบไปกันแล้วสำหรับการติดตั้งและใช้งาน OpenVPN แบบฟรีๆ บน GCP แต่ก่อนจะจากกันอยากให้พึงระวังกันเรื่องการโหลดสิ่งผิดกฎหมาย เนื่องจากเน็ตที่ใช้เป็นเน็ต US และ Account ที่เชื่อมต่อนั้นก็ลิงค์หาชื่อเราอย่างชัดเจน ที่ US จะมีการตรวจสอบการละเมิดลิขสิทธิ์บนอินเทอร์เน็ตอย่างต่อเนื่อง ดังนั้นถ้าไม่อยากโดนแบน อย่าโหลดอะไรผิดกฎหมายข้างบนนี้ (นอกจากมั่นใจว่าเจ๋งจริงหลบได้) และระวังค่า Traffic ได้ ถึงแม้เครื่องและมี Network ให้ใช้ฟรี 1GB แต่สุดท้ายถ้าใช้เกินก็จะมีค่า Traffic ในการส่งข้อมูลถ้าใช้เกินกำหนดนะครับ ถ้าใช้เปิดเว็บทั่วไปน่าจะสบายๆ ครับ แต่ก็ต้องเตือนเอาไว้ก่อนว่ามีโอกาสโดนค่าใช้จ่ายตรงนี้ ลองไปเช็คดูจากเว็บไซต์ GCP Pricing ครับ มันจะตกอยู่ประมาณ GB ละ 3 บาท อะไรแถวๆ นี้Happy Web Surfing
ขอบคุณที่มา: https://www.spicydog.org/blog/open-vpn-server-on-google-cloud-platform-always-free/