PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Virtuelle Hosts unter Apache hinter ADSL-Router mit fixer IP-Adresse



hurz
09.03.02, 21:25
Kann mir jemand betreffend Apache und virtuellen Hosts helfen?

Ich habe folgende Konfiguration:
- ADSL-Anschluss mit fixer IP-Adresse
- Der ADSL-Router leitet www-Anfragen an meine IP-Adresse an meinen lokalen Server mit der IP-Adresse 192.168.2.x weiter
- Auf dem lokalen Server ist Apache installeirt

Ich wollte heute also viruelle hosts einrichten. Die Idee wäre, dass mit myDomain.net nur die Demo-seite des Apache erscheint. Mit www.myDomain.net soll jedoch der Apache-Server auf ein spezielles Verzeichnis verweisen, in dem eine simple Homepage mit dem Inhalt "hurz" zu finden ist.

Wenn ich jedoch vom Internet her auf www.myDomain.net zugreife, erscheint die Demo-Seite des Apache-Servers.
Im Apache-Log sehe ich jedoch, dass mit www.myDomain.net auf Apache zugegriffen wurde.
Ich habe den virtuellen Host auf dem Web-Server mit der IP-Adresse 192.168.2.x und dem ServerName www.myDomain.net eingerichtet.

SSL ist übrigens deaktiviert.

www.myDomain.net und myDomain.net existieren als DNS-Einträge. Ihr dürft es gerne ausprobieren.

Warum klappt es nicht, dass zwische myDomain.net und www.myDomain.net nicht unterschieden wird? Liegt es am Port-Mapping?

Ich bin Euch dankbar für Eure Hilfe

geronet
09.03.02, 21:30
Das kommt drauf an welche IP-Adresse er von www.hurz.ch oder hurz.ch bekommt. Überprüfe die DNS-Auflösung betreffend des Hosts www.


Kein Wunder, da das bloss ein alias ist.
--------------
[root@Tux stefan]# nslookup hurz.ch
Server: localhost
Address: 127.0.0.1

Non-authoritative answer:
Name: hurz.ch
Address: 213.144.130.111

[root@Tux stefan]# nslookup www.hurz.ch
Server: localhost
Address: 127.0.0.1

Non-authoritative answer:
Name: hurz.ch
Address: 213.144.130.111
Aliases: www.hurz.ch

Grüsse, Stefan

hurz
09.03.02, 21:34
Hallo geronet

Vielen Dank erstmal für Deine schnelle Antwort.

Da ich nur eine einzige fixe IP-Adresse habe, gibt der DNS-Server im Internet für hurz.ch und www.myDomain.net dieselbe IP-Nummer zurück. Doch es sollte möglich sein, unter einer IP-Adresse mehrere virtuelle Hosts zu platzieren. Nur weiss ich nicht, ob in der Konfiguration des Apache-Servers die IP-Adresse des Rechners (192.168.3.x) oder des ADSL-Routers (213.144.x.y) stehen muss. Die Literatur spricht immer von der Netzkarte des Servers, was in meinem Beispiel der LAN-Adresse und nicht der WAN-Adresse entspricht.

geronet
09.03.02, 21:52
Genau, immer die IP der eigenen Karte eintragen, da Portforwarding auch sowas wie Masquerading ist (in dem Prinzip).

Wenn du zwei verschiedene Webserver haben willst brauchst du auch zwei IP-Adressen, oder du nimmst zwei verschiedene Ports.

Grüsse, Stefan

tomes
09.03.02, 22:20
sogar recht einfach.
Du muss nur eine loopback- Adresse fuer jeden Virtual Host anlegen, also soetwas wie 127.0.0.100 fuer den ersten und 127.0.0.101 fuer den naechsten.
Dann in der http.conf bei LISTEN die IP rein, mit Port.
Zum Schluss noch in den Bereich Virtual Host die noetigen Eintraege. Besser erklaert und ausfuehrlicher hier:
http://www.open-ionix.de/A/3.shtml

@geronet
Glaubst du das Schlund und Partner 10.000sende IP's haben ?

T;o)Mes

geronet
09.03.02, 22:24
Ach stimmt ja, ich war mal wieder ganz wo anders (beim Kernel kompilieren).. Aber dann müsste ja der Router den Hostnamen portforwarden, ich denk da gibt es Probleme da er nur die IP-Adresse verwendet.

Grüsse, Stefan

tomes
09.03.02, 22:49
Der Namesserver kennt fuer mehrere www's ein und die selbe IP, die kommt dann ueber forwarding am Server 192.168.0.100 an und erst der Apache steuert ueber ein Loopback ;-), also eine 127 IP,den richtigen Ordner an.
Loppback 1 -> /var/www/htdocs/erste.www.Adresse/index.html
Loopback 2 -> /var/www/htdocs/zeite.www.adresse/index.html
im Grunde genommen simpel, aber ersteinmal draufkommen.

T;o)Mes

geronet
09.03.02, 23:33
Ja, du hast schon recht aber wenn der Router vorher das Portforwarding zu EINER IP-Adresse, nämlich zu der internen wo der Webserver läuft, veranstaltet, da die Namen www.irgendwas.ch und irgendwas.ch die gleiche IP geben, funktioniert das nicht.
Beispiel:

Du gibst beim IE (bäh) www.hurz.ch ein ODER hurz.ch, beide Namen werden zu der IP-Adresse 213.144.130.111 aufgelöst (siehe oben).

Damit kommt zu dem Router mit der IP 213.144.130.111 eine Anfrage auf Port 80, die sofort zum internen Host 192.168.1.3 Port 80 weitergeleitet wird. Beachte dass es die IP-Adresse ist und nicht der DNS-Name. Der interne Host hat ja nur einen Namen, er kriegt gar nicht mit ob der Client von aussen www.hurz.ch oder hurz.ch eingegeben hat.



Lieg ich da richtig oder steht in der Anfrage (SYN-Paket port 80) zum Webserver noch die DNS-Adresse mit drin?



Grüsse, Stefan

greg
10.03.02, 10:58
Du willst name-based VHosts. Dabei wird der Hostname aus dem HTTP-Header gewonnen. Das funktioniert allerdings nur mit Browsern, die HTTP/1.1 unterstützen. Das sind aber eigentlich alle, die nicht aus dem 1995 stammen.

dazu schreibst du in deine httpd.conf:
NameVirtualHost *


ServerName hurz.ch
ServerAlias hurz.ch www.hurz.ch
DocumentRoot /pfad/zu/deinen/sachen



ServerName bla.hurz.ch
DocumentRoot /pfad/zu/anderen/sachen


(ich habe die html-klammern durch eckige ersetzt)

usw usw :)

ist alles sehr gut in der apache-dokumentation beschrieben.

DNS-Einträge müssen natürlich aber auch da sein.

tomes
10.03.02, 11:35
Wie schon gesagt, dass *weiterleiten* uebernimmt der der Server.
Lies dir mal den Header mit einem Script aus, du wirst verwundert sein, was da alles so drin steht ;-)

@greg
Genauso geht das, nur muss in der httpd.conf vorher unter dem Punkt LISTEN, noch eine loopback-IP vergeben werden, 127.0.0.x.

T;o)Mes

P.S.: Achso, der Apache muss dann mit -S gestartet werden, damit die httpd.conf geparst wird.

greg
10.03.02, 19:40
Original geschrieben von tomes

@greg
Genauso geht das, nur muss in der httpd.conf vorher unter dem Punkt LISTEN, noch eine loopback-IP vergeben werden, 127.0.0.x.


Hmm, wieso?

Versteh ich nicht, warum das nötig sein sollte.

Funktioniert bei mir auch ohne sowas. In der Apache-Doku wird das mit den loopback-IP's auch nicht erwähnt.( http://httpd.apache.org/docs/vhosts/name-based.html )

hurz
10.03.02, 22:26
Hallo Greg

Du scheinst endlich mehr zu wissen. Die andern zwei haben zwar ihren guten Willen gezeigt, aber ihre Antworten haben mich gar nicht überzeugt.

Gestern Abend erstellte ich übrigens auf dem Default-Pfad eine Page, welche zwei Sub-Directories hat: sounds und pictures.

In der Seite konnten keine Daten aus diesen zwei Verzeichnissen geöffnet werden. Da kam mir die Idee, ob ich wogl was mit den Berechtigungen falsch mache.

hurz.ch sollte index.html in /var/www/http öffnen
www.hurz.ch sollte index.html in /var/www/http/hurz öffnen

Seit heute meldet der Apache-Server übrigens, ich hätte gar kein Recht, die Seite zu öffnen. Leider weiss ich nur nicht, was seit gestern Abend geändert haben sollte.
Gestern Abend setzte ich per chmod die Rechte aller Web-Verzeichnisse auf 644 (also rw-rw-rw) als root.

Da ich heute die Berechtigungs-Meldung hatte, setzte ich alles mal auf 777. Doch die Meldung erscheint nach wie vor. An meinem ADSL-Router kann es nicht liegen, denn ich sehe den Zugriff im access_log.

Hab ich da was verschossen, indem ich einerseits mit vi und andererseits mit apacheconf arbeite?

Gruss

Hurz

hurz
10.03.02, 22:32
Hallo zusammen

Kann es sein, dass mein Web-Server von gestern auf heute gehackt wurde?

Da ich hier meine realen Namen angegeben habe, legte ich meinen Server offen dem Internet hin.

Falls sich einer von euch den Scherz erlaubt hat, wäre ich dankbar, wenn er es mir mitteilen könnte. Dass der Server gehackt wird ist nicht so tragisch, denn das bereichert meine Erfahrung und hilft mir, mich vor Eindringlingen zu schützen. Ich wäre jedoch froh, wenn diese Scherzbolde mir auch wieder aus der Sackgasse helfen würden.

Gruss

Hurz

Newbie2001
11.03.02, 13:34
Hi hurz!

ich hatte mal dasselbe Problem wie du, dass ich von heut auf morgen nicht mehr auf die verzeichnisse zugreifen konnte. Bei mir hat das Ändern des Inhabers der Verzeichnisse auf den Benutzer "wwwrun" Abhilfe geschaffen. Du hast ja geschrieben dass die Verzeichnisse bei dir dem Benutzer root gehören ändere das einfach mal auf wwrun und schu was dabie rauskommt.

greg
11.03.02, 15:03
hurz:
Du solltest natürlich auch für die entsprechenden Verzeichnisse passende Rechte in der apache-config setzen

also sowas wie:


AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI

(nur mal ein Beispiel; Klammern wieder ersetzt)

Du musst noch +x für die Verzeichnisse setzen, +x ist nicht nur das Recht zum Ausführen, sondern gleichzeitig auch das zum Durchsuchen.

greg
11.03.02, 15:05
Das dein Apache gehackt wurde, kann ich mir so nicht vorstellen :)

Trotzdem kannst du sicherheitshalber ja auf 1.3.23 updaten.

hurz
15.03.02, 20:51
Hallo miteinander

Mein Web-Server läuft jetzt
Es kamen zwei Probleme zusammen, was meinen Web-Server betrifft: Zum Berechtigungsproblem half mir gregs letzter Hinweis weiter. Es fehlten tatsächlich die x-Berechtigungen.

Zu der falschen host-Auflösung: im httpd.conf steht auf einer Zeile:

NameVirtualHost *

weiter unten werden die einzelnen Hosts mit <VirtualHost * > definiert.

Bei mir stand unter NameVirtualHost anstelle des Sterns eine IP-Adresse. Bei den Host-Definitionen jedoch ein Stern. Die IP-Adresse, bzw. Stern müssen jedoch gleich sein.

Da ich den httpd-deamon vom Gnome-X-Windows aus mit dem Dienst-Manager restartete, gaukelte mir dieser vor, dass alles in Ordnung ist.

Auf den obigen Fehler wurde ich erst bei der Eingabe von
/etc/init.d/httpd restart
aufmerksam gemacht.

Deshalb mein Tip an alle Linux-User:
- entweder nach dem restart aus X-Windows in die Datei /var/log/messages schauen
- oder die daemons in der textkonsole restarten, wo die Fehler direkt angezeigt werden!

Gruss

hurz :D