Es gibt mehrere Möglichkeiten. In erster Linie gibt es ProxyCommand
ein Programm, das anstelle der TCP-Verbindung ein beliebiges Programm verwenden kann - solange es SSH in stdin / stdout spricht. (Natürlich funktioniert das nur mit SSH.)
So können Sie beispielsweise über einen anderen SSH-Server tunneln:
ssh -o ProxyCommand="ssh bastion.tld -W %h:%p" server123.tld
Sie können also ein Tool / Skript in Ihrer bevorzugten Sprache schreiben, das den Hostnamen in der Befehlszeile akzeptiert, den Server nachschlägt, eine TCP-Verbindung herstellt und Daten zwischen stdin / out kopiert. (Es könnte ein Shellscript sein, das läuft nc
.)
Dann benutze es so:
# ~/.ssh/config – see `man ssh_config` Host *.example.com ProxyCommand ~/bin/ssh-cloud-lookup %h %p
Die zweite Möglichkeit besteht darin, einen benutzerdefinierten DNS-Server zu schreiben, der Ihre Container-API zum Nachschlagen von Adressen und zum Bereitstellen von Antworten verwendet. Ich glaube, ich habe einige Tools wie Chubby gesehen, die genau das tun.
Die dritte Option (spezifisch für Linux) besteht darin, ein "nsswitch" -Plugin zu schreiben, das die Suche nach Hostnamen implementiert, ähnlich den vorhandenen "dns" -, "mdns" -, "files" -Plugins. Zum Beispiel liefert systemd ein Plugin nss_mymachines
, das den Namen von nspawn-Containern auflösen soll.