Вы пытаетесь решить проблему, которой не существует. Просто используйте свой внутренний IP, это приведет к тому, что пакеты никогда не попадут на ваш маршрутизатор (возможно, коммутатор на вашем маршрутизаторе, но не сам маршрутизатор). Лучше всячески так делать. Вот несколько преимуществ:
- Вы будете иметь доступ к любым портам, которые вам нравятся (не только к тем, которые вы настроили в своем маршрутизаторе).
- Вы не будете тратить память маршрутизатора на записи NAT для служб, которые вы используете только для внутреннего использования.
- Вам будет гораздо проще запомнить внутренний IP, и он никогда не изменится, если вы не скажете это.
- Каждый пакет будет делать меньше прыжков, и каждый переход будет на коммутаторе, поэтому он будет очень быстрым.
- Пакеты не будут мешать работе вашего роутера, пока он будет анализировать ваши пакеты. Даже если в вашей сети будет медленный день, это будет намного быстрее для вас.
- Ваши серверы будут видеть ваш компьютер как отдельное устройство; Если вы решите использовать внешний прокси-сервер, чтобы исправить это, вы всегда будете рассматриваться как происходящие из этого прокси.
- Если ваш сервис поддерживает его, он может использовать целую палитру протоколов, которые недоступны для внешних устройств. DHCP, WINS, реальные UDP-трансляции ... и это лишь некоторые из них.
- Вся дополнительная безопасность, которая сопровождается подчинением.
Я уверен, что есть больше причин, потому что это так, как это должно быть сделано. Кроме того, вы можете легко изменить свой хост-файл или DNS-сервер, чтобы дать ему имя, не связываясь со службой динамического типа DNS.
Обновить
Некоторые люди интерпретируют этот вопрос как вопрос, как заставить ноутбук работать в сети так же, как в другой сети. ИМО, это совершенно другой вопрос и значительно расширяет сферу вопроса. Я не видел упоминаний о том, что это один и тот же компьютер как внутри, так и за пределами сети (или что-то кроме IP). Теперь нам нужно спросить о таких вещах, как, как вы подключаетесь, как вы решаете имена хостов и т.д. В конце концов, ни один ответ не может решить каждую ситуацию автоматически.
Если вы захотите запустить крошечный скрипт после подключения к другой сети, я могу дать простой ответ, который будет достаточно надежным.
Сначала создайте небольшой пакетный скрипт:
ping -n 1 some.local.ip.addy
if errorlevel 1 goto :isremote
cp /Y %WINDIR%\System32\Drivers\etc\hosts.local %WINDIR%\System32\Drivers\etc\hosts
goto :eof
:isremote
cp /Y %WINDIR%\System32\Drivers\etc\hosts.remote %WINDIR%\System32\Drivers\etc\hosts
Измените some.local.ip.addy
на фактический IP-адрес в вашей локальной сети. Убедитесь, что это то, что всегда доступно (ваш маршрутизатор IP будет работать хорошо, пока он отвечает на запрос PING).
Затем создайте локальный файл hosts (%WINDIR%\System32\Drivers\etc\hosts.local
) и поместите в него:
192.168.0.2 my-service.mynet.dyndns.org
192.168.0.3 my-service2.mynet.dyndns.org
Используя ваш реальный IP-адрес сервера. Это упрощено, я бы добавил записи, которые работают только внутри сети.
Затем создайте файл удаленных хостов (%WINDIR%\System32\Drivers\etc\hosts.remote
). Оставьте это поле пустым, оно нам сейчас не понадобится, но вы можете найти его позже.
Затем настройте учетную запись dyndns.org с именем mynet.dyndns.org
и обязательно укажите ее в качестве шаблона. Конечно, DynDNS - это всего лишь одна из сотен опций для динамического DNS-хоста.
Теперь, после перемещения между сетями, просто запустите скрипт и вуаля, все работает снаружи так же, как и внутри, и (если вы правильно перенаправляете свои порты и используете правильные имена хостов), вам просто нужно использовать my-service.mynet.dyndns.org
или my-service2.mynet.dyndns.org
или mynet.dyndns.org:24829
для получения различных услуг. Если этот сервис поддерживает виртуальные хосты, он будет знать, как обращаться с my-service.
часть. Ваш маршрутизатор, скорее всего, просто передаст его, поэтому вам нужно будет предоставить порт и для тех служб, которые не знают, как обрабатывать vhost-часть (конечно, большинство из них имеют порт по умолчанию в клиенте, поэтому вы быть в состоянии просто войти в mynet.dyndns.org
обычно).
То же самое может быть достигнуто без сценария, если у вас есть DNS-сервер в локальной сети, но если вы это сделаете, вы, вероятно, уже знаете, как это сделать. Если нет, то это определенно заслуживает отдельного вопроса.