Как получить доступ к службе WCF за NAT

1

Вот моя ситуация:

  • У меня есть WCF с поддержкой TCP-привязки за NAT, и я не могу его достичь.

  • Я могу связаться со службой поддержки, используя базовые узлы TCP/IP.

  • На стороне сервера выполняется переадресация портов.

Что может вызвать это?

Моя топология сети: ссылка на изображение

Изображение 174551

  • 0
    Похоже, вам нужно добавить некоторые правила брандмауэра. Маршрутизатор позаботится о трансляции адресов.
  • 0
    Можете ли вы подключиться через net tcp от клиента в той же сети, что и сервер? Я бы протестировал это в первую очередь, чтобы удалить проблемы брандмауэра / переадресации портов / и т.д. из уравнения
Показать ещё 1 комментарий
Теги:
wcf
network-programming

2 ответа

2

Я не испытываю WCF и nettcpbinding, но это может помочь.

Теоретически это невозможно, потому что ваш сервис имеет локальный IP-адрес, соответствующий локальной сети, где он подключен, а не общедоступный IP-адрес. Таким образом, он не может быть достигнут из Интернета, вне NAT. Однако почти все устройства NAT, возможно, ваш маршрутизатор/точка доступа имеют функцию "Переадресация портов". Эта функция позволяет вам определить, что все пакеты, адресованные конкретному порту, перенаправляются на конкретный компьютер в вашей локальной сети с частным IP-адресом.

Это может быть решением для вас, если вы сможете преодолеть два препятствия:

1-я не знаю, как узел в Интернете отправит сообщение на сервер обратного вызова. Если он использует IP-адрес, из которого он получил запрос, нет проблем. Если он получает обратный IP-адрес, вам нужно выяснить, как узнать общедоступный IP-адрес вашего NAT (возможно, маршрутизатор/точка доступа) и отправить этот IP-адрес.

2. Ваш сервис за NAT должен открыть клиентский порт или эфемерный порт для связи с сервисом вне NAT. Если второй отправляет сообщение на клиентский порт, из которого он получил сообщение, вам необходимо найти способ определить порт клиента, который вы хотите открыть (должен быть тот же, который вы настроили при переадресации портов). Будет ли он прослушивать порт 808 по умолчанию?

Надеюсь, это поможет.

  • 0
    Я могу установить необработанное соединение TCP / IP между машиной за NAT и клиентом. Похоже, что нет проблем с открытием порта. Но кое-как не могу подключить сервис wcf
  • 0
    И я могу установить соединение с помощью BasicHttpBinding. Но не могу с Net Tcp
Показать ещё 15 комментариев
1

Проверьте с URI "net.tcp://0.0.0.0: 8000", это гарантирует, что служба будет принимать соединение с любого входящего IP-адреса. На стороне сервера IP-адрес, указанный в URI и адресе, из которого принято соединение, отличается тем, что сервер отказывается от соединения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню