Use referência ao arquivo em vez de IP em / etc / hosts

1

Do meu host com hostname localhost , gostaria de acessar um host externo com hostname exthost pela Internet. O endereço IP público de exthost é atribuído dinamicamente pelo provedor da Internet.

Gostaria de me referir a exthost usando sempre seu nome e mapeando esse nome para seu endereço IP real, de acordo com o valor atribuído pelo Provedor, que pode mudar.

Para fazer isso, eu gostaria de usar /etc/hosts , atualizando corretamente o valor do endereço IP da linha relacionada a exthost .

Por exemplo, a linha em /etc/hosts no Linux pode parecer:

<ip_address>    exthost.domain     exthost

Estou usando o Ubuntu 18.04, mas isso certamente se aplica também a outros sistemas distros / semelhantes ao Unix.

É possível fazer isso, evitando configurar um DNS (e também um DNS dinâmico, que às vezes não é um serviço gratuito) apenas para esse fim?

Por exemplo, é possível usar, em vez de um <ip_address> explícito, uma referência a outro arquivo contendo apenas o IP desejado como uma string? Para que este arquivo possa ser acessado e modificado por um usuário, de acordo com o valor do IP, que pode variar.

Nota: esta questão parece não ser o mesmo caso porque é sobre a máquina local. Em vez disso, estou me referindo a um host externo.

    
por BowPark 21.11.2018 / 10:51

2 respostas

4

Não existe um arquivo hosts definido pelo usuário no Linux, você pode usar HOSTALIASES que funciona com nomes canônicos.

Se eu recebi sua pergunta corretamente, você pode usar um serviço de DNS dinâmico como DynDNS ou No-IP para sempre ter um endereço IP público correto atribuído pelo ISP.

Você pode então usar HOSTSALIASES para mapear exthost para o nome FQDN fornecido por um serviço DNS dinâmico.

Exporte o valor HOSTALIASES com export HOSTALIASES=~/.hosts e, em seguida, adicione a seguinte linha ao arquivo ~/.hosts para mapear exthost para o nome FDQN fornecido por no-ip, por exemplo.

exthost yourname.no-ip.org

HOSTALIASES funciona apenas com nomes canônicos, não IPs, e é por isso que você deve usar algum serviço DNS dinâmico para ter o nome FQDN, mas pode simplesmente usar esse FQDN e pular completamente as HOSTALIASES.

Eu não acho que você possa fazer isso sem configurar algum serviço DNS, ou criar scripts de algo no site remoto para sempre enviar seu IP público e, em seguida, alterar esse IP no arquivo /etc/hosts local.

Outra opção seria dar permissão ao usuário para alterar /etc/hosts ou configurar esse usuário no ambiente chroot e fornecer a ele seu próprio arquivo /etc/hosts em seu ambiente chroot.

    
por 21.11.2018 / 12:03
0

Meu / etc / hosts:

127.0.0.1   localhost
127.0.1.1   *some-host*

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Então diga:

sudo nano /etc/hosts

Adicione uma linha:

IPOFEXTHOST   exthost

Onde IPOFEXTHOST é o ip conhecido de exthost.

A partir desse ponto, você pode escrever um script para atualizar o arquivo, substituindo a linha que contém o exthost. Não importa, porém, um dos computadores terá que ter um atualizador dyndns ou no-ip. Para que você conheça o endereço da Web de exthost diretamente ou exthost pode saber o endereço do seu outro computador para reverter o ssh e atualizar o arquivo com seu IP público curl'ed.

    
por 21.11.2018 / 14:04