[Apache2] virtual hosts benaderen via localhost

Pagina: 1
Acties:

  • Trax_Digitizer
  • Registratie: Januari 2002
  • Laatst online: 31-12-2025

Trax_Digitizer

are we there yet?

Topicstarter
Ik heb meerdere websites in een virtualhost configuratie op Apache2 in Linux Debian Etch draaien. Ik kom er vandaag achter dat het niet mogelijk is om vanuit localhost mijn interne LAN interface (eth0) te benaderen. Nader toegelicht:

Doordat het aanroepen van een rssfeed van virtualhost 1 (www.nummer1.nl) vanuit virtualhost 2 (www.nummer2.nl) om onverklaarbare redenen niet goed ging, ben ik op onderzoek uit gegaan. Als ik via een remote shell sessie op mijn server ben ingelogd (bash) en ik doe wget ww.nummer1.nl dan krijg ik (met behulp van bind9 views) de volgende output:

code:
1
2
3
4
--10:00:09--  http://www.nummer1.nl/
           => `index.html'
Resolving www.nummer1.nl... 192.168.1.1
Connecting to www.nummer1.nl|192.168.1.1|:80...


en dan blijft ie "hangen".
Apache is zodanig geconfigureerd dat ie luistert op alle interfaces. Netstat (-ptln) bevestigt dat:

code:
1
2
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     24788/apache2


Echter, apache2 via localhost benaderen mbv telnet gaat wel goed.
Als ik vervolgens een wget uitvoer op http://localhost, dan haal ik met succes een index.html (uit /var/www) op van de default virtualhost (zie ook config hier beneden).

De (volgens mij) relevante stukken uit mijn apache config:
code:
1
2
3
4
5
ServerName 127.0.0.1
Listen 80
Listen 443
NameVirtualHost *:443
NameVirtualHost *:80


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<VirtualHost *:80>
        ServerAdmin bla@bla.bla

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        LogLevel warn

        CustomLog /var/log/apache2/access.log custom
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


code:
1
2
3
4
5
6
7
<VirtualHost *:80>
    ServerName www.nummer1.nl
    ServerAlias nummer1.nl
    ServerAdmin bla@bla.bla
    DocumentRoot /var/domains/www.nummer1.nl
    CustomLog /var/log/apache2/www.nummer1.nl.log custom
</VirtualHost>


De virtualhost van default bevat eigenlijk veel standaard dingen. En ik zie op het eerste oog geen verschillen waardoor een wget op http://locahost wel lukt, en een wget op http://www.nummer1.nl niet.

Zou dit ergens in mijn iptables kunnen zitten? Of wellicht in Bind? Of is mijn apache config toch niet helemaal correct?

  • microsofty710
  • Registratie: Februari 2004
  • Laatst online: 26-10-2025
is '192.168.1.1' toevallig je router? In dat geval kan het zijn dat 'www.nummer1.nl' vertaalt naar je router (via je externe adres). Maar dat deze vervolgens niet de portforward wil uitvoeren van binnen naar binnen (wat me normaal lijkt).

Ik heb moeite met het duidelijk uitleggen. Het komt er op neer dat een portforward waarschijnlijk alleen uitgevoerd word van de WAN poort naar de LAN poort en dat het daar waarschijnlijk mis gaat.

Met localhost verbinden gaat dan wel goed (maar dan kun je de virtual host inderdaad niet meegeven).
Ik heb hiervoor mijn /etc/hosts file aangepast. zoiets:

code:
1
127.0.0.1 localhost www.nummer1.nl nummer1.nl www.nummer2.nl nummer1.nl

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 27-01 15:56

Simkin

Bzzzzz

Heeft je router een optie zoals "Filter Internet NAT Redirection" ? Dit kan er voor zorgen dat resolving niet goed werkt meende ik (uit zetten dus).

  • Trax_Digitizer
  • Registratie: Januari 2002
  • Laatst online: 31-12-2025

Trax_Digitizer

are we there yet?

Topicstarter
192.168.1.1 is inderdaad de router/server/alles.....

De resolving gaat goed. Omdat ik "Filter Internet NAT Redirection" niet uit wil zetten, heb ik gekozen voor views in bind. Met andere woorden: mijn LAN clients krijgen bij een nslookup het interne ip van de server terug en niet het externe.

De domeinnamen toevoegen in /etc/hosts is inderdaad een oplossing. _/-\o_ Dus ik weet nu in ieder geval waar ik het moet zoeken. Ik probeer nu nog even uit te vogelen hoe ik dat "netjes" met iptables kan oplossen. Portforwarding is volgens mij niet de goede term. Het heeft denk ik meer te maken met NAT (masquerading) tussen LAN interface en localhost. Als ik een iptables oplossing heb gevonden, zal ik hem posten.

Dank zover.

  • orillion
  • Registratie: April 2006
  • Laatst online: 08:59
Trax_Digitizer schreef op maandag 07 april 2008 @ 11:36:
192.168.1.1 is inderdaad de router/server/alles.....

De resolving gaat goed. Omdat ik "Filter Internet NAT Redirection" niet uit wil zetten, heb ik gekozen voor views in bind. Met andere woorden: mijn LAN clients krijgen bij een nslookup het interne ip van de server terug en niet het externe.

De domeinnamen toevoegen in /etc/hosts is inderdaad een oplossing. _/-\o_ Dus ik weet nu in ieder geval waar ik het moet zoeken. Ik probeer nu nog even uit te vogelen hoe ik dat "netjes" met iptables kan oplossen. Portforwarding is volgens mij niet de goede term. Het heeft denk ik meer te maken met NAT (masquerading) tussen LAN interface en localhost. Als ik een iptables oplossing heb gevonden, zal ik hem posten.

Dank zover.
De oplossing die jij zoekt heet volgens mij iets in de trend van "internal loopback" als je daarop zoekt icm iptables, vind je vast wel iets.

  • BFS
  • Registratie: Augustus 2001
  • Laatst online: 30-01 13:11

BFS

Rude awakening

orillion schreef op maandag 07 april 2008 @ 11:53:
[...]

De oplossing die jij zoekt heet volgens mij iets in de trend van "internal loopback" als je daarop zoekt icm iptables, vind je vast wel iets.
Ik ken het zelf als NAT loopback..

When did I realize I was God? Well, I was praying and suddenly I realized that I was talking to myself


  • Trax_Digitizer
  • Registratie: Januari 2002
  • Laatst online: 31-12-2025

Trax_Digitizer

are we there yet?

Topicstarter
Het is inderdaad NAT loopback. Eigenlijk hetzelfde probleem waar ik views voor heb gebruikt in bind9. En dus ook weer op twee manieren op te lossen:
1. nog een view erbij die voor lookups vanaf localhost altijd localhost adres terug geeft (de bind9 oplossing van de hierboven genoemde /etc/hosts oplossing)
2. NAT loopback creëren.

Ik heb gekozen voor optie 2. Het was nog even stoeien, want ik wist niet precies waar ik het pakketje aan moest passen (PREROUTING, POSTROUTING, OUTPUT), op welke interface dat moest, en of ik gebruik moest maken van DNAT of SNAT. Ik zat het al helemaal te analyseren, toen BFS met de term NAT loopback kwam (het was me even ontschoten). Toen was de oplossing snel gevonden:

code:
1
iptables -t nat -A OUTPUT -o lo -d 192.168.1.1 -j DNAT --to 127.0.0.1


Eigenlijk logisch als je erover gaat nadenken, maar ja dat is achteraf altijd zo :9

[ Voor 10% gewijzigd door Trax_Digitizer op 07-04-2008 14:20 ]

Pagina: 1