Kiểm tra rò rỉ WebRTC: VPN của bạn có làm lộ địa chỉ IP thật?
Công cụ kiểm tra rò rỉ WebRTC này thực hiện cơ chế kết nối ngang hàng (peer-to-peer) hệt như các đoạn mã theo dõi người dùng, giúp bạn xác định xem có bất kỳ địa chỉ nào bị thu thập là IP thật mà VPN đáng lẽ phải che giấu hay không. Công cụ mở một kết nối RTCPeerConnection với kênh dữ liệu trống — không dùng camera, không micro, không hiện yêu cầu cấp quyền —, gửi truy vấn đến hai máy chủ STUN công cộng để kiểm tra góc nhìn từ bên ngoài và so sánh trực tiếp với IP gửi yêu cầu HTTPS thông thường của bạn.
Cách đọc danh sách ứng viên ICE hiển thị trong bài kiểm tra
Giao thức WebRTC cần phát hiện mọi đường dẫn mạng mà thiết bị khác có thể liên lạc với bạn, do đó nó tạo ra danh sách các ứng viên ICE (ICE candidates). Trang này hiển thị danh sách thô với loại địa chỉ và giao thức truyền tải tương ứng, sau đó tự động dừng quét sau 5 giây.
Phía trên danh sách là địa chỉ IPv4 và IPv6 tiêu chuẩn nhận diện qua giao thức HTTP — hoàn toàn trùng khớp với kết quả trên trang địa chỉ IP của tôi là gì. Đây là mốc đối chiếu cơ bản; kết luận cuối cùng dựa trên sự sai lệch giữa hai nguồn dữ liệu này.
host, srflx và relay — ý nghĩa các nhãn phân loại
- Nội bộ (host) — địa chỉ thuộc về card mạng trên máy bạn: một IP mạng LAN như
192.168.1.14hoặc một tên miền.localngẫu nhiên. - Công cộng (qua STUN) — ứng viên
srflx, tức địa chỉ công cộng mà máy chủ STUN nhận diện được khi gói tin đến. Đây là thông số quan trọng nhất khi đánh giá VPN. - Chuyển tiếp (TURN) — lưu lượng định tuyến qua máy chủ trung gian; do bài kiểm tra chỉ dùng STUN nên dòng relay rất hiếm khi xuất hiện.
Ý nghĩa của từng kết quả đánh giá
- Phát hiện rò rỉ — ứng viên công cộng STUN khác với IP HTTP của bạn; khi bật VPN, điều này chứng tỏ gói tin WebRTC đã đi vòng ngoài đường hầm bảo mật.
- Không rò rỉ — cả hai địa chỉ hoàn toàn trùng khớp.
- Lộ IP nội bộ — hiển thị trực tiếp địa chỉ LAN riêng thay vì tên mDNS ẩn danh.
- Được bảo vệ — địa chỉ nội bộ của bạn được che chắn an toàn dưới tên máy chủ
.localngẫu nhiên. - Không có IP công cộng / WebRTC bị chặn — không thể kết nối tới STUN hoặc WebRTC đã bị tắt trên trình duyệt.
Vì sao WebRTC lại làm rò rỉ IP mà VPN đang cố che giấu
WebRTC được tạo ra nhằm hỗ trợ gọi video, đàm thoại thoại và truyền tệp tin trực tiếp giữa các trình duyệt. Để kết nối hai thiết bị nằm sau các bộ định tuyến độc lập, giao thức cần vượt qua NAT, đòi hỏi câu trả lời từ bên ngoài: kết nối này thực chất xuất phát từ địa chỉ nào? Máy chủ STUN trả lời câu hỏi đó, và bất kỳ trang web nào cũng có thể kích hoạt quá trình này ngầm qua JavaScript.
Lỗ hổng xuất hiện khi bạn muốn ẩn danh. VPN định tuyến lưu lượng web HTTP thông thường qua đường hầm mã hóa, nhưng WebRTC lại phát các gói tin UDP riêng tới STUN. Khi gặp chế độ phân chia đường hầm (split-tunneling), các gói UDP này đi theo đường truyền mạng mặc định của nhà mạng. Các tiện ích mở rộng VPN trên trình duyệt là ví dụ điển hình: chúng chỉ đóng vai trò proxy cho yêu cầu web mà không gom gói UDP của hệ thống — dẫn đến kết quả trái ngược với một bài kiểm tra VPN qua HTTP.
Tên máy chủ .local ngẫu nhiên không phải là lỗi rò rỉ
Nếu ứng viên host hiển thị một chuỗi như 7b3f9c21-4d0a-48e7.local thay vì 192.168.1.14, hệ thống đang hoạt động hoàn hảo. Đây là cơ chế ẩn danh mDNS: trình duyệt tạo ra một tên DNS multicast dùng một lần cho card mạng và gửi đi thay thế cho IP mạng LAN. Chrome, Edge, Brave, Firefox và Safari đều bật tính năng này theo mặc định — uBlock Origin đã gỡ bỏ tùy chọn WebRTC riêng từ bản v1.38 vì trình duyệt đã tích hợp sẵn. Cần ghi nhớ: cơ chế này chỉ bảo vệ IP nội bộ (không ngăn được rò rỉ IP công cộng qua VPN), và trang web được cấp quyền micro hoặc camera vẫn có thể thấy IP LAN thực tế.
Cách khắc phục rò rỉ WebRTC trên Chrome và Edge
Cả hai trình duyệt này đều không có nút bật/tắt WebRTC đơn giản, và các tùy chọn trong chrome://flags hay edge://flags không còn vô hiệu hóa được WebRTC. Có ba phương án xử lý hiệu quả trong thực tế:
- Sử dụng phần mềm VPN toàn hệ thống (Full-Tunnel) thay vì tiện ích mở rộng. Khi toàn bộ gói tin UDP đi qua đường hầm mã hóa, STUN chỉ có thể nhận diện địa chỉ máy chủ VPN.
- Cấu hình chính sách xử lý IP bằng tiện ích mở rộng. Các tiện ích như WebRTC Leak Prevent sẽ chuyển
chrome.privacy.network.webRTCIPHandlingPolicysangdefault_public_interface_onlyhoặcdisable_non_proxied_udpđể chặn việc lộ IP nội bộ. - Thiết lập chính sách hệ thống (Registry/GPO). Trên Windows, gán chính sách
WebRtcIPHandlingcho Chrome hoặcWebRtcLocalhostIpHandlingtạiSOFTWARE\Policies\Microsoft\EdgethànhAllowPublicInterfaceOnlyhoặcDisableNonProxiedUdp. Cần khởi động lại trình duyệt; kiểm tra tạiedge://policy.
Cách vô hiệu hóa hoàn toàn WebRTC trên Firefox
Firefox là trình duyệt máy tính phổ biến duy nhất giữ lại công tắc tắt triệt để. Nhập about:config vào thanh địa chỉ, chấp nhận cảnh báo, tìm từ khóa media.peerconnection.enabled và nhấp đúp để đổi giá trị thành false. WebRTC sẽ tắt hoàn toàn trên mọi trang web mà không cần khởi động lại, và bài kiểm tra này sẽ báo bị chặn.
Đây là giải pháp triệt để: các cuộc họp trực tuyến trên nền web như Meet, Teams, Discord và Zoom sẽ không thể kết nối. Để duy trì gọi điện, hãy giữ tùy chọn trên là true và đổi media.peerconnection.ice.default_address_only thành true — Firefox sẽ chỉ cung cấp địa chỉ cổng mặc định (tức từ VPN).
Cách ngăn chặn rò rỉ WebRTC trong trình duyệt Brave
Brave cung cấp sẵn bảng điều khiển mà Chrome giấu kín. Truy cập brave://settings/privacy và tìm mục WebRTC IP handling policy. Hai tùy chọn quan trọng khi dùng VPN hoặc proxy:
- Default — quét toàn bộ giao diện mạng và có thể để lộ IP nội bộ.
- Default Public and Private Interfaces — sử dụng tuyến mặc định nhưng vẫn hiển thị IP riêng tương ứng.
- Default Public Interface Only — chỉ dùng tuyến mặc định, giấu kín địa chỉ nội bộ; các cuộc gọi thoại hoạt động tốt. Đây là lựa chọn tối ưu hàng ngày.
- Disable Non-Proxied UDP — buộc chạy TCP qua proxy trừ khi proxy hỗ trợ UDP. Cài đặt nghiêm ngặt nhất (mặc định trong cửa sổ Tor), nhưng có thể làm gián đoạn cuộc gọi P2P.
Lưu ý đối với Safari, iPhone và thiết bị Android
Trên thiết bị di động và môi trường WebKit, các chỉ dẫn thông thường cho máy tính để bàn thường không còn áp dụng được.
Safari trên hệ điều hành macOS
Safari hiện đại không còn công tắc tắt vĩnh viễn toàn cục. Các mục trong menu Phát triển chỉ có hiệu lực trong phiên làm việc. Do Safari mặc định ẩn IP nội bộ sau mDNS cho đến khi bạn cấp quyền camera/micro, giải pháp hữu hiệu nhất là quản lý quyền trong Safari > Cài đặt > Trang web kết hợp với một ứng dụng VPN toàn hệ thống.
iPhone và iPad (iOS/iPadOS)
Mọi trình duyệt trên iOS đều buộc phải sử dụng nhân WebKit. Chrome hay Firefox trên iPhone đều không có about:config hay tiện ích mở rộng; các trình chặn nội dung không thể lọc WebRTC. Để chặn rò rỉ, hãy cài đặt hồ sơ VPN trong Cài đặt > VPN hỗ trợ gom toàn bộ lưu lượng UDP và kiểm tra lại trên Safari.
Hệ điều hành Android
Chrome trên Android không có cờ WebRTC hay tiện ích mở rộng. Brave trên Android cung cấp đầy đủ danh mục chính sách xử lý IP trong phần cài đặt bảo mật. Firefox cho Android chỉ cho phép vào about:config trên bản Beta hoặc Nightly. Phương án toàn diện là bật VPN luôn bật và Chặn kết nối không có VPN trong cài đặt máy.
Những giới hạn mà bài kiểm tra này không thể phát hiện
Trang web này chỉ ghi nhận những thông tin mà trình duyệt của bạn cung cấp cho đoạn mã thực thi tại đây. Nó không thể phát hiện các lỗi rò rỉ ở tầng hệ điều hành — như kết nối hệ thống đi sai luồng hoặc lộ đường truyền IPv6 mà VPN không hỗ trợ — và không kiểm tra rò rỉ truy vấn DNS. Nếu tường lửa chặn STUN, màn hình sẽ báo „Không có IP công cộng“, nghĩa là truy vấn không có phản hồi. Ngoài ra, IP chỉ là một trong nhiều dấu hiệu định danh: thông số màn hình, phông chữ và tiêu đề liệt kê tại trang Trình duyệt của tôi là gì vẫn có thể nhận diện thiết bị của bạn ngay cả khi đang bật VPN.
Câu hỏi thường gặp (FAQ)
WebRTC có làm lộ IP thật ngay cả khi tôi đang kết nối VPN không?
Có, trường hợp này rất phổ biến. WebRTC tự gửi các gói tin UDP riêng tới máy chủ STUN. Khi dùng VPN dạng tiện ích trình duyệt hoặc chia luồng tunnel, các gói UDP này đi tắt qua mạng nhà mạng thông thường thay vì qua VPN. Máy chủ STUN nhận biết IP thật của bạn và trang web có thể đọc được bằng JavaScript. Ứng dụng VPN toàn hệ thống sẽ khắc phục triệt để lỗi này.
Có cách nào để tắt hẳn WebRTC trên trình duyệt Edge không?
Không thể tắt qua cài đặt thông thường: Edge không có công tắc tắt và tùy chọn cũ trong about:flags đã bị xóa. Trên Windows, bạn có thể thiết lập chính sách WebRtcLocalhostIpHandling thành AllowPublicInterfaceOnly hoặc DisableNonProxiedUdp trong Registry tại SOFTWARE\Policies\Microsoft\Edge. Khởi động lại trình duyệt và kiểm tra tại edge://policy.
Nơi tắt WebRTC và PeerConnection trong Firefox ở đâu?
Trong about:config: tìm kiếm media.peerconnection.enabled và nhấp đúp để đổi thành false. Thao tác này tắt hoàn toàn WebRTC mà không cần khởi động lại, nhưng các ứng dụng gọi video trên web sẽ ngừng hoạt động. Nếu muốn tiếp tục gọi điện, hãy để mục này là true và đổi media.peerconnection.ice.default_address_only thành true.
Làm thế nào để tắt WebRTC vĩnh viễn trên Safari?
Trên các phiên bản Safari mới, bạn không thể tắt vĩnh viễn tính năng này. Tùy chọn thử nghiệm trước đây đã bị loại bỏ và menu Phát triển sẽ bị đặt lại khi đóng trình duyệt. Do Safari mặc định che IP nội bộ bằng mDNS, giải pháp tốt nhất là quản lý quyền trong Safari > Cài đặt > Trang web và dùng ứng dụng VPN toàn hệ thống.
Thiết lập nào tối ưu nhất để chặn rò rỉ WebRTC trên Brave?
Mở brave://settings/privacy và đặt WebRTC IP handling policy thành „Disable Non-Proxied UDP“ khi đang dùng VPN hoặc proxy. WebRTC sẽ truyền TCP qua proxy và STUN không bao giờ thấy IP thật. Tùy chọn „Default Public Interface Only“ là giải pháp cân bằng giúp duy trì cuộc gọi thoại bình thường.
Tôi nên chọn chính sách xử lý IP WebRTC nào?
„Default Public Interface Only“ phù hợp với hầu hết người dùng: giấu toàn bộ card mạng nội bộ, duy trì UDP và giúp các cuộc gọi video hoạt động trơn tru. Chỉ chọn „Disable Non-Proxied UDP“ khi cần ẩn danh tuyệt đối qua proxy/VPN. Các tùy chọn mặc định vẫn để lộ địa chỉ nội bộ của bạn.
Tại sao địa chỉ IP riêng của tôi lại bị lộ công khai qua WebRTC?
Trên các trình duyệt hiện đại, điều này không còn diễn ra công khai. Chrome, Edge, Brave, Firefox và Safari thay thế IP nội bộ bằng tên máy chủ mDNS ngẫu nhiên kết thúc bằng .local. Trang web chỉ thấy tên đó thay vì 192.168.1.14. Nếu kết quả hiện IP nội bộ thô, lớp bảo vệ mDNS đang bị tắt và cần kiểm tra lại.