
Um die aufgelöste Adresse eines Hosts zu ändern, können wir /etc/hosts ändern.
Ich möchte diese Funktionalität haben, wenn ich ein einzelnes Skript ausführe, ohne /etc/hosts tatsächlich zu ändern
.
$HOST=foo.bar:10.0.1.256 ping foo.bar
wäre dasselbe wie ein Eintrag in /etc/hosts
10.0.1.256 foo.bar
und$ ping foo.bar
Ist das machbar?
Antwort1
Duplikat vonKann ich als Ergänzung zu /etc/hosts eine benutzerspezifische Hosts-Datei erstellen?, wo die Verwendung von HOSTALIASES erläutert wird.
Im Wesentlichen legen Sie eine Umgebungsvariable HOSTALIASES fest, die auf Ihre eigene Hosts-Datei verweist.
Mehr Informationen beiman-Seite für hostname(7)
Antwort2
Es sind keine Benutzerhostdateien vorhanden. Ein komplexes Bind-Setup würde funktionieren, indem die Anwendung hinter einer anderen internen IP gehostet wird. Die Anwendung sollte jedoch in der Lage sein, DNS zu überspringen.
Wenn Sie dies für eine Anwendung tun möchten, die http/https-Aufrufe tätigt, können Sie den DNS vollständig überspringen. Bei einer http-Anforderung wird die Domäne in die Header kopiert. Sie können diesen Schritt überspringen, indem Sie den Header überschreiben...
Zum Beispiel;
wget --header="Host: www.example.com" "http://127.0.0.1/bob/ist/cool"
Dadurch wird eine HTTP-Anfrage an den lokalen Host gesendet. Die HTTP-Anfrage richtet sich jedoch an www.example.com und nicht an 127.0.0.1 ...
(DNS umgangen und einen gültigen HTTP-Aufruf für die richtige Domäne getätigt).
Wenn es sich aus irgendeinem Grund um einen alternativen TCP-Dienst handelt, der in der Anforderung keinen Bezeichner wie etwa einen Host hat, würde ein Crazy-Bind-Setup funktionieren (verweigern Sie die Quell-IP der Anwendung, sie wird auf einem anderen DNS-Dienst aufgelöst).
Eine andere Lösung wäre die Verwendung einer Kernel-Firewall ...
Teilen Sie die Anwendung auf ein anderes LAN oder möglicherweise eine Loopback-Adresse auf. Anschließend können Sie basierend auf der Quellpaketadresse eine DNAT-Verbindung zu einer anderen IP herstellen ...