Сценарий таков: у меня есть машина, к которой можно получить доступ как локально (когда я нахожусь в той же сети, что и машина), так и публично (когда я нахожусь в любой внешней сети). Я хочу, чтобы мой файл hosts выглядел примерно так:
10.11.82.40 master.parallel.edu master
123.90.132.98 master.parallel.edu master
, чтобы система сначала попробовала первый IP-адрес, а если это не сработает, попробуйте следующий. Это возможно и целесообразно?
Обычно разрешение IP-адресов выполняется через специальные службы имен, такие как dnsmasq, bind и т. Д.
Файл локальных хостов / etc / hosts обычно используется только в том случае, если у вас небольшая внутренняя сеть - перечисляются все внутренние хосты и их соответствующие IP-адреса; в противном случае он должен просто содержать локальное имя вашего сервера (и localhost).
Одним из решений вашего вопроса может быть использование имени вашего сервера в разных поддоменах, например, master.exernal.example.com
и master.internal.example.com
; Теперь, чтобы обратиться к мастеру из внешней сети, вы должны сделать external.example.com вашим основным поисковым доменом в /etc/resolv.conf
:
# /etc/resolv.conf at external host
search external.example.com example.com
nameserver ns.example.com
# /etc/resolv.conf at internal host
search internal.example.com example.com
nameserver ns.example.com
(при условии, что у вас есть сервер имен на ns.example.com)
В каждом файле зоны для .external. и .internal.example.com имя хоста указывает на соответствующий IP-адрес
# zonefile external network
$ORIGIN external.example.com.
master IN A 123.90.132.98
# zonefile internal network
$ORIGIN internal.example.com.
master IN A 10.11.82.40
Таким образом, вы можете использовать curl http://master/
в каждой сети, не связываясь с FullQualifiedDomainNames.