Экземпляры AWS EC2, по большей части, работают за NAT.Даже если вы назначили общедоступный IP-адрес (например, 1.2.3.4
) через консоль AWS, экземпляр знает только о частной сети, в которой он включен, и не знает о назначенном ему общедоступном IP-адресе.То есть экземпляр думает, что его IP-адрес 172.31.5.6
, потому что это то, что операционная система обнаружила во время загрузки.Переадресация портов позволяет переадресовывать определенные порты TCP и UDP с общедоступного IP-адреса на частный IP-адрес, на котором работает экземпляр EC2.
Обычно это не проблема для большинства служб, работающих на AWS EC2пример.Когда STUN работает в режиме «2 IP-адреса и 2 порта», сервер должен объявить свой альтернативный IP-адрес обратно клиенту, если клиент захочет провести тестирование поведения NAT и фильтрации.Но было бы неверно, чтобы сервер STUN отправлял обратно 172.31.5.7
в качестве своего альтернативного IP-адреса - у клиента нет возможности достичь этого IP-адреса, поскольку он является частным.
Аналогично для TURN, когда происходит распределение портов, сервернеобходимо отправить общедоступный IP-адрес isntance EC2 клиенту, который его выделил.Было бы плохо, если бы клиент запросил порт TURN для совместного использования с другим узлом - только для сервера TURN для отправки обратно 172.31.5.6
.
Следовательно, для сервера STUN или TURN, размещенного за NAT,набор параметров командной строки или параметров конфигурации необходим, чтобы сообщить серверу, каковы его «реальные» IP-адреса.Программное обеспечение STUN / TURN будет использовать эти IP-адреса для отправки ответов клиентам.