configuração de resolução de host para um comando?

configuração de resolução de host para um comando?

Para modificar o endereço resolvido de um host, podemos alterar /etc/hosts
Quero ter essa funcionalidade ao executar um único script sem realmente modificar /etc/hosts
Algo

$HOST=foo.bar:10.0.1.256 ping foo.bar

seria o mesmo que ter uma entrada em /etc/hosts 10.0.1.256 foo.bar
e$ ping foo.bar

Isso é factível?

Responder1

Duplicado dePosso criar um arquivo hosts específico do usuário para complementar o /etc/hosts?, onde explica o uso de HOSTALIASES.

Essencialmente, você define uma variável de ambiente HOSTALIASES que aponta para seu próprio arquivo hosts.

Mais informações empágina de manual do nome do host(7)

Responder2

Não há arquivos host do usuário, uma configuração de ligação complexa funcionaria hospedando o aplicativo atrás de um IP interno diferente... no entanto... o aplicativo deve ser capaz de pular o DNS...

Se você deseja fazer isso para um aplicativo que faz chamadas http/https, pode ignorar completamente o DNS. Ao fazer uma solicitação http o domínio é copiado para os cabeçalhos, você pode pular esta etapa substituindo o cabeçalho...

por exemplo;

wget --header = "Host: www.example.com" "http://127.0.0.1/bob/is/cool"

Isso enviará uma solicitação http para localhost, porém a solicitação http seria para www.example.com, não 127.0.0.1...

(ignorou o DNS e fez uma chamada http válida para o domínio correto).

Se por algum motivo for um serviço tcp alternativo que não tenha identificador como um host na solicitação, uma configuração maluca de ligação funcionaria (negar o ip src do aplicativo, ele será resolvido em um serviço DNS diferente).

Outra solução seria usar o firewall do kernel ...

divida o aplicativo em uma LAN diferente ou talvez em um endereço de loop back, então você poderá fazer DNAT para um IP diferente com base no endereço do pacote de origem ...

informação relacionada