Wildcard.hostname im lokalen Netzwerk auflösen?


4

Für die Webentwicklung auf meinem lokalen Server ( nginx) erstelle ich gerne Subdomain-VHosts für einige Projekte, hauptsächlich aus Gründen der Benutzerfreundlichkeit und Flexibilität. Zum Beispiel

server {
    listen       80;
    server_name  project.myHostname;

    root         /that/projects/html/root;
    ....
}

Obwohl es technisch fragwürdig ist (?), Funktioniert es einwandfrei, wenn eine Anfrage http://project.myHostname an denselben Computer gestellt wird . Aber ich möchte mit einer Konfiguration enden, auf die ich http://project.myHostnamevon jedem Gerät aus zugreifen kann, das mit dem lokalen Netzwerk verbunden ist (und nur dort). Genau so, wie es funktioniert, wenn ich darauf zugreife myHostname(weil ich denke, dass DNS meines Routers das in die lokale IP auflöst). Aber für die andere Sache bekomme ich alle Arten von Fehlern zu schreien, gibt es nicht so etwas wie subdomain.hostname.

Die einzige Lösung, die ich bisher gefunden habe, ist die manuelle Bearbeitung der hostsDatei für jedes Gerät, das diese "Adresse" anfordern kann. Gibt es eine bequemere Lösung?

Ich denke, ein Hauptproblem könnte sein, dass ich die Konzepte und Beziehungen zwischen Hostname, Domainname und dergleichen nicht richtig verstanden habe. Ich habe eine Weile damit zu kämpfen, aber es fällt mir schwer, mich darum zu kümmern.

Antworten:


3

Sie möchten DNS-Funktionen, daher sollten Sie DNS verwenden.

  1. Richten Sie einen DNS-Server wie "Bind9" oder "Ungebunden" ein. Verwenden Sie einen, der gleichzeitig als rekursiv und autorisierend fungieren kann.
  2. Konfigurieren Sie Ihren Computer so, dass dieser Server anstelle des Routers für DNS verwendet wird.
  3. Stellen Sie Ihren DNS-Server so ein, dass er Ihre üblichen DNS-Serveradressen als "Weiterleitungen" verwendet (um deren Cache zu nutzen).

Das ist der "Vorbereitungsteil".


Erstellen Sie nun eine neue Zone mit dem Namen "myHostname". Es ist meistens dasselbe wie das Hosten einer eigenen Domain example.com, sodass Sie verschiedenen vorhandenen Tutorials folgen können.

(Eine Zone entspricht einem Autoritätsbereich - normalerweise einer TLD oder einer "regulären" First-Level-Domain, aber in einigen Fällen kann eine Subdomain auch eine eigene Zone sein.)

Viele Leute benutzen dnsmasq für diesen Zweck, aber ich weiß nicht, ob es Wildcards unterstützt. Außerdem ist die Konfiguration sehr undurchsichtig, weshalb ich sie überspringe.

In Unbound (hauptsächlich ein Recursor mit sehr eingeschränkten autorisierenden Hosting-Funktionen) sieht es so aus:

server:
    (other settings...)
    local-zone: "myHostname." static
    local-data: "myHostname. A 192.168.1.234"
    local-data: "*.myHostname. A 192.168.1.234"
    (other settings...)

forward-zone:
    name: "."
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4

Dies zeigt sowohl myHostnameals auch <anything>.myHostnameauf die angegebene IP-Adresse.

In Bind9 (einem autorisierenden Server mit vollem Funktionsumfang) ist es etwas komplexer - Sie müssen eine separate "Zonendatei" erstellen:

; /etc/named.conf

options {
    (other settings...)
    forwarders { 8.8.8.8; 8.8.4.4; };
};

zone "myHostname" {
    type master;
    file "/var/named/myHostname.zone";
};

; /var/named/myHostname.zone (example in short form, with $ORIGIN)

$ORIGIN myHostname.
$TTL 1h
@  SOA  localhost. whatever. ( 1 4h 1h 7d 1h )
@  A    192.168.1.234
*  A    192.168.1.234

; /var/named/myHostname.zone (same example but in full form)

$TTL 1h
myHostname.    SOA  localhost. whatever. ( 1 4h 1h 7d 1h )
myHostname.    A    192.168.1.234
*.myHostname.  A    192.168.1.234

( $ORIGINWird automatisch an alle Namen angehängt, wenn sie nicht bereits mit einem Punkt enden.)


puh, es sieht so aus, als würde mir ein kleiner Lernprozess bevorstehen :-) Vielen Dank für die Anweisungen. Ich werde diesen Beitrag erneut lesen, sobald ich dazu komme. Ich muss erst noch einige Prioritäten angehen.
Arsylum

1

Hier gibt es zwei Probleme.

1) Auflösen eines Namens in eine IP.

Grawitys Antwort darauf ist schon tot. Dazu bearbeiten Sie die Host-Datei entweder manuell auf allen Computern (machbar für eines von zwei Systemen, aber nicht für eine große Anzahl von Systemen).

oder Sie verwenden ein dafür vorgesehenes System. Dieses System ist DNS.

DNS ist nicht ganz trivial, aber es gibt viele einfache Anleitungen, wie man es für begrenzte Arbeit einrichtet. Nachdem Sie dies getan haben, wählen Sie aus, auf welche IP ein Hostname aufgelöst werden soll, indem Sie eine einzelne Datei bearbeiten.

1B)

Ich denke, ein Hauptproblem könnte sein, dass ich die Konzepte und Beziehungen zwischen Hostname, Domainname und dergleichen nicht richtig verstanden habe. Ich habe eine Weile damit zu kämpfen, aber es fällt mir schwer, mich darum zu kümmern.

Dies könnte ein guter Anfang sein. Ohne eine gute Grundlage bauen Sie auf Treibsand. Eine vollständige Antwort darauf würde wahrscheinlich nicht in einen einzelnen Beitrag passen. Suchen Sie also an anderer Stelle nach einer vollständigen Antwort.


2) HTTP.

HTTP ist ein seltsames Protokoll. Fast alle Protokolle im Internet funktionieren über TCP / IP. Datagramme werden über TCP oder UDP an eine IP gesendet.

HTTP bezieht andererseits auch den Hostnamen in seine Anfragen ein. Auf diese Weise können Sie mehrere verschiedene Webseiten mit einer IP-Port-Kombination ausführen. Normalerweise ist dies sehr praktisch, aber Sie müssen den richtigen Host senden (und auflösen). Was bedeutet, dass Sie zuerst googeln und einen DNS-Primer lesen möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.