Mit der HOSTALIASES
Umgebungsvariablen können Benutzer ihre eigenen Host-Aliase festlegen, anstatt dies zu müssen sudoedit
/etc/hosts
(weitere Details, z. B. unter http://blog.tremily.us/posts/HOSTALIASES/ ).
Mit kann /etc/hosts
ich jedoch IP-Adressen zu Namen und Namen zu Namen aliasen, während HOSTALIASES
nur mit Name-zu-Name-Aliasing zu funktionieren scheint.
Ich habe es versucht:
cat > .hosts
work 10.10.0.1
g www.google.com
^D
export HOSTALIASES=$PWD/.hosts
und nun
curl g #works
curl 10.10.0.1 #works
curl work #doesn't work
Kann ich curl work
arbeiten, ohne eine Datei bearbeiten zu müssen, für die ich keine Schreibberechtigung habe ( /etc/hosts
)?
curl -v work
undgetent hosts work
?getent hosts g
bringt mir $? == 0: 2a00: 1450: 400c: c05 :: 67 www.google.com10.10.0.1
für eine Datensatzabfrage für den Domänennamen zurückgegeben10.10.0.1.
, als ob sieinet_aton()
angewendet würde. BIND gibt NXDOMAIN für solche Abfragen zurück. Sie können es sehen durchhost 10.10.0.1. <nameserver address>
10.10.0.1
als einen Domainnamen wie er ist, fragt einfach nach libnss-Resolver-Modulen.work 10.10.0.1.xip.io
.Antworten:
HOSTALIASES
Die Funktion wird durch die Resolver-Funktiongethostbyname()
in glibc bereitgestellt . In dieser Funktion wird ein Alias-Suchergebnis unverändert an nachfolgende libnss-Modulaufrufe übergeben, die vonhosts:
in angegeben werden./etc/nsswitch.conf
Wenn also kein Modul vorhanden ist, das damit umgehen kann, tritt eingethostbyname()
Fehler auf.Beachten Sie, dass in den meisten Programmen die numerische Adressnotation wie
10.10.0.1
und2a00:1450:400c:c05::67
voninet_aton()
inet_pton()
getaddrinfo()
vorher verarbeitetgethostbyname()
wird.Einige DNS-Server, einschließlich dnsmasq, geben gültige Adressdatensätze an Abfragen mit einer numerischen Adresszeichenfolge zurück, als ob sie darauf
inet_aton()
angewendet würden: z. B. geben sie einen Eintrag zurück, um den vollqualifizierten Domänennamen10.10.0.1
abzufragen10.10.0.1.
. Andere Server, einschließlich BIND, geben jedoch nur NXDOMAIN für solche Abfragen zurück. Sie können sich also nicht darauf verlassen, dasswork 10.10.0.1
Sie diesHOSTALIASES
als Alternative zu definieren/etc/hosts
.Eine mögliche Problemumgehung besteht darin, einen öffentlichen DNS-Dienst wie xip.io zu verwenden, um auflösbare FQDNs für beliebige IPv4-Adressen zu erhalten. Zum Beispiel können Sie festlegen ,
work
für10.10.0.1
wie folgt aus :quelle