Сервер пытается установить связь с локальным IP-адресом Клиента из другой сети.

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

Схема нашей настройки ниже: ServerClientWAN

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

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

1 ответ

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

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

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

Другие вопросы по тегам