Я неграмотный в сети, но я пытаюсь заставить Сервер в моей домашней сети общаться с некоторыми Клиентами в домашней сети моего друга через Интернет. Ни у моего друга, ни у меня нет статического публичного IP, и мы не собираемся покупать статические IP для наших клиентов и серверов.

Диаграмма нашей настройки ниже:ServerClientWAN

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

Ограничения заключаются в том, что Сервер и Клиенты являются "заблокированными" устройствами, поэтому мы хотели бы избежать изменений на уровне ОС / приложения. Может быть, мы можем настроить какой-то VPN или VLAN (это через Интернет)? Иными словами, мы предпочитаем придумать сетевое решение этой проблемы. Мы можем добавить устройства, отличные от Сервера и Клиента, в сеть, чтобы решить эту проблему, но мы не хотели бы "программировать" новое приложение, которое маршрутизирует наши сообщения протокола.

1 ответ1

0

Без рассматриваемого протокола невозможно сказать подробно, но кажется, что вы намеренно расплывчаты, поэтому я отвечу в целом.

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

Чтобы устранить эту проблему, вам нужно создать Ethernet-соединение с мостовым соединением, OpenVPN или другие будут управлять этим, но его значительно сложнее настроить по сравнению с обычным VPN на уровне IP. Также, поскольку вы не можете изменять клиентов, вам нужно, чтобы его маршрутизатор был VPN-клиентом, поэтому его может потребоваться замена. Вы можете разместить VPN на любом компьютере в сети, на котором может работать программное обеспечение X86.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .