Rò rỉ WebRTC trên Chrome: cách kiểm tra và chặn khi bạn dùng proxy
Đội ngũ AxioAPI · Đăng ngày
Rò rỉ WebRTC xảy ra khi một trang web dùng WebRTC để biết địa chỉ IP thật của bạn dù lưu lượng trình duyệt đã đi qua proxy. Proxy che địa chỉ ở các yêu cầu trang thông thường, nhưng WebRTC có thể mở kết nối UDP riêng mà proxy HTTP không chuyển. Bạn kiểm tra được trong khoảng một phút và với Chrome có thể hạn chế bằng chính sách xử lý IP của WebRTC.

WebRTC là gì và vì sao gây rò rỉ
WebRTC là công nghệ trình duyệt đứng sau cuộc gọi video và các tính năng ngang hàng. Để kết nối hai trình duyệt, nó hỏi máy chủ STUN xem địa chỉ công khai của bạn là gì, đồng thời liệt kê các địa chỉ mạng nội bộ. Một trang web đọc được danh sách này chỉ bằng vài dòng JavaScript.
Yêu cầu trang thông thường dùng HTTP hoặc HTTPS và đi theo proxy. Lần dò của WebRTC dùng UDP, mà proxy HTTP không chuyển UDP, nên yêu cầu có thể đi thẳng ra ngoài và để lộ địa chỉ công khai thật.

Vì sao rò rỉ WebRTC đáng quan tâm
Nếu một trang biết địa chỉ công khai thật của bạn, nó ước đoán được nhà mạng và vị trí gần đúng, và có thể liên kết các phiên của bạn dù địa chỉ trong yêu cầu thông thường đã đổi. Điều đó làm mất lý do nhiều người dùng proxy: thử vị trí, kiểm tra giá hoặc tách các tài khoản.
Mức độ nghiêm trọng tùy mục tiêu của bạn. Với việc kiểm tra vị trí qua loa có thể không quan trọng; với công việc cần website chỉ thấy địa chỉ proxy thì rất quan trọng.
ICE candidate nói đơn giản
Khi một trang bắt đầu kết nối WebRTC, trình duyệt thu thập các candidate, tức là những địa chỉ mà nó có thể được liên lạc qua. Candidate loại host là địa chỉ mạng nội bộ. Candidate srflx là địa chỉ công khai mà máy chủ STUN nhìn thấy. Candidate relay là địa chỉ của máy chủ TURN chuyển tiếp lưu lượng thay bạn. Bài kiểm tra rò rỉ chỉ là danh sách các candidate này, và chỉ các dòng srflx và host mới có thể lộ mạng thật của bạn.
Cách kiểm tra rò rỉ WebRTC
Trước hết ghi lại IP công khai thật khi tắt proxy. Sau đó kết nối proxy, mở một trang bất kỳ, nhấn F12, dán đoạn script bên dưới vào tab Console và đọc các dòng in ra. Các trang kiểm tra như BrowserLeaks và IPLeak.net cũng làm cùng phép thử với giao diện dễ nhìn hơn.
// Paste in the DevTools console (F12) of any page, then read the candidates it prints.
const pc = new RTCPeerConnection({ iceServers: [{ urls: 'stun:stun.l.google.com:19302' }] });
pc.createDataChannel('');
pc.onicecandidate = (event) => {
if (event.candidate) console.log(event.candidate.candidate);
};
pc.createOffer().then((offer) => pc.setLocalDescription(offer));
Cách đọc kết quả
- Dòng có typ srflx chứa địa chỉ công khai. Nếu đó là IP thật của bạn khi proxy đang kết nối thì bạn bị rò rỉ.
- Nếu mọi địa chỉ công khai đều là địa chỉ proxy, hoặc không có địa chỉ nào, thì bài thử này không phát hiện rò rỉ.
- Dòng có typ host và tên ngẫu nhiên kết thúc bằng .local là địa chỉ nội bộ mà Chrome cố ý ẩn; đây là bình thường.

Những lỗi hay gặp khi kiểm tra
- Kiểm tra khi đang tắt proxy. Luôn so sánh khi bật và tắt, và ghi lại địa chỉ thật trước.
- Kiểm tra ở cửa sổ khác. Tiện ích không chạy trong chế độ ẩn danh trừ khi bạn cho phép, nên hãy lặp lại bài thử ở đúng cửa sổ bạn dùng.
- Chỉ kiểm tra một trình duyệt. WebRTC là tính năng của trình duyệt, nên hãy thử mọi trình duyệt bạn dùng và Chrome trên điện thoại riêng.
- Nhầm địa chỉ nội bộ là rò rỉ. Tên ngẫu nhiên kết thúc bằng .local là Chrome đang ẩn địa chỉ nội bộ, không phải IP công khai.
Cách chặn rò rỉ WebRTC trên Chrome
Chrome không có cài đặt để tắt WebRTC. Bạn có hai hướng: dùng tiện ích hạn chế WebRTC, hoặc dùng chính sách xử lý IP của WebRTC trong Chrome mà tiện ích có quyền privacy có thể đặt. WebRTC Network Limiter của Google và tiện ích WebRTC Control là ví dụ của hướng đầu.
Chính sách có bốn giá trị. Giá trị chặt nhất, disable_non_proxied_udp, cho WebRTC chỉ dùng UDP qua proxy có hỗ trợ UDP, nếu không thì chuyển sang TCP, nên không thể đi vòng qua proxy.

Từng bước: hạn chế rò rỉ WebRTC bằng tiện ích
- Cài một tiện ích hạn chế WebRTC từ Chrome Web Store và kiểm tra nhà phát hành cùng các quyền xin trước.
- Chọn tùy chọn nhận biết proxy nếu có. Trong WebRTC Network Limiter của Google, tùy chọn dùng máy chủ proxy của bạn giúp WebRTC không đi vòng qua proxy.
- Kết nối lại proxy, tải lại trang kiểm tra và chạy lại script console.
- Xác nhận chỉ có địa chỉ proxy xuất hiện. Nếu địa chỉ thật vẫn hiện, có tiện ích hoặc cài đặt khác đang ghi đè chính sách.
Rò rỉ WebRTC và rò rỉ DNS là hai vấn đề khác nhau
Rò rỉ WebRTC làm lộ địa chỉ IP qua tính năng ngang hàng của trình duyệt. Rò rỉ DNS đưa các truy vấn tên miền ra ngoài proxy. Bài thử WebRTC sạch không nói gì về DNS, nên hãy kiểm tra riêng.
Axio Proxy xử lý việc này thế nào
Khi đang kết nối, Axio Proxy đặt chính sách thành disable_non_proxied_udp và gỡ bỏ khi bạn ngắt kết nối. Hãy xem đây là biện pháp hạn chế rò rỉ chứ không phải cam kết tuyệt đối, và chạy lại bài thử trên sau khi kết nối. Nếu tiện ích khác cũng đặt chính sách WebRTC, chỉ giữ một.
Firefox và Edge
Firefox có công tắc: mở about:config, tìm media.peerconnection.enabled và đặt thành false. Trên Edge, mở edge://flags, tìm "Anonymize local IPs exposed by WebRTC", bật lên và khởi động lại.
Cái giá khi chặn WebRTC
- Cuộc gọi video, chia sẻ màn hình trên trình duyệt và một số công cụ cộng tác có thể lỗi hoặc chuyển sang relay.
- Hãy ngắt proxy, hoặc tắt tiện ích, trước khi gọi.
- Chỉ bảo vệ Chrome; ứng dụng khác giữ cài đặt mạng riêng.
Câu hỏi thường gặp
Rò rỉ WebRTC là gì?
Là khi một website dùng WebRTC để đọc IP thật của bạn dù lưu lượng đã đi qua proxy hoặc VPN.
WebRTC có làm lộ IP không?
Có thể. WebRTC hỏi máy chủ STUN địa chỉ công khai của bạn và liệt kê địa chỉ nội bộ, và yêu cầu đó có thể đi vòng qua proxy HTTP.
Làm sao kiểm tra WebRTC có đang rò rỉ?
Ghi lại IP thật khi tắt proxy, kết nối proxy rồi chạy bài thử WebRTC hoặc script console trong bài. Nếu IP công khai thật của bạn xuất hiện thì đang rò rỉ.
Cách tắt WebRTC trên Chrome?
Chrome không có công tắc có sẵn. Dùng tiện ích như WebRTC Network Limiter hoặc WebRTC Control, hoặc tiện ích đặt chính sách disable_non_proxied_udp khi đang kết nối proxy.
Có nên tắt WebRTC không?
Tắt giúp bảo vệ địa chỉ nhưng có thể làm hỏng cuộc gọi video và chia sẻ màn hình. Hãy chặn khi làm việc sau proxy và bật lại khi cần gọi.
Dùng proxy có chặn được rò rỉ WebRTC không?
Không tự động. Proxy HTTP không chuyển lưu lượng UDP mà WebRTC dùng, nên bạn cần thêm chính sách hoặc tiện ích hạn chế WebRTC.
Nguồn tham khảo
- Chrome Extensions API: privacy
- So your VPN is leaking because of Chrome's WebRTC (webrtcHacks)
- WebRTC leaks: a complete guide (Security.org)
Bài viết liên quan
- Cách cài proxy cho Chrome trên Windows, macOS, Linux và ChromeOSCài đặt hệ thống, flag khởi động hay tiện ích: các bước từng cách, cách kiểm tra IP và sửa lỗi proxy.
- Proxy SwitchyOmega là gì? Cách dùng và các lựa chọn thay thếQuy tắc và proxy tự mang vào, hay vị trí một chạm từ tài khoản: cách chọn, kèm ví dụ PAC.
- Proxy sticky và proxy xoay: nên dùng loại nàoKhi nào giữ một IP và khi nào đổi, kèm vòng đời phiên bạn có thể script hóa.