Есть приложение-сервер, который находится за NAT (возможно даже за несколькими), необходимо принимать соединения из интернета.
Гугл навел на NAT-PMP протокол и его спецификацию RFC 6886
Но из спецификации не очень то понял, как сформировать запрос, а так же не ясно, можно ли запросить любой свободный порт или придется подбирать их до успеха.
Может кто подкинет ссылок на более человекопонятные мануалы на русском/английском?
Дмитрий Беляев: Нет IGD протокол не будет работать везде, более того находясь за роутером Вы скорее всего не сможете отправить SSDP multicast запрос и получить информацию о роутере находящемся за Вашим роутером. Т.е. для проброса через несколько роутеров Вам придется сначала узнать топологию сети за Вашим роутером, чтобы четко знать куда слать запрос.
Более того могут быть ситуации когда роутер поддерживает что-то одно IGD/PMP или вообще ничего.