Некоторое время я в значительной степени игнорировал протокол STUN как шум, но я все время сталкиваюсь с ним здесь и там, и мне интересно его общее удобство использования.
Если я правильно понимаю, STUN полезен только в том случае, если самый внешний NAT позволяет в пакетах, отправленных из addr:port
пара, чем та, которую использовал источник при установлении сопоставления.
У меня было явно бредовое понимание, что нормальный NAT будет разрешать только обратные пакеты от того же addr:port
пара, к которой было установлено соединение (Фильтрация, зависящая от конечной точки). Несоблюдение этого требования само по себе является серьезной проблемой безопасности. Создание целых протоколов и RFC на их основе кажется безумным.
Вопросы:
NAT не предназначен в качестве функции безопасности - это средство предотвращения исчерпания адресов IPv4 в качестве временной меры, пока IPv6 не будет полностью развернут. Таким образом, имеет смысл реализовать его таким образом, чтобы максимизировать полезность, а не безопасность.
Таким образом, предпосылка вашего вопроса номер 2 неверна, поскольку NAT не предназначен в качестве устройства безопасности. Если принуждение удаленной конечной точки всегда быть одной и той же нарушает даже одно приложение, я бы счел более разумным не применять ту же удаленную конечную точку, учитывая цели технологии.
Одноранговая IP-телефония (например, Skype) была бы ярким примером легитимного приложения, которое не могло бы хорошо работать без возможности пробивать дыры в NAT: s, будь то STUN или аналогичные технологии, которые используют поведение NAT: s или через такие технологии, как UPnP.