> WebRTC leak local addressМеня всегда удивляло пещерное скудоумие вокруг этой темы, но, видимо, это неизбежно. Телефонные протоколы уже лет 10 как дошли до такой стадии, что обычный системный администратор их не понимает.
Протокол задумывался 15 лет назад, а существует и стандартизирован как раз 10 лет назад. Последняя ревизия вот: https://tools.ietf.org/html/rfc8445
Есть некий протокол установки сессий не важно WebRTC это или SIP, и он отвечает за установку сессий в пиринговой сети. Задача установить оптимальное соединение между n-участниками сессии. Логика в том, что нет смысла устанавливать внешний маршрут, если участники в одной и той же подсети. Нет смысла устанавливать сессию IPv4, если все поддерживают v6. А если используется IPv4 NAT, то нужно его обойти, вне зависимости от 1001 вида параметров NAT устройств и параметров на стороне роутеров и стороне провайдера.
Вот протокол и собирает все IP адреса на всех сетевых адаптерах, включая и TAP, и TUN за минусом:
- Loopback
- туннельные адреса v6 6to4/6in4/Teredo
- v6 link-local
- v6 с поддержкой location tracking
Помимо прочего туда попадут адреса, которые вернут STUN и TURN
Дальше начинаем попарно пробовать установить соединение в форме звезды, учитывая приоритеты кандидатов.
Обыватель обычно спрашивает, зачем так сложно. Дурак начинает бочку гнать на VoIP, даже не подозревая, насколько там всё устандартизировано до морковкина заговенья по сравнению с, внезапно, NAT. Если бы NAT был жестким стандартом, который бы одинаково выполняли бы все вендоры, если бы бараны-вендоры не городили ALG для SIP/RTP каждый по-своему ломая спецификацию и если была только одна версия IP, то не было бы никаких ICE. Увы, если бы да кабы, то во рту бы выросли грибы и был бы не рот, а целый огород. Собственно, этим ртом все и будут жрать оверинжиниринг в виде протоколов ICE+STUN+TURN. Кушайте с маслом, не обляпайтесь. =)
И вот эти чудилы опять выходят на связь, ноя про утечку их локального IP. Что только не придумают, лишь бы фаервол не настраивать. Запомните, люди:
1. IP-адрес - это не секрет. Он на то и адрес, чтобы с ним можно было связаться.
2. NAT - это средство подмены адресов в заголовках пакетов, а не средство безопасности. Для безопасности есть цепочки INPUT и FORWARD и не только на роутере, а в первую очередь на самом ПК.
3. ICE запрещает трекинг хоста, но не даёт анонимности. В телефонии нет и не может быть анонимности по-определению и по закону (исключение разве что США, но ни в РФ, ни в ЕС нельзя скрываться). Там очень много сделано именно для того чтобы удостоверять пользователя.
Мир интернета уже один раз совершил ошибку, попытавшись переизвобрести SIP и ему смежные протоколы. Попытка кончилась провалом (XMPP Jingle). При разработке WebRTC они взяли нормальные телефонные стандарты и гляньте, взлетело. Осталось только выкинуть слово Web из WebRTC и куча проблем решится.