Как - UDP NAT обход, используя BSD сокеты

Я читал прохождение NAT, требующее использования внешнего сервера STUN. Существует мало общедоступных серверов STUN, но я не знаю, как их использовать, чтобы узнать мой общедоступный IP-адрес, который может использоваться другим клиентом для установления соединения. Будучи новичком в этом, я не могу найти правильные документы для этого, используя сокеты BSD. Если кто-то может объяснить, как я могу найти мой общедоступный IP-адрес, принимая BSD-сокеты в качестве базы, было бы хорошо Также, если вы можете предоставить хорошие ссылки для этого, это также будет оценено.

1 ответ

Решение

Это в ответе STUN bind. RFC 5389, спецификация STUN, объясняет, как на странице 7:

Сервер STUN копирует этот транспортный адрес источника в атрибут XOR-MAPPED- ADDRESS в ответе привязки STUN и отправляет ответ привязки обратно клиенту STUN. Когда этот пакет проходит через NAT, NAT изменит IP-адрес назначения в заголовке IP, но транспортный адрес в атрибуте XOR-MAPPED- ADDRESS в теле ответа STUN останется нетронутым. Таким образом, клиент может узнать свой рефлексивный транспортный адрес, выделенный внешним NAT по отношению к серверу STUN.

Другие вопросы по тегам