У меня есть коммуникационное приложение, в котором есть компонент на стороне сервера, которому для обмена данными требуется известный IP-адрес или имя (например, www.commserver.com). Для связи за пределами локальной сети это должен быть общедоступный адрес. Этот компонент обычно запускается на клиентском ПК, где у них не будет выделенного сервера.
Раньше я обходился с этим путем: использовать учетную запись DSL с фиксированным IP-адресом и использовать IP Passthrough на маршрутизаторе для назначения этого адреса конкретному клиентскому ПК. Это вызывает проблему, заключающуюся в том, что ПК больше не виден в остальной части локальной сети. Я уверен, что есть более простой способ сделать это, но не знаю как. Любые идеи?
Я не уверен, что это правильный ответ, но нанесу удар. Вы упомянули фиксированный IP-адрес, единственный способ получить его - получить фиксированный IP-адрес от вашего интернет-провайдера.
Однако, если вам нужно фиксированное имя хоста (что более вероятно), вы используете такую службу, как EveryDNS или DynDNS, чтобы получить имя хоста, которое изменится при изменении вашего IP-адреса.
Также, если вы используете брандмауэр / маршрутизатор; вы должны использовать перенаправление портов для перенаправления порта на правильный компьютер. Вам нужно будет перенаправить правильный порт на ПК.
Наконец, вы можете использовать DMZ для пересылки неизвестных портов, но тогда он будет изолирован от других компьютеров в вашей локальной сети - это само определение DMZ.
Надеюсь, это поможет, но дайте мне знать, если у вас возникнут вопросы.
Можешь попробовать DynDns. Это позволит вам соединить ваш динамический IP-адрес с вашим DNS-адресом (предоставленным вам DynDns). В худшем случае для этого потребуется небольшая утилита с вашей стороны. Если у вас есть доступ к маршрутизатору, это станет еще проще, поскольку почти все маршрутизаторы поддерживают его.
Об этом позаботится перенаправление портов.
Например, у меня внешний статический IP-адрес 24.127.38.211. Этот IP-адрес приведет вас к моему роутеру.
Внутри моей сети есть несколько машин, все со статическими «внутренними» IP-адресами. Адрес конкретного сервера - 10.1.10.22. Я настроил свой маршрутизатор для отправки порта 3389 на этот статический IP-адрес.
Это означает, что подключение к 24.127.38.211:3389 отправит вас на ЭТУ машину.
Другой пример. У меня есть приложение для обмена файлами, работающее на порту 333 на другом компьютере со статическим IP-адресом 10.1.10.25. Я создал правило переадресации, чтобы отправлять все запросы для порта 333 на этот IP-адрес. Итак, подключение к 24.127.38.211:333 отправит вас на нужный компьютер в моей сети.
Я действительно НЕ очень хорош в объяснении .... но переадресация портов Google и дает ему шанс. Если я что-то не упустил, я считаю, что это поможет вам.
Думаю, нам не хватает второй части его проблемы:
Это вызывает проблему, заключающуюся в том, что ПК больше не виден в остальной части локальной сети.
Похоже, он понимает переадресацию портов (IP Passthru), но большинству брандмауэров не нравится, когда внутренние клиенты указывают на внешний адрес, который затем перенаправляется обратно через брандмауэр. Что вам нужно сделать, так это предоставить возможность другим ПК в сети разрешить имя хоста во внутренний IP-адрес ПК, в то время как внешние клиенты разрешают общедоступный IP-адрес. Если сеть достаточно велика, чтобы иметь внутренний DNS-сервер, это самый простой вариант. Поскольку похоже, что вы работаете в небольших сетях, размещение файлов на каждом ПК в сети может быть вашим единственным вариантом.