Проблема
Я пишу небольшое приложение веб-службы, используя ASP. NET. Я хочу, чтобы этот веб-API был виден извне домашней сети (за NAT). Проблема в том, что пользователь, для которого я пишу эту программу, не имеет доступа к изменению своего маршрутизатора. Создание правила переадресации портов в конфигурации маршрутизатора невозможно.
В качестве решения этой проблемы я попытался использовать UPNP с платформой Open.NAT . К сожалению, я не могу заставить это работать. Я могу создать правило, я вижу, что порт открыт с помощью онлайн-инструментов, таких как canyouseeme , но я не могу подключиться к веб-API с помощью браузера. Я на 100% уверен, что UPNP включен на моем маршрутизаторе.
Код
Код, который я сейчас использую, является кодом прогноза погоды по умолчанию, который создается Visual Studio при создании ASP . NET веб-API. Я добавил Open.NAT из диспетчера пакетов NuGet.
Затем я изменил код по умолчанию на следующий
public static void Main(string[] args)
{
CreatePortforwardRule().Wait();
CreateHostBuilder(args).Build().Run();
}
static async Task CreatePortforwardRule()
{
NatDiscoverer discoverer = new NatDiscoverer();
CancellationTokenSource cts = new CancellationTokenSource(10000);
var device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);
await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 5000, 7856, "Test"));
}
при запуске этого приложения и go на canyouseeme , я получаю информацию, как показано на этом изображении, но я не могу подключиться к веб-API с помощью браузера. (Также пытался подключиться с помощью cURL без результата)
Дополнительные действия, которые я сделал
Чтобы попытаться решить эту проблему, я также сделал следующее:
- Изменено порт, на котором должно работать приложение, на 5000
- В мой P C добавлено правило брандмауэра, которое разрешает входящий трафик c на порт 5000
- В качестве проверки работоспособности я также попробовал перенаправление портов вручную на моем собственном маршрутизаторе, который работал, но, как я уже говорил, это не вариант для пользователя, который собирается использовать программу.
Я очень надеюсь, что смогу найти решение. Спасибо, что нашли время прочитать мой вопрос.
Ссылка на выпуск в репозитории Open.NAT: https://github.com/lontivero/Open.NAT/issues/97