Как WebRTC может пропустить реальный IP-адрес, если за VPN?
Недавно мне стало известно, что WebRTC может утекать реальный IP-адрес даже за VPN. Как именно WebRTC может получить мой реальный IP-адрес?
VPN обычно создает новый интерфейс, и все пакеты направляются (когда я проверяю таблицу маршрутизации) на этот интерфейс. Как WebRTC узнает о моем реальном IP-адресе? Это как-то не использует тот интерфейс, созданный VPN?
Я читал, что WebRTC использует протоколы STUN, TURN и ICE для получения реального IP-адреса. Как они могут получить эту информацию?
Может ли правило брандмауэра предотвратить эту утечку?
РЕДАКТИРОВАТЬ: я использую VPN в сети с NAT, что означает, что мой компьютер не знает о моем IP-адрес, предоставленный провайдером. Итак, возможно ли получить WebRTC и как?
1 ответ
Соединение WebRTC включает в себя три объекта:
- два одноранговых узла (предлагающий и отвечающий), которые обычно являются веб-браузерами, но также могут быть серверами;
- сигнальный сервер, который обычно является веб-сервером, с которым взаимодействуют одноранговые узлы.
Когда одноранговые узлы решают подключиться друг к другу, они обмениваются набором сообщений (предложение, ответ, кандидаты ICE, все вместе известные как сообщения SDP). Эти сообщения содержат различные данные, такие как информация о поддерживаемых кодеках и криптографических ключах, и, в частности, они содержат IP-адреса пиров. Поскольку эти сообщения передаются сигнальному серверу, сигнальный сервер может использовать их для получения сведений о ваших IP-адресах.
Одноранговые узлы решают, какой из их IP-адресов включать в сообщения SDP. В идеале при использовании VPN следует включать только IP-адреса VPN. Однако, поскольку SDP генерируется браузером, для правильного выполнения этого требуется взаимодействие между VPN и веб-браузером, что трудно сделать должным образом.
Чтобы обойти эту проблему, последние браузеры не включают локальные (RFC 1918) адреса в SDP. Это прекрасно работает, если ваш хост имеет только адреса RFC 1918, но не работает, если он имеет глобальные адреса, например, потому что у него есть возможность подключения IPv6. Вы можете узнать, как ваш браузер ведет себя со сценарием Trickle-ICE , который отображает адреса, переданные вашим браузером сигнальному серверу.
На мой взгляд, единственный надежный способ сохранить конфиденциальность вашего IP-адреса — запустить браузер на виртуальной машине, которая знает только ваш VPN-адрес. Любой другой обходной путь слишком подвержен ошибкам, чтобы быть надежным.