วันนี้ SingLinkLabs ทีมผู้พัฒนา SingLinkVPN ได้เผยแพร่ซอร์สโค้ดของ แอป SingLinkVPN ต้นแบบรุ่นแรก บน GitHub ภายใต้สัญญาอนุญาต Apache-2.0 นี่คือแอป VPN สไตล์สำหรับผู้ใช้ทั่วไป รองรับ Windows, macOS, Android และ iOS สร้างจากโค้ดเบสเดียวบนโปรโตคอล SingLink ที่เพิ่งเปิดเป็นโอเพนซอร์ส
แอปนี้เปิดตัวพร้อมกับตัวโปรโตคอล อ่านเพิ่มเติมได้ที่ โปรโตคอล SingLink เปิดเป็นโอเพนซอร์สแล้ว เมื่อดูทั้งสองโปรเจกต์ไปพร้อมกัน จะเห็นว่าโปรโตคอล VPN แบบเปิดกับไคลเอนต์ที่สมบูรณ์ทำงานประสานกันอย่างไร ตั้งแต่ปุ่มเชื่อมต่อไปจนถึงแพ็กเก็ตที่เข้ารหัส
คลังโค้ด: SingLinkLabs / singlink-vpn-app · สถานะ: ต้นแบบรุ่นแรก · สัญญาอนุญาต: Apache-2.0 · เทคโนโลยี: Flutter (Dart) สำหรับอินเทอร์เฟซ และ Go สำหรับแกนหลัก
นี่ไม่ใช่แอปที่คุณดาวน์โหลดจากเว็บไซต์ของเรา
แอป SingLinkVPN อย่างเป็นทางการที่คุณดาวน์โหลดจากเว็บไซต์ของเราและจาก App Store ต่าง ๆ เป็นผลิตภัณฑ์แยกต่างหาก แอปเหล่านั้นทำงานบนโปรโตคอลที่เราใช้งานจริง ซึ่งรวมถึง SingLink 2.0 และซอร์สโค้ดหลักของแอปเหล่านั้นไม่ได้อยู่ในการเปิดเผยครั้งนี้ ผู้ใช้เดิมจึงไม่มีอะไรเปลี่ยนแปลง
แอปต้นแบบนี้เป็นไคลเอนต์อ้างอิงสำหรับโปรโตคอล SingLink แบบเปิด เชื่อมต่อได้เฉพาะเซิร์ฟเวอร์ที่รองรับโปรโตคอลนั้น และไม่มีการลงชื่อเข้าใช้บัญชี คุณต้องเพิ่มเซิร์ฟเวอร์เองโดยวางลิงก์เซิร์ฟเวอร์หรือนำเข้าจากคลิปบอร์ด แอปนี้ไม่ได้เผยแพร่บน App Store ใด ๆ
แอปทำอะไรได้บ้าง
เชื่อมต่อและตัดการเชื่อมต่อด้วยการแตะครั้งเดียว ผ่านปุ่มวงกลมขนาดใหญ่ที่แสดงสามสถานะ: ยังไม่เชื่อมต่อ กำลังเชื่อมต่อ และเชื่อมต่อแล้ว
สถานะการป้องกัน ("Not protected" หรือ "Protected") และตัวจับเวลาการเชื่อมต่อ
IP ของคุณ: หลังเชื่อมต่อ แอปจะแสดงที่อยู่ IP ขาออกที่เว็บไซต์มองเห็น
เลือกตำแหน่ง: รายชื่อเซิร์ฟเวอร์แสดงพร้อมธงประเทศ โดยมี "Quick connect (auto)" อยู่ด้านบนสุด หากเปลี่ยนตำแหน่งระหว่างเชื่อมต่อ แอปจะเชื่อมต่อใหม่ให้อัตโนมัติ
ค่าความหน่วงตามจริง: แสดงเฉพาะค่าที่วัดได้จริง เซิร์ฟเวอร์ที่ยังไม่ได้วัดจะแสดง "—" แทนการแต่งตัวเลขขึ้นมา
ความเร็วแบบเรียลไทม์: ความเร็วดาวน์โหลดและอัปโหลด พร้อมปริมาณข้อมูลที่ใช้ในเซสชันปัจจุบัน
ข้อความแจ้งข้อผิดพลาดที่ชัดเจน บอกว่าควรทำอะไรต่อ และดูรายละเอียดทางเทคนิคได้ในแตะเดียว
โหมดสว่างและโหมดมืด ตามการตั้งค่าของระบบ
โหมดการเชื่อมต่อสองแบบ
บนโทรศัพท์ เป็น VPN ทั้งอุปกรณ์ Android ใช้ VpnService ของระบบ ส่วน iOS ใช้ Network Extension ทราฟฟิกของทุกแอปจะผ่านอุโมงค์ และการค้นหา DNS ก็เกิดขึ้นภายในอุโมงค์ด้วย
บนคอมพิวเตอร์ เป็นโหมดพร็อกซีระบบ เมื่อคุณเชื่อมต่อ แอปจะตั้งค่าพร็อกซีของระบบ และคืนค่าการตั้งค่าเดิมเมื่อคุณตัดการเชื่อมต่อหรือออกจากแอป หากแอปถูกบังคับปิดขณะเชื่อมต่ออยู่ แอปจะคืนค่าการตั้งค่าเดิมในครั้งถัดไปที่เปิด เบราว์เซอร์และแอปส่วนใหญ่ทำตามพร็อกซีของระบบ แต่โปรแกรมบางตัวที่ไม่สนใจการตั้งค่าพร็อกซีจะไม่ทำตาม VPN ระดับแพ็กเก็ตสำหรับเดสก์ท็อป (Network Extension บน macOS และ Wintun บน Windows) คือขั้นตอนถัดไปที่วางแผนไว้
สร้างขึ้นอย่างไร
โค้ดเบส Flutter เดียว สร้างแอปได้ครบทั้งสี่แพลตฟอร์ม โดยมีอินเทอร์เฟซเหมือนกันทุกแพลตฟอร์ม อินเทอร์เฟซเป็นภาษาอังกฤษ
แกนหลักที่เขียนด้วย Go บรรจุโปรโตคอล SingLink และถูกคอมไพล์เป็นไลบรารีเนทีฟสำหรับแต่ละแพลตฟอร์ม ซึ่งแอปเรียกใช้ได้โดยตรง
บนโทรศัพท์ แกนหลักจะเพิ่มสแต็กเครือข่ายแบบ user-space gVisor จาก Google (Apache-2.0) ซึ่งแปลงทราฟฟิกทั้งหมดของอุปกรณ์ให้เป็นการเชื่อมต่อ SingLink
เขียนขึ้นใหม่ทั้งหมด นอกจากเทมเพลตเปล่าที่ Flutter สร้างให้สำหรับโปรเจกต์ใหม่แล้ว โค้ดทั้งหมดเป็นของใหม่ ไม่มีโค้ด ไอคอน หรือรูปภาพใดที่นำมาจากแอป VPN อื่น
สถานะของแต่ละแพลตฟอร์ม
macOS 13 ขึ้นไป (Apple silicon): โหมดพร็อกซีระบบ สร้างแอปแล้วและทดสอบกับการเชื่อมต่อจริงแล้ว
Android 7 ขึ้นไป: VPN ทั้งอุปกรณ์ สร้าง APK แล้วและทดสอบกับการเชื่อมต่อจริงบน Android emulator แล้ว
iOS 15 ขึ้นไป: VPN ทั้งอุปกรณ์ สร้างและรันได้ใน iOS simulator แต่ simulator ไม่สามารถสร้างอุโมงค์ VPN ได้ และการรันบน iPhone จริงต้องมีบัญชี Apple Developer
Windows 10 และ 11 (x64): โหมดพร็อกซีระบบ สร้างไลบรารีแกนหลักแล้ว ส่วนตัวแอปต้องคอมไพล์บน Windows และในคลังโค้ดมีเวิร์กโฟลว์ GitHub Actions ที่ทำขั้นตอนนี้ให้
ข้อจำกัดตามจริง
นี่คือแอปต้นแบบ สร้างขึ้นสำหรับนักพัฒนา นักวิจัย และทุกคนที่อยากเห็นว่าแต่ละส่วนทำงานอย่างไร ไม่ได้มีไว้แทนแอปอย่างเป็นทางการ
การเผยแพร่ต้องมีขั้นตอนเพิ่มเติม การเผยแพร่สู่สาธารณะบน Mac ต้องผ่านการลงนามและการรับรอง (notarization) ของ Apple การรันบน iPhone จริงต้องมีบัญชี Apple Developer และบิลด์ Android ลงนามด้วยคีย์สำหรับทดสอบ
การรองรับ macOS ในตอนนี้หมายถึง macOS 13 ขึ้นไปบน Mac ที่ใช้ Apple silicon (M-series)
เดสก์ท็อปใช้โหมดพร็อกซีระบบ โปรแกรมที่ไม่สนใจการตั้งค่าพร็อกซีจึงยังไม่ได้รับการครอบคลุม
โปรโตคอลที่อยู่เบื้องหลังยังเป็นฉบับร่าง ผ่านการตรวจสอบความปลอดภัยภายในแล้ว แต่ยังไม่มีการตรวจสอบโดยบุคคลที่สาม และยังไม่ได้ทดสอบภาคสนามในจีนแผ่นดินใหญ่
ชื่อเซิร์ฟเวอร์แสดงตามที่เซิร์ฟเวอร์ส่งมา ตั้งชื่อเซิร์ฟเวอร์เป็นภาษาอังกฤษหากต้องการให้อินเทอร์เฟซเป็นภาษาอังกฤษทั้งหมด
สร้างแอปเองและร่วมพัฒนา
ไฟล์ README ในคลังโค้ดอธิบายวิธีสร้างแกนหลักและแอปสำหรับแต่ละแพลตฟอร์ม ส่วนแกนหลักของโปรโตคอลอยู่ในคลังโค้ดแยกต่างหาก คือ SingLinkLabs / singlink-protocol
เรายินดีรับคำถาม รายงานข้อบกพร่อง และ Pull Request บน GitHub โปรดรายงานช่องโหว่ด้านความปลอดภัยแบบส่วนตัวแทนการเปิด Issue สาธารณะ ขั้นตอนอธิบายไว้ใน SECURITY.md ในคลังโค้ดของโปรโตคอล
สัญญาอนุญาตและเครื่องหมายการค้า
โค้ดใช้สัญญาอนุญาต Apache-2.0: คุณสามารถใช้ แก้ไข และแจกจ่ายต่อได้ รวมถึงเพื่อการค้า ภายใต้เงื่อนไขของสัญญาอนุญาต ชื่อ "SingLink" และ "SingLinkVPN" ชื่อภาษาจีนของทั้งสอง และโลโก้ เป็นเครื่องหมายการค้าของ SingLinkLabs และสัญญาอนุญาตไม่ได้ให้สิทธิ์ใช้สิ่งเหล่านี้ fork ต้องใช้ชื่อและไอคอนของตนเอง แอปนี้มีสแต็กเครือข่าย gVisor อยู่ด้วย ซึ่งใช้สัญญาอนุญาต Apache-2.0 เช่นกัน
อ่านเพิ่มเติม
เอกสารไวท์เปเปอร์ทางเทคนิค SingLink 2.0 โปรโตคอลที่แอปอย่างเป็นทางการใช้งานจริง
