Автоматически получать доступ к компьютеру, используя локальный IP, если он находится в моей локальной сети, или IP-адрес в Интернете в противном случае

Автоматически получать доступ к компьютеру, используя локальный IP, если он находится в моей локальной сети, или IP-адрес в Интернете в противном случае

Я делаю резервную копию своего ноутбука (macOS) на настольном компьютере (Linux) дома. Естественно, мой ноутбук иногда находится дома, в той же локальной сети, что и мой настольный компьютер, а иногда нет. Довольно долгое время я использовал ноутбук, чтобы обращаться к настольному компьютеру с помощью публичного URL, так как это удобно и работает независимо от того, где находится ноутбук. Недостатком является то, что моя система резервного копирования получает доступ к настольному компьютеру через Интернет, даже когда было бы быстрее получить к нему доступ по локальной сети. (Я думал, что, находясь дома, мой маршрутизатор или что-то на стороне моего провайдера немедленно заметит, что я получаю доступ к своему собственному IP, и выберет сокращение, но traceroute показывает 12+ переходов, так что, полагаю, нет.)

Как мне автоматически подключить ноутбук к настольному компьютеру по локальной сети, когда это возможно, и через Интернет в противном случае?

Лучшее, что я могу придумать, это скрипт оболочки, который проверяет, нахожусь ли я дома, и изменяет мой файл hosts. Это немного неуклюже и станет обременительным, если я захочу сделать это с более чем одним устройством, особенно мобильным. Я не могу быть единственным человеком, у которого когда-либо была эта проблема, поэтому я хотел бы узнать, есть ли лучшие методы. В идеале, существует какой-то способ настроить поведение разрешения URL с помощью исполняемых программ или небольших скриптов, о которых я не знаю.

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

Мой маршрутизатор — Archer C7.

У меня домашний интернет, поэтому мой IP-адрес, вероятно, иногда меняется, но, судя по всему, это происходит очень редко.

Я могу определить, находятся ли два компьютера в одной локальной сети.

решение1

Одним из решений было бы иметь локальный DNS-сервер в вашей локальной сети: вы могли бы добавить локальную запись, которая будет разрешать ваш URL-адрес рабочего стола/имя домена в локальный IP-адрес в локальной сети. Таким образом:

  • когда вы находитесь в локальной сети: вы получаете локальный IP вашего рабочего стола
  • когда вы находитесь в глобальной сети: вы получаете публичный IP вашего рабочего стола

К сожалению, это, вероятно, потребует довольно много работы, так какбольшинство маршрутизаторов не включают локальный DNSи ваш маршрутизатор (Archer C7), похоже, не предоставляет такую ​​функцию.

Связанный контент