Hôm nay, SingLinkLabs, đội ngũ đứng sau SingLinkVPN, đã công bố mã nguồn của bản nguyên mẫu thế hệ đầu tiên của ứng dụng SingLinkVPN trên GitHub theo giấy phép Apache-2.0. Đây là một ứng dụng VPN theo phong cách dành cho người dùng phổ thông, chạy trên Windows, macOS, Android và iOS, được xây dựng từ một bộ mã nguồn duy nhất trên nền giao thức SingLink vừa được mở mã nguồn.
Ứng dụng được phát hành cùng lúc với chính giao thức. Xem thêm giao thức SingLink chính thức trở thành mã nguồn mở. Đặt cạnh nhau, hai dự án cho thấy một giao thức VPN mở và một ứng dụng khách hoàn chỉnh kết hợp với nhau như thế nào, từ nút kết nối cho đến từng gói tin được mã hóa.
Kho mã: SingLinkLabs / singlink-vpn-app · Trạng thái: nguyên mẫu thế hệ đầu tiên · Giấy phép: Apache-2.0 · Công nghệ: Flutter (Dart) cho giao diện, Go cho phần lõi
Đây không phải ứng dụng bạn tải từ trang web của chúng tôi
Các ứng dụng SingLinkVPN chính thức mà bạn tải từ trang web của chúng tôi và từ các kho ứng dụng là những sản phẩm riêng biệt. Chúng chạy trên các giao thức vận hành thực tế của chúng tôi, trong đó có SingLink 2.0, và mã nguồn lõi của chúng không nằm trong đợt phát hành này. Người dùng hiện tại không có gì thay đổi.
Bản nguyên mẫu là ứng dụng khách tham chiếu cho giao thức mở SingLink. Nó chỉ kết nối tới các máy chủ hỗ trợ giao thức đó và không có chức năng đăng nhập tài khoản: bạn tự thêm máy chủ bằng cách dán liên kết máy chủ hoặc nhập từ bộ nhớ tạm. Ứng dụng không được phát hành trên bất kỳ kho ứng dụng nào.
Ứng dụng làm được gì
Kết nối và ngắt kết nối chỉ với một chạm bằng nút tròn lớn hiển thị ba trạng thái: chưa kết nối, đang kết nối và đã kết nối.
Trạng thái bảo vệ ("Not protected" hoặc "Protected") và đồng hồ đếm thời gian kết nối.
IP của bạn: sau khi kết nối, ứng dụng hiển thị địa chỉ IP đầu ra mà các trang web nhìn thấy.
Chọn vị trí: máy chủ được liệt kê kèm cờ quốc gia, với "Quick connect (auto)" ở trên cùng. Đổi vị trí khi đang kết nối sẽ tự động kết nối lại.
Độ trễ trung thực: chỉ hiển thị giá trị đo được thực tế. Máy chủ chưa được đo sẽ hiển thị "—" thay vì một con số bịa ra.
Tốc độ trực tiếp: tốc độ tải xuống và tải lên, cùng lượng dữ liệu đã dùng trong phiên hiện tại.
Thông báo lỗi rõ ràng cho biết cần làm gì tiếp theo, còn chi tiết kỹ thuật chỉ cách một chạm.
Chế độ sáng và tối, theo cài đặt của hệ thống.
Hai chế độ kết nối
Trên điện thoại: VPN cho toàn bộ thiết bị. Android dùng VpnService của hệ thống, còn iOS dùng Network Extension. Lưu lượng của mọi ứng dụng đều đi qua đường hầm, và các truy vấn DNS cũng diễn ra bên trong đó.
Trên máy tính: chế độ proxy hệ thống. Khi bạn kết nối, ứng dụng đặt proxy hệ thống, và khôi phục cài đặt trước đó khi bạn ngắt kết nối hoặc thoát ứng dụng. Nếu ứng dụng bị buộc đóng khi đang kết nối, nó sẽ khôi phục cài đặt ở lần khởi động tiếp theo. Trình duyệt và hầu hết ứng dụng đều tuân theo proxy hệ thống; một số ít chương trình bỏ qua cài đặt proxy thì không. VPN cấp gói tin cho máy tính (Network Extension trên macOS, Wintun trên Windows) là bước tiếp theo đã được lên kế hoạch.
Cách ứng dụng được xây dựng
Một bộ mã Flutter duy nhất tạo ra cả bốn ứng dụng, với cùng một giao diện trên mọi nền tảng. Giao diện bằng tiếng Anh.
Phần lõi viết bằng Go chứa giao thức SingLink và được biên dịch thành thư viện gốc cho từng nền tảng, để ứng dụng gọi trực tiếp.
Trên điện thoại, phần lõi bổ sung ngăn xếp mạng chạy trong không gian người dùng gVisor của Google (Apache-2.0), giúp chuyển toàn bộ lưu lượng của thiết bị thành các kết nối SingLink.
Viết từ đầu. Ngoài mẫu trống mà Flutter tạo cho một dự án mới, toàn bộ mã đều mới. Không có mã, biểu tượng hay hình ảnh nào lấy từ các ứng dụng VPN khác.
Tình trạng trên từng nền tảng
macOS 13 trở lên (Apple silicon): chế độ proxy hệ thống. Đã biên dịch và thử nghiệm với kết nối thật.
Android 7 trở lên: VPN cho toàn bộ thiết bị. Đã biên dịch APK và thử nghiệm với kết nối thật trên trình giả lập Android.
iOS 15 trở lên: VPN cho toàn bộ thiết bị. Ứng dụng biên dịch và chạy được trên trình mô phỏng iOS; trình mô phỏng không thể tạo đường hầm VPN, và chạy trên iPhone thật cần có tài khoản Apple Developer.
Windows 10 và 11 (x64): chế độ proxy hệ thống. Thư viện lõi đã được biên dịch; bản thân ứng dụng phải được biên dịch trên Windows, và kho mã có sẵn một quy trình GitHub Actions làm việc này.
Những giới hạn thật sự
Đây là bản nguyên mẫu. Nó dành cho nhà phát triển, nhà nghiên cứu và bất kỳ ai muốn xem các thành phần hoạt động ra sao, không nhằm thay thế các ứng dụng chính thức.
Phân phối cần thêm bước. Phát hành công khai cho Mac cần ký và công chứng của Apple, iPhone thật cần tài khoản Apple Developer, còn bản Android được ký bằng khóa thử nghiệm.
Hỗ trợ macOS hiện chỉ áp dụng cho macOS 13 trở lên trên máy Mac dùng Apple silicon (M-series).
Máy tính dùng chế độ proxy hệ thống, nên các chương trình bỏ qua cài đặt proxy hiện chưa được hỗ trợ.
Giao thức bên dưới vẫn là bản nháp. Nó đã qua đánh giá bảo mật nội bộ nhưng chưa được kiểm toán độc lập, và chưa được thử nghiệm thực tế tại Trung Quốc đại lục.
Tên máy chủ được hiển thị đúng như máy chủ gửi về. Hãy đặt tên máy chủ bằng tiếng Anh để giao diện hoàn toàn bằng tiếng Anh.
Tự biên dịch và tham gia
README trong kho mã hướng dẫn cách biên dịch phần lõi và ứng dụng cho từng nền tảng. Phần lõi giao thức nằm trong kho mã riêng, SingLinkLabs / singlink-protocol.
Chúng tôi hoan nghênh câu hỏi, báo cáo lỗi và Pull Request trên GitHub. Vui lòng báo cáo lỗ hổng bảo mật một cách riêng tư thay vì đăng trong Issue công khai. Quy trình được mô tả trong SECURITY.md của kho mã giao thức.
Giấy phép và nhãn hiệu
Mã nguồn được cấp phép theo Apache-2.0: bạn được dùng, sửa đổi và phân phối lại, kể cả cho mục đích thương mại, theo các điều khoản của giấy phép. Tên "SingLink", "SingLinkVPN", các tên tiếng Trung của chúng và logo là nhãn hiệu của SingLinkLabs, và giấy phép không cho phép sử dụng chúng. Các bản fork phải dùng tên và biểu tượng riêng. Ứng dụng có tích hợp ngăn xếp mạng gVisor, cũng được cấp phép theo Apache-2.0.
Đọc thêm
Sách trắng kỹ thuật SingLink 2.0, giao thức vận hành của các ứng dụng chính thức
