Arquivo Hostaliases com um endereço IP

5

A variável de ambiente HOSTALIASES permite que os usuários definam seus próprios aliases de host em vez de ter que sudoedit /etc/hosts (mais detalhes, por exemplo, em link )

No entanto, com /etc/hosts eu posso aliasar endereços IP a nomes e nomes a nomes, enquanto HOSTALIASES parece funcionar apenas com nome para nomear aliasing.

Eu tentei:

cat > .hosts
work 10.10.0.1
g www.google.com
^D
export HOSTALIASES=$PWD/.hosts

e agora

curl g #works 
curl 10.10.0.1 #works
curl work #doesn't work

Posso fazer o curl work funcionar sem precisar editar um arquivo para o qual não tenho permissões de gravação ( /etc/hosts )?

    
por PSkocik 29.08.2015 / 12:16

1 resposta

7
O recurso

HOSTALIASES é fornecido pelo resolvtion funtion gethostbyname() in glibc. Nessa função, um resultado de pesquisa de alias é passado como está para as chamadas de módulo libnss subseqüentes especificadas por hosts: in /etc/nsswitch.conf , portanto, se não houver nenhum módulo que possa manipulá-lo, gethostbyname() terminará com falha.

Observe que, na maioria dos programas, a notação numérica de endereço, como 10.10.0.1 e 2a00:1450:400c:c05::67 , é processada por inet_aton() inet_pton() getaddrinfo() antes de gethostbyname() ser chamado.

Alguns servidores DNS, incluindo dnsmasq, retornam registros de endereço válidos para consultas com uma cadeia de endereço numérica como se inet_aton() fosse aplicado a ele: por exemplo, eles retornam um registro 10.10.0.1 para consultar FQDN 10.10.0.1. . No entanto, outros servidores, incluindo o BIND, retornam NXDOMAIN para essas consultas. Portanto, você não pode confiar nisso para definir work 10.10.0.1 no seu HOSTALIASES como uma alternativa de /etc/hosts .

Uma solução possível é utilizar um serviço DNS público como xip.io para obter FQDNs resolvíveis para endereços IPv4 arbitrários. Por exemplo, você pode definir work para 10.10.0.1 da seguinte forma:

work 10.10.0.1.xip.io
    
por 29.08.2015 / 21:14

Tags