Rò rỉ WebRTC
Kiểm tra rò rỉ WebRTC: cuộc gọi trên trình duyệt để lộ gì về địa chỉ IP của bạn
Thuộc chủ đề: VoIP có an toàn không? Cuộc gọi qua trình duyệt bảo vệ gì và để lộ gì
Tóm tắt
Công cụ kiểm tra rò rỉ WebRTC liệt kê mọi địa chỉ IP mà trình duyệt giao cho trang web qua WebRTC, để bạn phát hiện địa chỉ mình muốn giấu, thường là địa chỉ của nhà cung cấp internet khi đang bật VPN [1]. Cuộc gọi từ trình duyệt đến số điện thoại để lộ IP của bạn cho dịch vụ gọi điện, không phải cho người bạn gọi, vì người đó chỉ nhận được số hiển thị [2]. Đây là một trong các bước kiểm tra quyền riêng tư và an toàn tôi khuyên làm trước khi gọi từ trình duyệt.
Thông tin chính
- Các quy tắc WebRTC của IETF cho biết VPN chia tách đường truyền (split tunnel) có thể để WebRTC phát hiện địa chỉ công khai của nhà cung cấp internet bên cạnh địa chỉ của VPN [1]. Kiểm tra ngày .
- Trong lần kiểm tra cục bộ của tôi trên Chrome 156, trang web chưa được cấp quyền micro chỉ thấy máy tính của tôi dưới dạng một tên .local ngẫu nhiên; khi cho phép micro, trang nhận được địa chỉ cục bộ thật của tôi [3][1]. Kiểm tra ngày .
- Messenger cho biết cuộc gọi 1:1 chia sẻ địa chỉ IP của bạn với thiết bị của người kia [4]; còn cài đặt Bảo vệ địa chỉ IP trong cuộc gọi (Protect IP address in calls) của WhatsApp thì chuyển tiếp cuộc gọi qua máy chủ của họ [5]. Kiểm tra ngày .
Rò rỉ WebRTC là gì?
Trước một cuộc gọi WebRTC, trình duyệt thu thập các đường kết nối mạng khả dĩ, gọi là ICE candidate, và giao chúng cho trang web để chuyển sang phía bên kia. Mỗi candidate mang một địa chỉ IP, hoặc một tên .local ngẫu nhiên thay cho địa chỉ cục bộ đã được ẩn. Một trang web thông thường chỉ thấy địa chỉ công khai nơi yêu cầu của bạn xuất phát; qua WebRTC, trang có thể biết nhiều hơn [1]. Rò rỉ là bất kỳ địa chỉ nào trong danh sách đó mà bạn không định chia sẻ.
Phần còn lại của cuộc gọi đi như thế nào có trong bài WebRTC, SIP và mạng điện thoại; với chuyện rò rỉ, chỉ danh sách candidate là đáng quan tâm. MDN lưu ý rằng các địa chỉ trong danh sách này luôn hiển thị với trang web [6].
| Loại candidate | Địa chỉ hiển thị | Rủi ro về quyền riêng tư |
|---|---|---|
| host | Địa chỉ của thiết bị trong mạng nội bộ, hoặc một tên ngẫu nhiên kết thúc bằng .local nếu trình duyệt ẩn địa chỉ [7][3] | Thấp hơn địa chỉ công khai, nhưng IETF coi địa chỉ IPv4 riêng là một bề mặt lấy dấu vân tay (fingerprinting) khá đáng kể [1] |
| srflx (server reflexive) | Địa chỉ công khai mà router hoặc VPN của bạn hiển thị với máy chủ STUN [7] | Cao nếu đó là địa chỉ của nhà cung cấp internet trong khi VPN đang bật [1] |
| relay | Một địa chỉ trên máy chủ TURN chuyển tiếp luồng âm thanh, hình ảnh [7] | Thấp: phía bên kia thấy địa chỉ của máy chủ chuyển tiếp, không phải của bạn [6]; nhưng bên vận hành máy chủ đó vẫn thấy bạn |
IETF coi trường hợp VPN là nghiêm trọng nhất, vì có người dùng VPN để ẩn danh [1]. Hai trường hợp còn lại là địa chỉ riêng của bạn và proxy bị các bước kiểm tra của WebRTC đi vòng qua, làm lộ địa chỉ công khai thật của bạn [1].
Gọi qua trình duyệt có làm lộ địa chỉ IP không?
Với dịch vụ gọi điện thì có: mọi trang web đều thấy địa chỉ công khai của bạn [1], và cuộc gọi còn mở thêm một kết nối media đến máy chủ của dịch vụ. Với người bạn gọi qua số cố định hoặc di động thì không: cuộc gọi rời internet tại cổng kết nối (gateway) của nhà cung cấp [8], và mạng điện thoại chỉ chuyển đi số của người gọi, không chuyển địa chỉ IP [2]. Cuộc gọi giữa ứng dụng với nhau có thể kết nối trực tiếp hai thiết bị.
| Loại cuộc gọi | Dịch vụ | Người bạn gọi |
|---|---|---|
| Từ trình duyệt đến số điện thoại (Google Voice, TwinPhone, Yolla) | Có: dịch vụ vận hành kết nối media | Không: họ thấy số hiển thị [2] |
| Trình gọi miễn phí trên web (Call2Friends, Globfone) | Có: Call2Friends giới hạn cuộc gọi miễn phí theo địa chỉ IP, và chính sách quyền riêng tư của Globfone liệt kê địa chỉ IP trong số dữ liệu kỹ thuật và nhật ký mà họ xử lý [9][10] | Không: họ thấy số hiển thị |
| Messenger, cuộc gọi 1:1 | Có | Có: Meta cho biết IP của bạn được chia sẻ với thiết bị bên kia [4] |
| Có | Có thể, trừ khi bật Bảo vệ địa chỉ IP trong cuộc gọi; cuộc gọi nhóm luôn được chuyển tiếp [5] | |
| Telegram | Có | Có thể: thông báo năm 2017 của Telegram nói cuộc gọi đi trực tiếp giữa hai thiết bị (peer-to-peer) bất cứ khi nào có thể [11] |
Với cuộc gọi đến số thật, câu hỏi là dịch vụ biết và lưu giữ những gì; còn người bạn gọi thấy gì thì có trong bài số nào hiện lên khi bạn gọi từ trình duyệt.
Cách kiểm tra rò rỉ WebRTC
Trang kiểm tra rò rỉ làm đúng việc mà trình quay số làm trước cuộc gọi: mở một kết nối WebRTC, hỏi máy chủ STUN xem nó thấy địa chỉ công khai nào, rồi in mọi candidate bên cạnh địa chỉ mà trang thấy qua HTTP thông thường. Hãy chạy thử trên từng trình duyệt bạn dùng để gọi, lần đầu tắt VPN, sau đó bật VPN.
- Tắt VPN: mở một trang kiểm tra rò rỉ, chẳng hạn WebRTC Leak Test của BrowserLeaks. "Your Remote IP" ở trên cùng và "Public IP Address" trong mục "Your WebRTC IP" phải trùng nhau.
- Bật VPN: tải lại trang. "Your Remote IP" lúc này phải hiển thị địa chỉ của VPN.
- Nếu mục WebRTC vẫn liệt kê địa chỉ của nhà cung cấp internet, WebRTC đang đi vòng qua đường hầm VPN [1].
- Một mục cục bộ kết thúc bằng .local nghĩa là địa chỉ đã được ẩn [3]; còn một địa chỉ thô bắt đầu bằng 192.168. hoặc 10. thì chưa được ẩn.
- Nếu trang có bước kiểm tra micro, hãy cho phép rồi kiểm tra lại: trình quay số cần quyền dùng micro, và quyền đó có thể mở khóa thêm địa chỉ [1]. Sau đó, hãy gỡ quyền này trong phần cài đặt trang web [12].
Điều gì thay đổi trong Chrome khi cho phép micro
Ngày , tôi mở một trang kiểm tra cục bộ trên Chrome 156 chạy trên Mac, không dùng máy chủ STUN, nên không có địa chỉ nào được gửi ra máy chủ bên ngoài. Khi chưa có quyền micro, trang chỉ thấy một host candidate mang tên là một chuỗi ngẫu nhiên kết thúc bằng .local [3]. Khi cho phép micro, trang nhận được địa chỉ IPv4 cục bộ thật của tôi.
Điều đó khớp với tiêu chuẩn, vốn chỉ cho phép lộ toàn bộ danh sách địa chỉ khi có sự đồng ý, chẳng hạn quyền dùng micro [1]; WebKit, bộ máy của Safari, đã mô tả cùng quy tắc này năm 2017 [13]. Vì vậy, trình quay số mà bạn cấp quyền có thể thấy địa chỉ cục bộ của bạn: một rủi ro nhỏ hơn so với địa chỉ công khai [1].
Cài đặt trình duyệt giúp hạn chế rò rỉ WebRTC
Brave có tài liệu về một cài đặt IP cho WebRTC dành cho người dùng. Google mô tả các tùy chọn của Chrome dành cho tiện ích mở rộng và quản trị viên, còn Microsoft mô tả tùy chọn của Edge dưới dạng chính sách quản trị. Firefox ẩn địa chỉ cục bộ theo mặc định và có công tắc tắt trong about:config. Có một quy tắc đúng ở mọi nơi: tắt WebRTC cũng làm trình quay số trên trình duyệt ngừng hoạt động, vì WebRTC là thứ truyền tải cuộc gọi [14].
| Trình duyệt | Tùy chọn | Thay đổi gì | Ảnh hưởng đến cuộc gọi trên trình duyệt |
|---|---|---|---|
| Brave | WebRTC IP handling policy trong cài đặt quyền riêng tư, theo wiki của Brave (sửa lần cuối năm 2018) [15] | Giá trị Default Public Interface Only không để lộ địa chỉ cục bộ nào [15] | Dữ liệu cuộc gọi có thể chuyển sang đi qua máy chủ chuyển tiếp [1] |
| Chrome | Tiện ích mở rộng có thể đặt WebRTC IP handling policy [16]; quản trị viên có thể đặt chính sách WebRtcIPHandling [17] | Tùy giá trị, ngừng dùng địa chỉ riêng hoặc chỉ gửi media qua proxy [17] | Các giá trị chỉ dùng proxy có thể đẩy âm thanh sang TCP, điều mà IETF cho là làm giảm chất lượng [1] |
| Edge | Chính sách quản trị WebRtcLocalhostIpHandling [18] | Hai trong số các giá trị của chính sách này ngừng để lộ địa chỉ IP cục bộ [18] | Như trên Chrome |
| Firefox | Ẩn địa chỉ cục bộ theo mặc định [19]; media.peerconnection.enabled trong about:config [20] | Đặt tùy chọn đó thành false sẽ tắt WebRTC | Trình quay số trên trình duyệt ngừng hoạt động |
| Safari | Quy tắc tích hợp sẵn | Trang không có quyền dùng micro hoặc camera không nhận được địa chỉ host nào, theo mô tả của WebKit năm 2017 [13] | Không có |
VPN thay đổi gì với cuộc gọi trên trình duyệt
VPN đưa toàn bộ lưu lượng qua đường hầm của nó, kể cả WebRTC, sẽ cho dịch vụ gọi điện thấy địa chỉ của VPN thay vì địa chỉ của bạn. VPN chia tách đường truyền (split tunnel) có thể vẫn để WebRTC tìm ra địa chỉ của nhà cung cấp internet [1], nên mới cần kiểm tra rò rỉ khi đang bật VPN. VPN cũng có những tác dụng phụ với việc gọi điện.
- Một số dịch vụ hạn chế VPN: điều khoản của TextNow cho biết họ có thể giới hạn hoặc hạn chế việc dùng VPN [21].
- Một số trình gọi miễn phí chia suất gọi miễn phí theo địa chỉ IP, như Call2Friends [9], nên khi dùng VPN, bạn có thể phải chia suất đó với những người dùng khác có cùng địa chỉ thoát.
- Ép media đi qua proxy không truyền được UDP sẽ đẩy âm thanh sang TCP, điều mà IETF cho là làm giảm chất lượng media [1].
- Dịch vụ vẫn thấy tài khoản và lịch sử cuộc gọi của bạn; Google chẳng hạn có thể ghi lại số điện thoại, thời điểm và thời lượng cuộc gọi [22].
Cách giữ kín địa chỉ IP khi gọi
Hãy chọn cách xử lý theo loại cuộc gọi. Với cuộc gọi đến số điện thoại, người bạn gọi không nhận được IP của bạn, nên hãy chọn dịch vụ bạn đủ tin để giao IP và kiểm tra lại VPN. Với cuộc gọi giữa ứng dụng với nhau, thiết bị bên kia có thể kết nối thẳng đến thiết bị của bạn, nên hãy dùng cài đặt chuyển tiếp của ứng dụng nếu có.
- Cuộc gọi trên trình duyệt: chạy kiểm tra rò rỉ khi đang bật VPN; trên Brave, chọn Default Public Interface Only [15].
- Micro: với trình quay số chỉ dùng một lần, hãy cấp quyền bằng "Cho phép lần này" [12]; trong lần kiểm tra Chrome của tôi, trang giữ quyền đó có thể thấy địa chỉ cục bộ.
- WhatsApp: bật Bảo vệ địa chỉ IP trong cuộc gọi. Trang trợ giúp đề cập Android, iOS và Mac, không đề cập bản web, và cảnh báo rằng cuộc gọi được chuyển tiếp có thể giảm chất lượng đôi chút [5].
Câu hỏi thường gặp
Kiểm tra rò rỉ WebRTC là gì?
Kiểm tra rò rỉ WebRTC là một trang web chạy bước thiết lập kết nối mà cuộc gọi trên trình duyệt sử dụng và liệt kê mọi địa chỉ IP trình duyệt đưa ra, bên cạnh địa chỉ mà trang thấy qua HTTP thông thường. Nếu danh sách có địa chỉ của nhà cung cấp internet trong khi VPN đang bật, WebRTC đang đi vòng qua đường hầm [1]; một tên .local ngẫu nhiên nghĩa là địa chỉ cục bộ của bạn đã được ẩn [3].
Người tôi gọi từ trình duyệt có thấy địa chỉ IP của tôi không?
Không, nếu là cuộc gọi đến số cố định hoặc di động. Nhà cung cấp chuyển âm thanh từ trình duyệt thành cuộc gọi điện thoại tại cổng kết nối của họ [23], và mạng điện thoại chỉ chuyển đi số của người gọi, không chuyển địa chỉ IP [2]. Cuộc gọi giữa ứng dụng thì khác: Messenger cho biết cuộc gọi 1:1 chia sẻ IP của bạn với thiết bị của người kia [4].
VPN có chặn được rò rỉ WebRTC không?
VPN đưa toàn bộ lưu lượng, kể cả WebRTC, qua đường hầm thì có. VPN chia tách đường truyền thì có thể không, vì WebRTC có thể phát hiện địa chỉ công khai của nhà cung cấp internet bên cạnh địa chỉ của VPN [1]. Cách duy nhất để biết là chạy kiểm tra rò rỉ khi VPN đang kết nối, trên từng trình duyệt bạn dùng, và lặp lại sau mỗi lần cập nhật.
Lộ địa chỉ IP cục bộ có nguy hiểm không?
Ít hơn lộ địa chỉ công khai. Một địa chỉ riêng như 192.168.1.20 không cho biết bạn đang ở đâu, nhưng IETF coi địa chỉ IPv4 riêng là một bề mặt lấy dấu vân tay khá đáng kể, có thể liên kết phiên duyệt web thường và phiên duyệt web riêng tư trên cùng một thiết bị [1]. Firefox ẩn địa chỉ cục bộ theo mặc định [19], Safari ẩn chúng với các trang không có quyền dùng micro hoặc camera [13], và Chrome cũng vậy trong lần kiểm tra của tôi.
Chế độ ẩn danh hay duyệt web riêng tư có chặn được rò rỉ WebRTC không?
Không. IETF lưu ý rằng địa chỉ riêng bị lộ qua WebRTC có thể đóng vai trò mã nhận dạng, cho trang web biết một cửa sổ thường và một cửa sổ duyệt riêng tư đang ở trên cùng một thiết bị [1], nên chỉ dùng chế độ riêng tư thì không ẩn được địa chỉ đó. Hãy dùng các cài đặt trình duyệt ở trên, rồi chạy kiểm tra rò rỉ cả trong cửa sổ riêng tư.
Tiện ích chặn rò rỉ WebRTC có hiệu quả không?
Một phần. Trên Chrome, tiện ích mở rộng có thể đặt WebRTC IP handling policy của trình duyệt, mà Google mô tả là sự đánh đổi giữa hiệu năng media và lượng thông tin địa chỉ cục bộ bị lộ [16]. Tùy giá trị, chính sách này ẩn địa chỉ cục bộ hoặc ép media đi qua proxy, có thể đẩy âm thanh sang TCP và làm giảm chất lượng [1]. Hãy chạy kiểm tra rò rỉ sau khi cài tiện ích để xác nhận thay đổi.
Làm sao tắt WebRTC trong Firefox?
Gõ about:config vào thanh địa chỉ, tìm media.peerconnection.enabled và đặt thành false. Mã nguồn của Mozilla mô tả tùy chọn này là công tắc của RTCPeerConnection, và tắt nó cũng khiến các trang mất quyền truy cập API micro [20]. Khi đó mọi trình quay số trên trình duyệt đều ngừng hoạt động, nên phần lớn người gọi nên giữ mặc định của Firefox, vốn đã ẩn địa chỉ cục bộ [19].
Làm sao chặn rò rỉ WebRTC trên Chrome?
Bằng tiện ích mở rộng hoặc chính sách quản trị, vì Google chỉ ghi tài liệu về cách kiểm soát địa chỉ WebRTC của Chrome cho hai cách này. Tiện ích mở rộng có thể đặt chính sách xử lý IP của WebRTC [16], còn quản trị viên có thể đặt WebRtcIPHandling, với giá trị default_public_interface_only ngăn WebRTC dùng địa chỉ nội bộ [17]. Khi tôi kiểm tra trên Chrome, một trang chưa có quyền dùng micro vốn chỉ thấy một tên .local ngẫu nhiên [3]. Khi dùng VPN, cách khắc phục thực sự là một đường hầm mang toàn bộ lưu lượng [1]. Bất cứ thứ gì chặn hẳn WebRTC cũng sẽ chặn luôn cuộc gọi trên trình duyệt [14].
Trang web có thấy IP của tôi qua WebRTC mà không cần hỏi không?
Địa chỉ công khai của bạn thì có, nhưng đằng nào trang web cũng thấy địa chỉ đó: Safari chẳng hạn chỉ cho các trang chưa có quyền dùng micro thấy những địa chỉ mà trang web vốn đã thu thập được [13]. Vấn đề nằm ở proxy của trình duyệt. Nếu được phép truy cập internet trực tiếp, các bước kiểm tra STUN của WebRTC có thể đi vòng qua proxy và để lộ địa chỉ công khai thật của bạn [1]. Địa chỉ nội bộ được bảo vệ tốt hơn: tiêu chuẩn chỉ cho lộ toàn bộ danh sách khi có sự đồng ý như quyền dùng micro [1], và khi tôi kiểm tra trên Chrome, một trang chưa có quyền đó chỉ thấy một tên .local ngẫu nhiên [3].
Hỏi AI về nghiên cứu này
Mỗi nút mở trợ lý AI trong tab mới và yêu cầu nó tóm tắt trang này, kèm liên kết đến trang làm nguồn.
Nguồn tham khảo
- RFC 8828: WebRTC IP Address Handling Requirements · IETF (RFC Editor) · kiểm tra ngày 1 tháng 11, 2026
- 47 CFR 64.1601 -- Delivery requirements and privacy restrictions | eCFR · US Code of Federal Regulations (eCFR) · kiểm tra ngày 1 tháng 11, 2026
- Using Multicast DNS to protect privacy when exposing ICE candidates (draft-ietf-mmusic-mdns-ice-candidates) · IETF (Internet-Draft, work in progress) · kiểm tra ngày 1 tháng 11, 2026
- Voice call someone or a group on Messenger - Messenger Help Center (Computer) · kiểm tra ngày 1 tháng 11, 2026
- How to protect your IP address on WhatsApp calls | WhatsApp Help Center · WhatsApp · kiểm tra ngày 1 tháng 11, 2026
- RTCIceCandidate: address property - Web APIs | MDN · MDN Web Docs (Mozilla) · kiểm tra ngày 1 tháng 11, 2026
- RTCIceCandidate: type property - Web APIs | MDN · MDN Web Docs (Mozilla) · kiểm tra ngày 1 tháng 11, 2026
- Make calls | Sonetel help · kiểm tra ngày 1 tháng 11, 2026
- Free call | Call2Friends - Online call · kiểm tra ngày 1 tháng 11, 2026
- Privacy Policy | Globfone · kiểm tra ngày 1 tháng 11, 2026
- Voice Calls: Secure, Crystal-Clear, AI-Powered | Telegram Blog (30 March 2017) · Telegram · kiểm tra ngày 1 tháng 11, 2026
- Use your camera and microphone in Chrome - Computer - Google Chrome Help · Google · kiểm tra ngày 1 tháng 11, 2026
- A Closer Look Into WebRTC | WebKit (3 July 2017) · WebKit (Apple) · kiểm tra ngày 1 tháng 11, 2026
- WebRTC API - Web APIs | MDN · MDN Web Docs (Mozilla) · kiểm tra ngày 1 tháng 11, 2026
- WebRTC Custom Settings · brave/brave-browser Wiki · Brave Software (official GitHub wiki) · kiểm tra ngày 1 tháng 11, 2026
- chrome.privacy | API | Chrome for Developers · Google (Chrome for Developers) · kiểm tra ngày 1 tháng 11, 2026
- Chrome Enterprise policy list: WebRtcIPHandling (WebRTC IP handling) · Google (Chrome Enterprise) · kiểm tra ngày 1 tháng 11, 2026
- Microsoft Edge Browser Policy Documentation WebRtcLocalhostIpHandling | Microsoft Learn · Microsoft · kiểm tra ngày 1 tháng 11, 2026
- Firefox source: modules/libpref/init/all.js (mozilla-firefox/firefox) · Mozilla (official Firefox source repository) · kiểm tra ngày 1 tháng 11, 2026
- Firefox source: modules/libpref/init/StaticPrefList.yaml (mozilla-firefox/firefox) · Mozilla (official Firefox source repository) · kiểm tra ngày 1 tháng 11, 2026
- Terms of Use – TextNow · kiểm tra ngày 1 tháng 11, 2026
- Privacy Policy – Privacy & Terms – Google · Google · kiểm tra ngày 1 tháng 11, 2026
- Call From Your Browser Without a SIM Card - TwinPhone · kiểm tra ngày 1 tháng 11, 2026