สร้าง Tunnel เพื่อเข้าถึง Raspberry Pi Zero 2W จากที่ไหนก็ได้ด้วย ZeroTier
--
เพื่อนๆอาจจะมีประสบการณ์ใช้งานเครื่องมือสร้าง Tunnel สำหรับเข้าถึงอุปกรณ์จากภายนอกกันมาบ้าง ไม่ว่าจะเป็นการใช้ VPN หรือ ngrok ซึ่งต่างก็ต้องมีการตั้งค่าที่ซับซ้อนและมีข้อจำกัดที่ทำให้การใช้งานไม่สะดวกสบายเหมือนการเข้าผ่านวงเครือข่ายภายในบ้าน LAN ดังนั้นในวันนี้ ผมขอนำเสนออีกหนึ่งวิธีที่จะสามารถสร้าง Tunnel เพื่อเข้าถึง Raspberry Pi ของเราจากที่ไหนก็ได้บนโลก โดยที่ Raspberry Pi ของเราไม่จำเป็นที่จะต้องมีแม้กระทั่ง Public IP หรืออินเตอร์เน็ตบ้าน ไม่ต้อง Forward Port สามารถใช้อินเตอร์เน็ตจากอะไรก็ได้ แม้กระทั่งปล่อย Hotspot จากสมาร์ทโฟนของเราให้ Raspberry Pi ใช้ โดยเครื่องมือนี้มีชื่อว่า ZeroTier
ZeroTier คืออะไร
ZeroTier เป็นผู้ให้บริการ VPN ผ่าน Cloud ที่ช่วยให้คุณสามารถเข้าถึงอุปกรณ์ได้โดยไม่ต้องพึ่งพาการ Forward Port หรือต้องมี Public IP โดย ZeroTier จะเข้าไปเป็นคนกลางระหว่างอุปกรณ์ โดยทำหน้าที่ routing ข้อมูลระหว่างอุปกรณ์ให้ติดต่อกันได้ผ่านระบบ Cloud ของทาง ZeroTier เอง
มาลองใช้ ZeroTier กันเถอะ!
ไปที่เว็บไซต์ของทาง ZeroTier เพื่อสมัคร Account (https://www.zerotier.com/) โดยกดที่ปุ่ม Build Your Network ได้เลย!
โดยเมื่อกดเข้ามาแล้วจะพบกับหน้าการกรอกข้อมูลเพื่อสมัครใช้งาน ZeroTier ซึ่งตรงนี้ใครอยากเปิด User โดยตรงกับทาง ZeroTier ก็สามารถกรอกสมัครทางด้านซ้ายมือได้เลย หรือใครที่ขี้เกียจก็สามารถใช้บัญชี Social Network ที่เรามีอย่าง Google, Github หรือ Microsoft ในการสมัครก็ได้ (ทางด้านซ้าย)
โดยเมื่อสมัครเสร็จสิ้นแล้วจะพบกับหน้าสร้าง Network ของเรา โดยสามารถกดที่ Create a Network ได้เลย
โดยเมื่อกดแล้วก็จะปรากฏ Network ที่เราสร้างขึ้นมาพร้อมกับชื่อแบบสุ่มที่ระบบสร้างขึ้นมาให้ โดยให้เรากดที่ Network ที่ปรากฏขึ้นมาเพื่อเข้าไปตั้งค่า
โดยเมื่อเข้ามาแล้วจะพบกับหัวข้อ Basic โดยจะระบุ Network ID ของเรา ซึ่งถือเป็นกุญแจสำคัญในการใช้งาน ZeroTier ของเรา
โดยให้ทำการตั้งชื่อเครือข่ายของเราในช่อง Name, คำอธิบายเพิ่มเติมในช่อง Description และในส่วนของ Access Control นั้นมีรายละเอียด ดังนี้
Private คือ เครือข่ายที่จำเป็นที่จะต้องมีการยืนยันตัวตนจากผู้ดูแลเครือข่าย หรือผู้ที่สร้างเครือข่ายขึ้นมาก่อน เพื่อให้ระบบทำการแจก IP Address ให้กับอุปกรณ์ที่มาเข้าร่วมเครือข่าย
Public คือ รูปแบบเครือข่ายที่ไม่จำเป็นที่จะต้องมีการยืนยันตัวตนเพื่อเข้าร่วมในเครือข่ายนี้ โดยไม่สามารถลบอุปกรณ์ที่เข้าร่วมมาในเครือข่ายออกไปได้ โดยในกรณีที่อุปกรณ์ที่เข้าร่วมไม่ออนไลน์ใน 30 วัน อุปกรณ์จะถูกลบออกไปโดยอัตโนมัติ
ติดตั้ง ZeroTier ลงบน Raspberry Pi กันเถอะ
อันดับแรก เราต้องเพิ่ม repository ให้กับ Raspberry Pi ของเรา เพื่อให้ Raspberry Pi ของเรารู้ว่าจะต้องไปดาว์นโหลด ZeroTier package จากที่ไหน โดยใช้คำสั่ง ดังนี้
curl https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/zerotierone-archive-keyring.gpg >/dev/null
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/zerotierone-archive-keyring.gpg] http://download.zerotier.com/debian/$RELEASE $RELEASE main" | sudo tee /etc/apt/sources.list.d/zerotier.list
โดยเมื่อทำการเพิ่ม Repository เรียบร้อยแล้ว ทำการ Update ให้ Repository ให้กับ Raspberry Pi อีกครั้งโดยใช้คำสั่ง
sudo apt update
โดยหลังจากที่ทำการเพิ่มและอัพเดต Repository ให้กับ Raspberry Pi แล้ว เราก็มาเริ่มติดตั้ง ZeroTier ได้เลย! โดยใช้คำสั่ง
sudo apt install -y zerotier-one
โดยหลังจากติดตั้ง ZeroTier เรียบร้อยแล้ว เราจะมาทำการเพิ่ม Raspberry Pi ของเราเข้าไปที่เครือข่าย ZeroTier ที่เราสร้างไว้ โดยใช้คำสั่ง
sudo zerotier-cli join <Network_ID>
โดยที่ Network ID นั้นจะได้มาจาก ZeroTier Central ในหัวข้อ Basic ของ Network ที่เราสร้างขึ้นมา
โดยเมื่อกด Enter หากสามารถเชื่อมต่อได้สำเร็จก็จะปรากฏข้อความ
200 join OK
โดยเมื่อเราลองกลับไปเช็คที่ ZeroTier Central ของ Network ที่เราสร้างขึ้นมาในหัวข้อ Members ก็จะปรากฏอุปกรณ์ใหม่ขึ้นมา โดยนั่นคือ Raspberry Pi ของเรานั่นเอง โดยในที่นี้ เราสร้าง Network ขึ้นมาในประเภท Private เราจึงต้องทำการ Authenticathed ให้กับ Raspberry Pi ที่มาเข้าร่วม Network ของเราโดยการกดที่ช่องเครื่องหมายถูกในคอลลัมน์ Auth?
โดยเมื่อเรา Authenticated ให้กับ Raspberry Pi ของเราแล้ว ทาง ZeroTier ก็จะทำการแจก IP Address ในวงเครือข่าย ZeroTier ให้กับ Raspberry Pi ของเรา
มาลองใช้งาน ZeroTier กันเถอะ!
โดยในครั้งนี้ เราจะลองมาใช้งาน ZeroTier ในสถานการณ์ที่ Raspberry Pi Zero 2W ของเราที่รัน Blynk Local Server อยู่ที่บ้าน แล้วเราต้องการเข้าใช้งานผ่านทาง ZeroTier ที่รันอยู่บน Raspberry Pi Zero 2W ที่รัน Blynk Local Server อยู่เช่นกัน
ส่วนของ Smartphone ที่จะเชื่อมต่อเข้ามาใช้งาน
1.) ดาว์นโหลด ZeroTier จาก App Store หรือ Play Store
2.) โดยเมื่อกดเข้าไปใน Application แล้วจะพบกับ User Agreement ให้เลื่อนลงมาด้านล่างสุด แล้วกด Accept
โดยหลังจากกด Accept แล้ว จะพบกับหน้าว่างเปล่า เพราะว่าเรายังไม่ได้เพิ่ม Network ให้กับแอพพลิเคชัน ZeroTier โดยให้ทำการกดเครื่องหมายบวกทางด้านขวาบนเพื่อเพิ่มเครือข่าย
จะปรากฏช่องให้กรอก Network ID โดยเราสามารถเอามาจาก ZeroTier Central ตามที่อธิบายไว้ก่อหน้านี้ได้เลย แล้วกด Add Network
โดยหลังจากกด Add Network จะปรากฏกล่องข้อความตั้งค่าว่า ZeroTier ต้องการตั้งค่า VPN ในโทรศัพท์ของเรา ให้ทำการกด Allow ได้เลย
หากเป็น iOS จะให้มีการกรอกรหัสผ่านโทรศัพท์ก่อน 1 ครั้งเพื่อเป็นการอนุญาติให้ทาง ZeroTier ตั้งค่า VPN บนโทรศัพท์ของเราได้
โดยเมื่อการตั้งค่า VPN เสร็จสิ้นจะแสดงผลกลับมาที่แอพพลิเคชัน ZeroTier โดยอัตโนมัติ ซึ่งจะปรากฏ NetworkID ที่เรากรอกไว้ขึ้นมาแล้ว
โดยหากกลับไปดูที่ ZeroTier Central ก็จะพบว่า โทรศัพท์ของเราปรากฏขึ้นมาในหัวข้อ Members ของ ZeroTier Network ที่เราสร้างขึ้นมาแล้ว ให้ทำการกด Authenticeted ได้เลย!
เพียงเท่านี้ Raspberry Pi Zero 2W และโทรศัพท์ของเราก็เข้ามาอยู่ใน ZeroTier Network เดียวกันแล้ว โดยสามารถคุยกันได้โดยใช้ IP Address ที่ทาง ZeroTier เป็นผู้แจกให้
โดยเราลองมาเข้าถึง Blynk Server ของเราผ่านทาง IP Address ที่ ZeroTier แจกกันดู
พบว่าเข้าได้ปกติ ไม่มีปัญหาใดๆ ดังนั้นด้วยวิธีนี้ เพื่อนๆสามารถที่จะนำ ZeroTier ไปประยุกต์ใช้งานกับลักษณะงานที่ต้องการเข้าถึงอุปกรณ์จากเครือข่ายคนละเครือข่ายกันได้อย่างสะดวกสบาย ไม่ต้อง Forward Port หรือตั้งค่า VPN เองให้วุ่นวายแล้ว!
หากเพื่อนๆคนไหนยังไม่มีบอร์ด Raspberry Pi ไว้รัน ZeroTier ที่บ้าน ทาง Cytron Thailand ตัวแทนจำหน่ายอย่างเป็นทางการของ Raspberry Pi Official มี Raspberry Pi ทุกรุ่นพร้อมจำหน่ายให้ท่านแล้ว วันนี้! พร้อมประกันสินค้า 1 ปี เคลมง่าย สะดวก พร้อมเจ้าหน้าที่ให้บริการให้คำปรึกษาการใช้งาน
สั่งซื้อได้ที่
หรือสั่งซื้อผ่านทางเจ้าหน้าที่ จันทร์-ศุกร์ เวลา 08:00–18:00 น. ผ่านทาง Cytron Line Official Account :
สำหรับบทความนี้ หากเพื่อนๆสงสัยในขั้นตอนใดๆที่กล่าวถึง สามารถทิ้งคำถามไว้ได้เลยนะครับ