รู้จัก Pangolin: เปิดบริการภายในผ่าน Tunnel พร้อมกำหนดสิทธิ์ราย Resource
ทดลอง Pangolin แพลตฟอร์มโอเพนซอร์สสำหรับเชื่อมเครือข่ายด้วย tunnel และป้องกันเว็บภายในด้วยการกำหนดสิทธิ์ พร้อมภาพหน้าจอ GIF และวิดีโอสาธิต
Pangolin เป็นโครงการโอเพนซอร์สสำหรับนำบริการที่อยู่ในเครือข่ายภายในมาให้ผู้มีสิทธิ์เข้าถึงจากภายนอก โดยรวม tunnel, reverse proxy และการควบคุมสิทธิ์ไว้ในหน้าจัดการเดียวกัน บทความนี้เป็นการแนะนำโครงการจากเอกสารทางการที่ตรวจเมื่อ 12 ตุลาคม 2026 ไม่ใช่ข่าวเปิดตัวเวอร์ชันใหม่ สิ่งที่น่าสนใจสำหรับทีมดูแลระบบคือสามารถเริ่มจากเว็บแอปภายในเพียงตัวเดียว แล้วกำหนดว่าทรัพยากรนั้นเปิดให้ใครเข้าได้ แทนการเปิดทั้งเครือข่ายให้ผู้ใช้ทุกคน

เมื่อบริการอยู่หลัง NAT ปัญหาไม่ได้จบที่การทำ tunnel
สมมติทีมมี Grafana อยู่ในสำนักงานและต้องให้ผู้ดูแลเปิดจากบ้าน วิธีหนึ่งคือเปิดพอร์ตและตั้งค่า reverse proxy เอง อีกวิธีคือใช้ VPN แต่ทั้งสองแบบยังต้องตอบคำถามเรื่องตัวตนและขอบเขตการเข้าถึง Pangolin วางเซิร์ฟเวอร์กลางที่มีโดเมนสาธารณะไว้ด้านหน้า ส่วนตัวเชื่อมต่อในเครือข่ายปลายทางสร้างการเชื่อมต่อออกไปหาเซิร์ฟเวอร์กลาง ผู้ใช้จึงเข้าถึง resource ที่กำหนดผ่านเว็บหรือ client ตามประเภทงาน โดยไม่ต้องเปิดพอร์ตของ Grafana บนเราเตอร์สำนักงาน
ภาพจากโครงการแสดงหน้ารายการ site ซึ่งเป็นจุดเชื่อมต่อระหว่างเครือข่ายกับ Pangolin สถานะ site ควรเป็นสิ่งแรกที่ตรวจเมื่อเว็บปลายทางเข้าไม่ได้ เพราะการตั้งค่าชื่อโดเมนถูกต้องเพียงอย่างเดียวไม่ได้ยืนยันว่า tunnel และบริการด้านหลังยังตอบสนอง

ภาพ: repository ของ Pangolin; เป็นภาพหน้าจอสาธิตจากผู้พัฒนา รุ่นและเมนูที่เห็นอาจต่างจาก Community Edition ที่ติดตั้งจริง
Site, resource และ policy ทำหน้าที่ต่างกัน
Site คือที่ตั้งของเครือข่ายหรือเครื่องที่เชื่อมเข้า Pangolin; resource คือบริการที่ต้องการให้เข้าถึง เช่นแดชบอร์ดภายใน; ส่วน policy ตัดสินว่าใครเข้า resource นั้นได้ การแยกสามส่วนนี้ช่วยลดข้อผิดพลาดที่พบบ่อย คือเชื่อม tunnel สำเร็จแล้วเผลอคิดว่าปลอดภัยพอ ทั้งที่ resource ถูกตั้งให้เปิดกว้างเกินความจำเป็น สำหรับเว็บภายใน ผู้ใช้เปิดผ่านเบราว์เซอร์ได้ ส่วนบริการส่วนตัวประเภทอื่นอาจต้องใช้ client ของ Pangolin และกำหนดเส้นทางกับสิทธิ์ต่างออกไป
Pangolin ใช้ WireGuard เป็นส่วนหนึ่งของการเชื่อมเครือข่าย และมีตัวเชื่อมต่ออย่าง Newt สำหรับฝั่ง site ตัวอย่าง GIF ทางการด้านล่างแสดงการเชื่อม site และหน้าให้ยืนยันตัวตนก่อนเข้า Grafana จึงเห็นว่าการเชื่อมถึงเครือข่ายกับการอนุญาตให้เปิดแอปเป็นคนละขั้นตอน

ภาพเคลื่อนไหว: public/clip.gif ใน repository Pangolin; เป็นเดโมของผู้พัฒนา ไม่ใช่ผลทดสอบจากระบบของ DriteStudio
หากอุปกรณ์อ่าน GIF ได้ไม่สะดวก สามารถเล่นฉบับวิดีโอด้านล่างได้ วิดีโอนี้แปลงจาก GIF ทางการไฟล์เดียวกัน ไม่มีภาพการทำงานเพิ่มเติม
ทดลองติดตั้งอย่างมีขอบเขต
คู่มือ Quick Install ของโครงการระบุว่าฝั่งเซิร์ฟเวอร์ต้องเป็น Linux ที่มี public IP และสิทธิ์ root พร้อมโดเมนชี้มาที่เครื่อง อีเมลสำหรับใบรับรอง TLS และการเปิดพอร์ต TCP 80/443 กับ UDP 51820/21820 ตามรูปแบบที่ใช้ คู่มือให้ดาวน์โหลด installer จาก static.pangolin.net แล้วรัน sudo ./installer เพื่อเลือก Community Edition, โดเมนแดชบอร์ด และการเปิดใช้ Gerbil สำหรับ tunnel ตัวติดตั้งจะดึง container ที่เกี่ยวข้องก่อนให้เข้าหน้า initial setup เพื่อสร้างผู้ดูแลระบบ
สำหรับ production ไม่ควรรันคำสั่งจากอินเทอร์เน็ตโดยไม่ทบทวนสคริปต์ก่อน ให้เปิดอ่าน installer, ตรวจโดเมนดาวน์โหลดและ tag ของ image ที่จะใช้ เก็บไฟล์ตั้งค่าในที่สำรองได้ และเริ่มในเครื่องทดสอบก่อน เมื่อติดตั้งเสร็จให้สร้าง site ตัวแรก ใส่ connector ในเครือข่ายที่มีเว็บทดสอบ แล้วเพิ่ม resource ที่ชี้ไปยัง service นั้น เริ่มจากสิทธิ์เฉพาะผู้ดูแลหนึ่งคน ตรวจทั้งเส้นทางที่เข้าได้และบัญชีที่ต้องถูกปฏิเสธ ก่อนชวนทีมอื่นใช้

ภาพ: repository Pangolin; หน้าจอเป็นตัวอย่างการตั้งค่า ควรตรวจความสามารถที่มีใน edition ของตนก่อนออกแบบนโยบายจริง
จุดที่ต้องวัดระหว่างทดลอง
ทดสอบจากเครือข่ายภายนอกจริง ไม่ใช่เฉพาะ Wi-Fi เดียวกับเซิร์ฟเวอร์ ดูว่าชื่อโดเมนและ TLS ถูกต้อง, connector reconnect หลังรีสตาร์ตได้, session หมดอายุแล้วต้องยืนยันตัวตนใหม่ และ resource ที่ไม่ควรเข้าถึงไม่ตอบสนองต่อผู้ใช้ที่ไม่มีสิทธิ์ ลองปิด service ด้านหลังเพื่อดูว่าผู้ใช้ได้รับสถานะผิดพลาดแบบใด และเก็บ log ที่สัมพันธ์กับเวลาเกิดเหตุไว้ตรวจ หากใช้ระบบยืนยันตัวตนภายนอก ให้ทดสอบกรณี provider ล่มและแผนการเข้าถึงฉุกเฉินของผู้ดูแล
การใช้ tunnel ช่วยลดการเปิดพอร์ตที่ site แต่เซิร์ฟเวอร์ Pangolin เองยังเป็นจุดสำคัญบนอินเทอร์เน็ต ต้องดูแลการอัปเดต, firewall, DNS, ใบรับรอง, backup และบัญชีผู้ดูแลอย่างจริงจัง อย่านำคำว่า zero trust ไปตีความว่าตั้งค่าเริ่มต้นแล้วปลอดภัยอัตโนมัติ ความปลอดภัยขึ้นอยู่กับ policy ของแต่ละ resource และการตรวจสอบการเข้าถึงจริงด้วย
เช็ก edition และใบอนุญาตก่อนวางแผนใช้งาน
README ทางการแยก Community Edition ที่ self-host และใช้ AGPL-3 ออกจาก Enterprise Edition กับบริการ Cloud ที่มีเงื่อนไขและความสามารถต่างกัน ภาพหน้าจอใน repository อาจเป็นตัวอย่างจาก Enterprise Edition จึงไม่ควรใช้ภาพเป็นหลักฐานว่าทุกเมนูมีในรุ่นฟรี หากต้องใช้ SSO, audit, นโยบายอุปกรณ์หรือจำนวนผู้ใช้มาก ให้ตรวจตารางเปรียบเทียบรุ่นปัจจุบันและเงื่อนไขใบอนุญาตโดยตรงก่อนออกแบบระบบ สำหรับการดัดแปลงและเผยแพร่ซอฟต์แวร์ต่อ ต้องทบทวนข้อกำหนด AGPL-3 ของส่วนที่นำไปใช้ด้วย
Pangolin เหมาะกับทีมที่มีหลายบริการภายในและต้องการกำหนดการเข้าถึงเป็นราย resource โดยเริ่มทดลองกับบริการที่ย้อนกลับได้ง่ายก่อน ผลที่ควรได้ไม่ใช่แค่เปิดเว็บจากภายนอกสำเร็จ แต่ต้องตอบได้ว่าใครเข้าได้, ใครเข้าไม่ได้, tunnel ล่มแล้วเกิดอะไรขึ้น และใครเป็นเจ้าของการดูแลเซิร์ฟเวอร์กลาง
อ่านเพิ่มเติม: repository Pangolin · Quick Install · วิธีติดตั้ง Newt · ตารางรุ่น · LICENSE