QUIC và HTTP/3 là gì, vì sao GreenTunnel chặn QUIC mặc định?
QUIC chạy trên UDP nên không tách gói như TCP được. Vì sao GreenTunnel chặn UDP/443 để trình duyệt chuyển ngay sang TCP, và khi nào QUIC vẫn được đi qua.
Nếu từng mở công cụ dành cho nhà phát triển của trình duyệt, có thể bạn đã thấy cột “Protocol” ghi h3 bên cạnh nhiều yêu cầu. Đó là HTTP/3, chạy trên QUIC. Đây là một bước tiến lớn của web, nhưng cũng là lý do một trang có thể vào được lúc này, lúc khác lại không, trên mạng có lọc DPI. Bài này giải thích QUIC là gì, vì sao GreenTunnel chặn nó theo mặc định, và điều đó ảnh hưởng gì tới bạn.
QUIC và HTTP/3 là gì
Hàng chục năm nay, web chạy trên TCP: trước tiên hai bên bắt tay TCP, sau đó bắt tay TLS để mã hoá, rồi mới truyền dữ liệu. QUIC gộp các bước đó lại và chạy trên UDP. Nó có vài ưu điểm:
- bắt tay nhanh hơn, nhất là khi quay lại trang đã từng vào,
- một gói tin bị mất không làm nghẽn các luồng dữ liệu khác,
- kết nối có thể giữ nguyên khi điện thoại chuyển từ Wi-Fi sang 4G.
HTTP/3 đơn giản là HTTP chạy trên QUIC. Trình duyệt thường mở trang bằng HTTP/2 qua TCP trước, thấy máy chủ báo có hỗ trợ HTTP/3 thì các lần sau sẽ thử QUIC.
Vì sao QUIC là vấn đề với việc vượt chặn
Gói đầu tiên của QUIC (gói Initial) cũng mang ClientHello cùng tên trang (SNI). Gói này có mã hoá, nhưng bằng khoá mà ai quan sát đường truyền cũng tính ra được, nên bộ lọc DPI vẫn đọc được tên trang nếu muốn.
Các kỹ thuật GreenTunnel dùng trên mọi nền tảng, như tách TLS record hay tách gói TCP, đều dựa vào cách TCP ghép các mảnh lại. QUIC không có “gói TCP đầu tiên” nào để tách. Nếu để QUIC đi thẳng trên mạng có lọc, trang có thể lúc mở được qua TCP, lúc bị chặn qua QUIC, rất khó hiểu với người dùng.
GreenTunnel xử lý thế nào: chặn nhanh, không để chờ
Khi tuỳ chọn Chặn QUIC (HTTP/3) đang bật (mặc định), mỗi gói QUIC đi thẳng tới cổng UDP 443 được engine trả lời ngay bằng thông báo ICMP “cổng không tới được” (port unreachable). Trình duyệt hiểu rằng QUIC không dùng được và chuyển sang HTTPS qua TCP, nơi việc tách gói có tác dụng.
Vì sao phải trả lời thay vì lặng lẽ bỏ gói? Nếu gói QUIC chỉ đơn giản biến mất, trình duyệt phải chờ hết thời gian chờ mới chịu chuyển sang TCP, và trang sẽ có cảm giác “đơ” một lúc. Một câu trả lời rõ ràng giúp nó đổi hướng gần như tức thì.
Tuỳ chọn này chỉ ảnh hưởng tới UDP cổng 443. Trên tuyến đi thẳng, các lưu lượng UDP khác như game hay cuộc gọi vẫn đi bình thường, còn truy vấn DNS luôn được engine xử lý qua DNS mã hoá.


Có làm chậm mạng không?
Trong đa số trường hợp, bạn sẽ khó nhận ra khác biệt. HTTP/2 qua TCP là cách web vẫn chạy từ lâu và vẫn được mọi trang hỗ trợ. Cái bạn mất là những ưu điểm riêng của QUIC: bắt tay nhanh hơn một chút, chịu mất gói tốt hơn trên mạng di động yếu, và giữ kết nối khi đổi mạng. Mức độ khác biệt tuỳ vào mạng và trang web, nên chúng tôi không đưa ra con số.
Nếu mạng của bạn không lọc gì cả, hoặc bạn ưu tiên QUIC hơn việc vượt chặn, bạn có thể tắt tuỳ chọn trong Cài đặt. Khi đó QUIC đi thẳng như bình thường, không được xử lý gì thêm.
Khi nào QUIC được đi qua
Khi bạn dùng Proxy Route hoặc Tunnel Link, việc QUIC có đi được hay không phụ thuộc vào tuyến đó có chở được UDP hay không:
| Tuyến của kết nối | QUIC (UDP/443) |
|---|---|
| Đi thẳng, “Chặn QUIC” bật (mặc định) | Bị chặn, trình duyệt dùng TCP |
| Đi thẳng, “Chặn QUIC” tắt | Đi thẳng, không vượt chặn |
| Proxy HTTP hoặc HTTPS | Bị chặn (proxy loại này không chở UDP) |
| SOCKS5 không bật “Gửi cả UDP” | Bị chặn |
| SOCKS5 có bật “Gửi cả UDP” | Đi qua proxy |
| Shadowsocks (UDP bật) | Đi qua máy chủ |
| WireGuard (Tunnel Link) | Đi qua tunnel |
Với tuyến không chở được UDP, QUIC luôn bị chặn bất kể công tắc đang thế nào, và mọi lưu lượng UDP khác trừ DNS cũng vậy. Như thế trình duyệt và ứng dụng sẽ dùng TCP qua proxy, chứ không có gói UDP nào lặng lẽ đi thẳng ra ngoài vòng proxy. Xem thêm các loại proxy và không rò rỉ khi proxy lỗi. Bạn cũng có thể dùng quy tắc chia tuyến để chỉ một số trang hoặc ứng dụng đi qua tuyến hỗ trợ UDP.
Câu hỏi thường gặp
Chặn QUIC có làm hỏng ứng dụng nào không?
Trình duyệt và hầu hết ứng dụng đều tự chuyển sang TCP khi QUIC không dùng được, vì nhiều mạng công ty và Wi-Fi công cộng vốn đã chặn UDP. Nếu một ứng dụng chỉ chạy được bằng QUIC, bạn có thể tắt tuỳ chọn hoặc cho nó đi qua tuyến hỗ trợ UDP.
Game và cuộc gọi video có bị ảnh hưởng không?
Trên tuyến đi thẳng thì không. Ở đó chỉ UDP cổng 443, cổng QUIC dùng cho web, bị chặn. Game và cuộc gọi thường dùng các cổng UDP khác và vẫn đi bình thường. Trên tuyến proxy không chở được UDP (HTTP, HTTPS, hoặc SOCKS5 chưa bật UDP), mọi UDP trừ DNS đều bị chặn để không có gì lọt ra ngoài proxy. Ứng dụng nào dùng được TCP sẽ chuyển sang TCP. Nếu cần game và cuộc gọi qua UDP, hãy dùng Shadowsocks, SOCKS5 có UDP hoặc WireGuard.
Vì sao không tách gói QUIC như với TCP?
Các kỹ thuật làm giả hoặc chia gói QUIC cần can thiệp sâu ở tầng gói tin, điều mà API VPN trên điện thoại không cho phép một cách đáng tin cậy. Chặn QUIC để quay về TCP là cách đơn giản và ổn định trên mọi nền tảng.
Làm sao biết trình duyệt đang dùng HTTP/3 hay không?
Mở công cụ dành cho nhà phát triển, vào tab Network và bật cột Protocol. h3 là HTTP/3, h2 là HTTP/2 qua TCP. Khi GreenTunnel chặn QUIC, bạn sẽ thấy h2.