Я неграмотный в сети, но я пытаюсь заставить Сервер в моей домашней сети общаться с некоторыми Клиентами в домашней сети моего друга через Интернет. Ни у моего друга, ни у меня нет статического публичного IP, и мы не собираемся покупать статические IP для наших клиентов и серверов.
Диаграмма нашей настройки ниже:ServerClientWAN
Я настроил переадресацию портов на моем маршрутизаторе так, чтобы связь через определенный порт с моим общедоступным IP-адресом перенаправлялась на локальный IP-адрес моего сервера. При такой настройке мой Сервер может видеть клиентов и получать входящие сообщения от клиента, но по какой-то причине он пытается отправлять сообщения клиентам на их локальные IP-адреса из домашней сети моего друга. Серверы и клиенты используют собственный протокол TCP/IP. Мой сервер видит IP-адреса клиента как 192.168.0.X, как показано на схеме ниже. Есть идеи о том, что мы можем делать неправильно? Я бы подумал, что общение с клиентами будет происходить с публичного IP моего друга? Это может быть случай, когда наши сообщения протокола поступают с локального IP-адреса, и сервер анализирует эти сообщения, чтобы ответить на конечных точках локального IP-адреса Клиента. В этом случае, не меняя наш протокол, существует ли какая-то магия сети, которая бы позволила коммуникации работать?
Ограничения заключаются в том, что Сервер и Клиенты являются "заблокированными" устройствами, поэтому мы хотели бы избежать изменений на уровне ОС / приложения. Может быть, мы можем настроить какой-то VPN или VLAN (это через Интернет)? Иными словами, мы предпочитаем придумать сетевое решение этой проблемы. Мы можем добавить устройства, отличные от Сервера и Клиента, в сеть, чтобы решить эту проблему, но мы не хотели бы "программировать" новое приложение, которое маршрутизирует наши сообщения протокола.