[gelöst] Apache über Port 80 nicht erreichbar

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

[gelöst] Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 27.05.2011 15:28:47

Hallöchen im Forum,

ich habe folgendes Problem: Der Apache antwortet auf dem Standardport nicht, bzw. es erscheint nur die Standard-Seite,das der Server nicht erreichbar ist (Fehler: Netzwerk-Zeitüberschreitung, Firefox). Wenn ich jedoch in der "etc/apache2/ports.conf" einen anderen Port eintrage, beispielsweise 3000, dann kommt eine Fehlerseite vom Apache (also auf dem Port 3000).

Es hat schonmal funktioniert, jedoch lief es seitdem ich den Tomcat (manuell über wget) eingerichtet habe nicht mehr, da dieser plötzlich auch über Port80 erreichbar war (statt wie konfiguriert über 8080). Inzwischen ist der Tomcat deinstalliert.

Folgende Ausgaben bekomme ich:
netstat -tulpn

Code: Alles auswählen

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6878/apache2
/etc/apache2/ports.conf

Code: Alles auswählen

NameVirtualHost *:80
Listen 0.0.0.0:80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>
/etc/apache2/sites-enabled/000-default

Code: Alles auswählen

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        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

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    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>

Zuletzt geändert von skalaraffe am 30.05.2011 17:17:44, insgesamt 1-mal geändert.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Apache über Port 80 nicht erreichbar

Beitrag von syssi » 27.05.2011 16:34:17

Lokal scheint alles ordentlich zu sein. Wenn du auf Nummer sicher gehen willst, dann probier mal ein:

Code: Alles auswählen

wget http://localhost
auf dem System, wo der Apache laeuft. Alternativ solltest/koenntest du localhost durch die Netzwerk-IP ersetzen, jedoch sagt dein netstat-Auszug schon aus, dass dein Apache eigentlich auf jedem Netzwerkgeraet lauscht... aber man kann ja nie wissen. Wget sollte einen Status-Code 200 liefern, dann waere alles in Ordnung.

Ich tippe vielmehr auf ein NAT-Problem oder eine Firewall, die in Vergessenheit geraten ist.

Gruss syssi

skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

Re: Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 27.05.2011 16:37:42

Jetzt wirds echt Strange:

Mit telnet kommt eine gültige Antwort:

Code: Alles auswählen

telnet x.x.x.x 80
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.
GET / HTTP/1.1
HOST: x.x.x.x

HTTP/1.1 200 OK
Date: Fri, 27 May 2011 14:17:15 GMT
Server: Apache/2.2.9 (Debian)
Last-Modified: Wed, 25 May 2011 15:33:59 GMT
ETag: "36031-31-4a47b6eede7c0"
Accept-Ranges: bytes
Content-Length: 54
Vary: Accept-Encoding
Content-Type: text/html

<html><body><h1>Worked</h1></body></html>
Connection closed by foreign host.
Kommt eine Anfrage von Firefox, dann geht in die folgender Eintrag in die Apache-error.log:

Code: Alles auswählen

[error] [client x.x.x.x] Invalid method in request \xff\xf4\xff\xfd\x06

skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

Re: Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 27.05.2011 16:40:28

syssi hat geschrieben:Lokal scheint alles ordentlich zu sein. Wenn du auf Nummer sicher gehen willst, dann probier mal ein:

Code: Alles auswählen

wget http://localhost
auf dem System, wo der Apache laeuft. Alternativ solltest/koenntest du localhost durch die Netzwerk-IP ersetzen, jedoch sagt dein netstat-Auszug schon aus, dass dein Apache eigentlich auf jedem Netzwerkgeraet lauscht... aber man kann ja nie wissen. Wget sollte einen Status-Code 200 liefern, dann waere alles in Ordnung.

Ich tippe vielmehr auf ein NAT-Problem oder eine Firewall, die in Vergessenheit geraten ist.

Gruss syssi
Danke erstmal. Auch hier scheints ok zu sein:

Code: Alles auswählen

wget http://localhost
--2011-05-27 16:39:00--  http://localhost/
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 54 [text/html]
Saving to: `index.html'

100%[======================================>] 54          --.-K/s   in 0s

2011-05-27 16:39:00 (5.83 MB/s) - `index.html' saved [54/54]

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Apache über Port 80 nicht erreichbar

Beitrag von syssi » 28.05.2011 08:17:33

Dann schnapp dir mal einen anderen Browser und teste mit diesem. Moeglicherweise ist dein Firefox kaputt? Laufende Firefox-Instanzen verhalten sich nach einer Aktualisierung oft sehr seltsam. Ein Neustart (des Browsers) bringt Abhilfe.

skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

Re: Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 30.05.2011 10:39:57

@syssi: Habs jetzt auch mit Chrome versucht, damit klappts aber auch nicht

Ich bin echt ratlos.

1) Die Firewall ist es nicht:

Code: Alles auswählen

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
2) Apache lauscht am Port 80

Code: Alles auswählen

netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1181/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1447/exim4
tcp6       0      0 :::80                   :::*                    LISTEN      3750/apache2
tcp6       0      0 :::22                   :::*                    LISTEN      1181/sshd
3) mit telnet bekomme ich auf port 80 eine gültige Antwort, inkl der dort liegenden dummy-html und dem zugehörigen eintrag in der access.log
4) mit firefox und chrome bekomme ich "Verbindung fehlgeschlagen" bzw "could not connect" und KEINEN Eintrag in der error/access.log
5) ändere ich den port in der ports.conf auf bsp. 81, dann kommt von beiden browsern eine gültige apache-seite

hat irgendwer eine idee?

Benutzeravatar
Maik aus MS
Beiträge: 603
Registriert: 19.08.2005 17:01:19
Wohnort: Greven
Kontaktdaten:

Re: Apache über Port 80 nicht erreichbar

Beitrag von Maik aus MS » 30.05.2011 11:02:55

Was fuer eine Datei soll der Apache denn ausliefern(index.html, index.php)? Und wie sieht die Berechtigung
der Datei aus? Wenn du mit dem Browser auf dem gleichen Rechner das aufrufst:

Code: Alles auswählen

http://localhost
sollte er zumindest die index.html(sofern vorhanden) anzeigen.

Maik
Die mich kennen mögen mich.
Die mich nicht mögen können mich.

skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

Re: Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 30.05.2011 11:09:09

Maik aus MS hat geschrieben:Was fuer eine Datei soll der Apache denn ausliefern(index.html, index.php)? Und wie sieht die Berechtigung
der Datei aus? Wenn du mit dem Browser auf dem gleichen Rechner das aufrufst:

Code: Alles auswählen

http://localhost
sollte er zumindest die index.html(sofern vorhanden) anzeigen.

Maik
Es handelt sich um einen virtuellen Server der Uni, daher kann ich das nicht so aufrufen. Nur mit:

Code: Alles auswählen

wget http://localhost
Geliefert wird die index.html aus /var/www, so wie es mit telnet ja auch funktioniert.

Die Berechtigungen sind:

Code: Alles auswählen

-rw-r--r-- 1 root root 54 May 25 17:33 index.html

Benutzeravatar
Maik aus MS
Beiträge: 603
Registriert: 19.08.2005 17:01:19
Wohnort: Greven
Kontaktdaten:

Re: Apache über Port 80 nicht erreichbar

Beitrag von Maik aus MS » 30.05.2011 11:28:52

Dann ist es ja ien anderer Rechner. Fuer mein Verstaendnis muesste man den Apache ueber die IP
ansprechen. Ich kenne mich ein bischen mit dem Apache aus aber nicht mit VM's. Da muss ich passen.

Maik
Die mich kennen mögen mich.
Die mich nicht mögen können mich.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Apache über Port 80 nicht erreichbar

Beitrag von syssi » 30.05.2011 11:33:46

skalaraffe hat geschrieben:Es handelt sich um einen virtuellen Server der Uni, daher kann ich das nicht so aufrufen.
Okay, lokal liefert dein Apache also Seiten aus. Versuch das Gleiche mal aus der Ferne:

Code: Alles auswählen

wget http://<oeffentlicheIPdesServers
Ich vermute stark, dass du dann wieder ein "Connection refused" erhaeltst. Anschließend wuerde ich auf die Infrastruktur der Uni tippen. In meiner Uni musste man sich die offenen Ports wuenschen. Das bei euch die Standardports blockiert sind und nicht Standards (z.B. Port 81) offen scheint mir jedoch ein wenig seltsam.

Gruss syssi

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Apache über Port 80 nicht erreichbar

Beitrag von syssi » 30.05.2011 11:35:17

Wayne. Hier findest du die Loesung: http://qtec.in/2010/09/02/vhost-problem ... _too_long/

skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

Re: Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 30.05.2011 13:04:19

syssi hat geschrieben:Wayne. Hier findest du die Loesung: http://qtec.in/2010/09/02/vhost-problem ... _too_long/
Leider war sie das nicht und wie du schon vermutet hast ist die wget-Anfrage von außen nicht geglückt über Port 80.

Ich habe nun folgendes festgestellt:

Wenn ich in der ports.conf den Port 8080 angebe (auch beim NameVirtualHost), dann funktioniert im Browser (Firefox/Chrome) beim Aufruf

Code: Alles auswählen

http://<oeffentlicheIPdesServers>
(also auf Port 80) alles wie es soll und die Standard-html erscheint. Kann es sein, das da irgendwo eine Weiterleitung (von 80 auf 8080) existiert?

Das steht jetzt in der ports.conf:

Code: Alles auswählen

NameVirtualHost <oeffentlicheIPdesServers>:8080
Listen 8080
Jetzt bekomme ich aber über telnet/wget über Port 80 KEINE Antwort mehr (eigentlich auch klar, da in der ports.conf ja festgelegt wurde, das er nur an Port 8080 lauschen soll). Irgendwas passt doch da nicht...

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Apache über Port 80 nicht erreichbar

Beitrag von syssi » 30.05.2011 16:50:15

8080 ist einfach der Alternativport zu 80. Mit Pech erwischst du aber mal einen Browser, der nach einem fehlgeschlagenen Zugriff auf Port 80 nicht gleich Port 8080 versucht. Außerdem führt es zu Verzögerung. Ich glaube mittlerweile, dass das Problem nicht bei dir liegt, sondern deinem Uni Netz.

Gruss syssi

skalaraffe
Beiträge: 7
Registriert: 27.05.2011 15:11:58

Re: Apache über Port 80 nicht erreichbar

Beitrag von skalaraffe » 30.05.2011 17:16:43

Aaaaaaaargh... ich hab den Übeltäter gefunden :evil:

In unserem Firewall-Script in dem wir die Input/Output-chains definieren steht ziemlich weit unten, das eine weitere Datei angelegt wird:

Code: Alles auswählen

iptables-save > /etc/firewall.conf
#
echo -n "#"      > /etc/network/if-up.d/iptables
echo -n !       >> /etc/network/if-up.d/iptables
echo /bin/sh    >> /etc/network/if-up.d/iptables
echo "iptables-restore < /etc/firewall.conf" >> /etc/network/if-up.d/iptables
#
chmod +x /etc/network/if-up.d/iptables

Jetzt habe ich mal in die Datei /etc/firewall.conf geschaut und dort steht ganz unten dann folgendes:

Code: Alles auswählen

# Completed on Mon May 30 16:31:26 2011
# Generated by iptables-save v1.4.2 on Mon May 30 16:31:26 2011
*nat
:PREROUTING ACCEPT [3981:188318]
:POSTROUTING ACCEPT [94:6668]
:OUTPUT ACCEPT [286:21260]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT
PREROUTING - toll :evil: Wo kommt der Mist jetzt wieder her? Davon steht nix in unserem Firewall-Script... Aber wenigstens ist es jetzt nach dem auskommentieren so wie es sein soll! Vielen Dank erstmal!

Antworten