Shadowsocks chiếm một góc kỳ lạ trong lịch sử internet: một proxy được viết bởi một lập trình viên đơn lẻ ở Trung Quốc năm 2012, phát hành dưới dạng mã nguồn mở, và lặng lẽ được hàng triệu người chọn làm công cụ chủ lực để vượt tường lửa. Nó liên tục bị đem ra so với VPN, thường với câu hỏi sai — "cái nào tốt hơn?" — trong khi hai cái không thực sự cố làm cùng một công việc.

Trả lời ngắn gọn: Shadowsocks là một proxy mã hóa được thiết kế để chuyển lưu lượng qua các tường lửa quốc gia mà không bị nhận ra. VPN là một đường hầm mã hóa cho toàn bộ thiết bị của bạn, được thiết kế cho quyền riêng tư khỏi mạng bạn đang dùng. Chúng có chỗ chồng lấn, nhưng chúng đáp lại những mối đe dọa khác nhau — và lựa chọn đúng tùy vào mối đe dọa nào thực sự là của bạn.

Điểm chính

  • Shadowsocks là một proxy SOCKS5 mã hóa được tạo ra để vượt kiểm duyệt; nó chưa bao giờ được thiết kế như một sản phẩm về quyền riêng tư.
  • Mánh của nó là trông giống không gì cả: không có dấu vân tay bắt tay, không có biểu ngữ giao thức, chỉ là những byte mã hóa không đặc điểm.
  • VPN phủ mọi ứng dụng trên thiết bị, với hành vi chuẩn hóa quanh rò rỉ và kết nối bị ngắt; các thiết lập proxy thì khác nhau rất nhiều.
  • Các tường lửa hiện đại đã học cách gắn cờ lưu lượng "trông giống không gì cả", nên Shadowsocks cổ điển không còn là tấm vé thông hành miễn phí nữa.
  • Hãy chọn theo mô hình mối đe dọa: kháng kiểm duyệt, quyền riêng tư toàn thiết bị, hoặc — ngày càng phổ biến — cả hai trong một ứng dụng.

Shadowsocks thực ra là gì

Năm 2012, một lập trình viên viết dưới cái tên clowwindy đã công bố một công cụ nhỏ để đưa lưu lượng cá nhân vượt qua tường lửa quốc gia của Trung Quốc. Năm 2015, sau sức ép từ nhà chức trách, ông xóa mã nguồn và rút lui. Dự án sống sót dưới dạng các bản triển khai do cộng đồng duy trì và được phát triển tích cực kể từ đó — nó cũng là nền tảng cho các công cụ như Outline. Câu chuyện khởi nguồn đó giải thích trọn vẹn thiết kế: Shadowsocks được xây bởi một người mà vấn đề là tường lửa, không phải nhà quảng cáo.

Về mặt cơ chế, Shadowsocks là một cặp: một client trên thiết bị của bạn và một máy chủ ở đâu đó bên ngoài mạng bị lọc. Client nhận lưu lượng ứng dụng qua SOCKS5 — giao diện proxy tiêu chuẩn — mã hóa nó bằng các thuật toán mã hóa có xác thực hiện đại, và chuyển tiếp nó qua máy chủ, rồi máy chủ gửi nó đến đích thực.

Phần khéo léo nằm ở những gì vắng mặt. Một kết nối mã hóa bình thường tự công bố mình: TLS mở đầu bằng một lời chào dễ nhận ra, và một giao thức VPN mở đầu bằng một bước bắt tay dễ nhận ra. Một kết nối proxy Shadowsocks mở đầu bằng không gì cả. Ngay từ byte đầu tiên, luồng dữ liệu là văn bản mã hóa entropy cao không có header, không biểu ngữ, và không có kích thước gói tin cố định. Không có dấu vân tay để khớp vì không có cấu trúc để nhìn thấy.

Điều đó khác VPN như thế nào

Sự khác biệt bắt đầu ở tầng mà mỗi cái hoạt động, rồi lan ra từ đó.

Phạm vi phủ. VPN tạo một giao diện mạng ở cấp hệ điều hành và định tuyến toàn bộ thiết bị qua nó — mọi ứng dụng, kể cả những ứng dụng hoàn toàn không có thiết lập proxy. Shadowsocks là một proxy: theo nghĩa cổ điển, nó mang các ứng dụng được trỏ đến nó. Các client di động làm mờ ranh giới này bằng cách định tuyến toàn hệ thống qua một giao diện đường hầm cục bộ, nhưng đó là tính năng của client bạn cài đặt, không phải một đảm bảo của giao thức.

Hành vi khi gặp sự cố. Các ứng dụng VPN trưởng thành có câu trả lời chuẩn hóa cho những câu hỏi gai góc: điều gì xảy ra với lưu lượng ngay khoảnh khắc đường hầm bị ngắt, các truy vấn DNS đi đâu, có gì lọt qua mép không. Với Shadowsocks, câu trả lời phụ thuộc hoàn toàn vào client bạn chọn và cách nó được cấu hình — không có gì trong số đó được giao thức đảm bảo.

Niềm tin. Nhà cung cấp VPN là một công ty bạn có thể đánh giá qua chính sách ghi log và lịch sử hoạt động — những thứ chúng tôi xem xét trong chính sách no-logs thực sự có nghĩa gì. Máy chủ Shadowsocks thường được tự lưu trữ hoặc mua từ những đại lý nhỏ, thường ẩn danh. Dù cách nào, có ai đó vận hành đầu xa và có thể quan sát lưu lượng của bạn đi đâu. Proxy không loại bỏ nhu cầu tin tưởng điểm cuối; nó thay đổi việc bạn đang tin tưởng ai, và với một đại lý thì bạn thường chẳng biết gì về họ.

Nếu bạn muốn phiên bản tổng quát của phép so sánh này — proxy đối lại VPN, vượt ra ngoài kiểm duyệt — thì đó là VPN vs proxy.

Tại sao nó hiệu quả suốt một thập kỷ

Deep packet inspection, ở cốt lõi, là việc khớp dấu vân tay: nhận ra giao thức, rồi quyết định chính sách. Shadowsocks không cho nó gì để nhận ra. Điều đó để lại cho người kiểm duyệt hai lựa chọn kém hấp dẫn — chặn các địa chỉ đích từng cái một, một trò đập chuột chũi chống lại những máy chủ thuê giá rẻ, hoặc chặn mọi thứ họ không thể phân loại và chấp nhận thiệt hại phụ lên lưu lượng mã hóa thông thường.

Trong nhiều năm, thiệt hại phụ là không đáng, và Shadowsocks lọt qua khoảng trống. Khoảng trống đó đang khép lại.

Tại sao "nó còn hoạt động không?" giờ là một câu hỏi thực sự

Hai biện pháp đối phó đã thay đổi bức tranh. Cái đầu tiên là active probing: khi các hệ thống kiểm duyệt nhận thấy một kết nối đáng ngờ, chính họ kết nối đến cùng máy chủ đó và thử xem nó phản hồi ra sao, tìm kiếm hành vi của proxy. Cái thứ hai thẳng thừng hơn. Các nhà nghiên cứu đã ghi nhận tại USENIX Security 2023 rằng từ cuối năm 2021, tường lửa của Trung Quốc đôi lúc đơn giản loại bỏ những kết nối có các gói tin đầu tiên trông giống dữ liệu entropy cao không đặc điểm — đúng sự vắng mặt cấu trúc đã khiến Shadowsocks trở nên vô hình. Khi người kiểm duyệt quyết định rằng lưu lượng trông-giống-không-gì-cả tự nó là tín hiệu, việc trông giống không gì cả ngừng là một sự ngụy trang.

Cộng đồng đáp lại theo hai hướng. Một: bọc Shadowsocks bên trong các tầng truyền tải trông thực sự thông thường — các phiên TLS thật, các kết nối WebSocket. Hai: bắt chước thẳng các giao thức thật — các công cụ kế nhiệm thuộc họ trojan và REALITY trình ra như HTTPS bình thường ngay cả khi bị thăm dò. Các đặc tả Shadowsocks mới hơn cũng đã gia cố giao thức chống lại các mánh thăm dò từng bắt được những phiên bản cũ. Trò mèo vờn chuột tiếp diễn; thời đại một công cụ đơn giản lặng lẽ hoạt động ở mọi nơi đã qua.

Bước ngoặt QUIC

Chương mới nhất chạy qua QUIC, tầng truyền tải UDP mã hóa nằm dưới HTTP/3. Một phần lớn lưu lượng web thông thường giờ là QUIC, điều đó khiến nó trở thành vỏ bọc tuyệt vời: một đường hầm trình ra như HTTP/3 trông giống việc duyệt web hằng ngày hơn là nhiễu. Đó là điều mà các tìm kiếm về một "QUIC VPN" thực sự nói về — các công cụ vượt kiểm duyệt mới hơn như Hysteria2 và TUIC cưỡi lên QUIC để có vỏ bọc và hiệu năng trên các tuyến dài, hay mất gói, và công trình MASQUE của IETF đang chuẩn hóa việc proxy qua HTTP/3. Apple đã xây iCloud Private Relay từ cùng họ ý tưởng đó — iCloud Private Relay vs VPN nói về cách nó so sánh.

QUIC cũng không phải là hồi kết. Người kiểm duyệt có thể và thực sự làm chậm hoặc chặn toàn bộ UDP trong các giai đoạn nhạy cảm, điều này đẩy lưu lượng trở lại các ngụy trang TCP-và-TLS. Không tầng truyền tải nào thắng ở mọi nơi — đó là lý do bộ công cụ vượt kiểm duyệt liên tục đa dạng hóa, và lý do câu hỏi bền vững không phải "giao thức nào" mà là liệu công cụ của bạn có thể thay đổi trang phục hay không.

Bạn cần cái nào?

Hãy phân loại theo vấn đề thực sự đang ở trước mặt bạn:

  • Mạng không cho bạn ra ngoài. Ở những nơi các giao thức VPN bị nhận dạng và loại bỏ, obfuscation là yếu tố quyết định, và một giao thức VPN tiêu chuẩn ở thiết lập mặc định có thể đơn giản là không kết nối được. Đây là sân nhà của Shadowsocks — và cùng nhu cầu đó đã sinh ra các bản fork WireGuard có obfuscation, mà chúng tôi nói đến trong AmneziaWG vs WireGuard.
  • Bạn muốn quyền riêng tư khỏi mạng và ISP của mình. Phạm vi phủ toàn thiết bị, xử lý DNS có thể dự đoán, và hành vi hợp lý khi đường hầm bị ngắt quan trọng hơn các tầng truyền tải kỳ lạ. Đó là cột VPN, và đó là phần lớn việc dùng hằng ngày: Wi-Fi khách sạn, ISP lập hồ sơ, các mạng không đáng tin. VPN vượt kiểm duyệt như thế nào vẽ ra ranh giới giữa hai thế giới này chi tiết hơn.
  • Cả hai. Những người ở các mạng bị lọc nặng thường cần cả hai cùng lúc: phạm vi phủ của VPN, với lưu lượng không tự công bố mình. Trong lịch sử điều đó có nghĩa là tự lắp ráp một thiết lập từ các bộ phận. Ngày càng nhiều, nó có nghĩa là một VPN mà kết nối của nó được obfuscate sẵn từ đầu.

Snap VPN tiếp cận điều này từ phía VPN: WireGuard bên dưới, với các kỹ thuật obfuscation của riêng chúng tôi áp dụng lên kết nối để nó không trao cho các hệ thống kiểm tra một dấu vân tay VPN kiểu sách giáo khoa. Chúng tôi không công bố các chi tiết ở cấp đường truyền — các ngụy trang già đi nhanh một khi được ghi lại — nhưng mục tiêu chính là điều mà toàn bộ phép so sánh này hướng tới: quyền riêng tư toàn thiết bị vẫn kết nối được trên các mạng nơi lưu lượng VPN bị săn lùng.

Câu hỏi thường gặp

Shadowsocks có phải là VPN không? Không. Nó là một proxy mã hóa. Các client di động có thể định tuyến toàn bộ thiết bị qua nó, điều đó khiến nó có cảm giác như một VPN, nhưng những đảm bảo mà một ứng dụng VPN chuẩn hóa — định tuyến toàn thiết bị, xử lý rò rỉ, hành vi khi đường hầm bị ngắt — không phải là một phần của bản thân giao thức Shadowsocks.

Shadowsocks còn hoạt động không? Ở nhiều nơi, phần lớn thời gian, có — nhưng Shadowsocks cổ điển không còn được vé thông hành miễn phí nữa. Các hệ thống kiểm duyệt hiện đại gắn cờ lưu lượng "không cấu trúc" được mã hóa hoàn toàn và chủ động thăm dò các máy chủ bị nghi ngờ, nên các thiết lập hiện nay dựa vào các đặc tả đã gia cố, bọc TLS, hoặc các giao thức kế nhiệm.

Cái gì tốt hơn Shadowsocks? Tùy thuộc vào "tốt hơn" cần có nghĩa là gì. Để tránh bị phát hiện ngày nay, các công cụ kế nhiệm bắt chước HTTPS thật hoặc cưỡi lên QUIC có lợi thế. Cho quyền riêng tư hằng ngày trên các mạng thông thường, một VPN no-logs là công cụ đơn giản hơn và đầy đủ hơn.

Shadowsocks có an toàn không? Phần mã hóa thì vững chắc — các thuật toán mã hóa có xác thực hiện đại, được đặc tả công khai. Các rủi ro thực tế nằm ở chỗ khác: bất kỳ ai vận hành máy chủ của bạn đều có thể thấy lưu lượng của bạn đi đâu, và các client tải về từ những nguồn ngẫu nhiên có thể bị can thiệp. Tự lưu trữ xử lý điều đầu tiên; chỉ cài đặt các bản dựng chính thức xử lý điều thứ hai.

Kết luận

  • Shadowsocks là một proxy vượt kiểm duyệt hoạt động bằng cách không có hình dạng nhận ra được. VPN là một đường hầm riêng tư toàn thiết bị.
  • Chúng đáp lại những mối đe dọa khác nhau, và "tốt hơn" chỉ có nghĩa khi đặt tương quan với mối đe dọa của bạn.
  • Người kiểm duyệt đã bắt kịp việc "trông giống không gì cả", nên lĩnh vực này chuyển sang việc trông giống một thứ gì đó thật — TLS, WebSocket, QUIC.
  • Với hầu hết mọi người, phần lớn thời gian, câu trả lời thực tế là một VPN — lý tưởng nhất là một cái không tự công bố mình cho phần cứng kiểm tra.

Nếu bạn dùng iPhone và muốn một VPN chạy WireGuard, obfuscate kết nối của chính nó, và không hỏi bạn là ai — không email, không tài khoản, không nhật ký lưu lượng — Snap VPN có trên App Store.