OpenBSD Webserver mit httpd will einfach nicht funktionieren

Mischiman

glaubt an OpenBSD
Hallo liebe Gemeinde,

gerade habe ich in meiner Verzweiflung hier ins Forum geschaut und gesehen, dass ich 2009 das letzte Mal hier war. :eek: Eine lange Zeit. :)

Ich habe ein Problem und weiß wirklich nicht mehr weiter. Ich habe mir OpenBSD 5.8 base für amd64 installiert und httpd konfiguriert. Simpelste config, mittlerweile in allen Varianten.

httpd startet, -check ist auch okay - aber egal wie ich es anstelle, immer ERR_CONNECTION_REFUSED

Bin ich zu blöd oder was? ;'(

Wenn ich am Client Wireshark mache, sehe ich nur [SYN] vom Client und gleich drauf [RST, ACK].

Wo ist mein Denkfehler? Welche Infos muss ich hier liefern?

Ich hoffe Ihr könnt mir helfen.

Ich wünsche Euch allen ein frohes Weihnachtsfest und einen guten Start ins neue jahr 2016! :)

Viele Grüße

Michael
 
Hallo d-p,

vielen Dank für die schnelle Antwort. pf(4) läuft im default, auch wenn pf disable, ändert sich nichts.

So sieht die /etc/httpd.conf aus:

# more /etc/httpd.conf

ext_addr="a.b.c.d"
server "default" {
listen on $ext_addr port 80
listen on $ext_addr tls port 443
}
types {
text/css css ;
text/html htm html ;
text/txt txt ;
image/gif gif ;
image/jpeg jpg jpeg ;
image/png png ;
application/javascript js ;
application/xml xml ;
}
server "webserver" {
listen on $ext_addr port 80
listen on $ext_addr tls port 443
root "/htdocs/webserver"
}​

Mehr nicht. Zertifikate sind erzeugt nach Anleitung. Ein "netstat -a" gibt als Ausgabe:

Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp 0 64 webserver.ssh 10.0.0.1.53218 ESTABLISHED
tcp 0 0 localhost.smtp *.* LISTEN
tcp 0 0 webserver.ssh *.* LISTEN
tcp 0 0 webserver.https *.* LISTEN
tcp 0 0 webserver.www *.* LISTEN

Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
udp 0 0 webserver.32036 timeserver1.ntp
udp 0 0 webserver.43555 timeserver2.ntp
udp 0 0 *.syslog *.*
udp 0 0 webserver.ntp *.*

Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp6 0 0 fe80::1%lo0.smtp *.* LISTEN
tcp6 0 0 localhost.smtp *.* LISTEN

Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
udp6 0 0 *.syslog *.*​

Sieht eigentlich okay aus, meine ich. Blöde Anfängerfrage: muss ich was mit "inetd" machen? Wenn ja, was?

Hinweis: ssh über Netz geht und ntp synchronisert auch über das Internet.

Vielen Dank nochmal und nochmals frohes Fest und guten Start 2016


Viele Grüße

Michael
 
Welcher Hostname wird verwendet?

Ich wette, hier ist DynDNS im Spiel und du versuchst vom LAN aus, auf den entspr. Namen zu connecten und der Router kann kein NAT reflection o.ä.
 
Der Server hat eine manuell vergebene statische IP-Adresse im Internet. DynDNS ist nirgendwo im Spiel.

Hostname ist webserver FQDN ist webserver.domain-Name. Den dns-Eintrag hat mein Provider für mich gemacht.
 
Probiers mal mit:

ext_addr="*"

und restarte den httpd nochmal mit ``/etc/rc.d/httpd restart'' und checke mit ``/etc/rc.d/httpd check'', ob der httpd auch wirklich gestartet ist.
 
Fröhliche Weihnachten! :)

ext_addr="*" habe ich auch schon, jetzt aktuell auch.

Was ich nicht verstehe: netstat -a gibt aus

Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp 0 0 *.https *.* LISTEN
tcp 0 0 *.www *.* LISTEN

Also läuft httpd!

Auf dem Server selbst sagt nmap folgendes:

# nmap webserver

Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-25 18:50 CET

Nmap scan report for webserver

Host is up (0.0000040s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https


Ports sind also da, aber ein nmap vom client zeigt nur

PORT STATE SERVICE
22/tcp open ssh

Das heißt, ich bin etwas weiter und weiß, dass 80/tcp und 443/tcp nur "irgendwie intern" angeboten werden. Aber was mache ich nur falsch?

Ich habe den Webserver doch gerade erst neu installiert. Das kann doch nicht schwer sein. Ich habe langsam keine Idee mehr.
 
Also nochmal zur Sicherheit: es ist kein NAT im Spiel?

Wenn der httpd auf *:80 lauscht, pf nichts filtert und der Hostname auf die richtige Adresse zeigt, dann _muss_ das funktionieren. Ohne konkreten Hostnamen ist alles von unserer Seite aus allerdings Stochern im Nebel.
 
[...]Simpelste config[...]
[...]
listen on $ext_addr port 80
listen on $ext_addr tls port 443
[...]
Die simpelste Konfiguration wäre zunächst eine ohne die "tls"-Zeile(n) gewesen, dann läuft der httpd normalerweise auch auf Anhieb. ;)

Wenn mit TLS, dann müssen die Zertifikate an entprechender Stelle liegen (beim zweiten Befehle reicht die Angabe Deiner IP-Adresse (a.b.c.d)):
openssl genrsa -out /etc/ssl/private/server.key
openssl req -new -x509 -key /etc/ssl/private/server.key -out /etc/ssl/server.crt -days 365

Den httpd neu starten und sowohl http: als auch https: sollten laufen. Hier nochmal eine minimale /etc/httpd.conf:

ext_addr="a.b.c.d"
server "default" {
listen on $ext_addr port 80
listen on $ext_addr tls port 443
}​

Das Verhalten ist in der Tat unerwartet, denn wenn die TLS-Zeile in der httpd.conf auftaucht, aber kein Zertifikat gefunden wird, funktioniert auch http: nicht mehr...

"God Jul" an Alle aus Schweden
Michael
 
Richtig, wenn die Zertifikate nicht existieren, läuft auch httpd nicht. So war das auch bei mir. Diese Fehlermeldung habe ich dann auch in den logs /var/log/daemon, /var/log/messages gesehen.

Die Zertifikate sind richtig. Wenn ich die Zeile mit tls weglasse, läuft nur noch http, aber das kann ich dann auch nicht von außen ansprechen. httpd lauscht dann nur noch auf einem Port statt auf zwei, das Resultat ist jedoch das Gleiche.

@TCM: ich dachte, ich habe alles relevante mitgeteilt. Welche conf-Dateien soll ich den posten?

Viele Grüße

Michael
 
Versuche mal ein ``telnet deineDomain 80'' von einem anderen Rechner auf deinen Webserver. Danach probiere mal ein ``telnet a.b.c.d. 80'', also mit der IP und nicht mit der domain. Ansonsten faellt mir auch nichts mehr ein.
 
Hallo Ihr lieben Leute,

ich gehe weiterhin davon aus, dass ich irgendwie einen Denkfehler habe und nichts falsch konfiguriert ist.

Jetzt habe ich mal lynx auf den Server gepackt

lynx http:/FQDN --> funktioniert
lynx https:/FQDN --> funktioniert

lynx http://IP-Adresse -> 403 forbidden
lynx https://IP-Adresse -> 403 forbidden

Ich dreh noch am Rad, das kann ich im Moment nicht verstehen.
 
ich gehe weiterhin davon aus, dass ich irgendwie einen Denkfehler habe und nichts falsch konfiguriert ist.
Hm, ich denke, da ist etwas anderes als der httpd zerkonfiguriert. Eine Ja-und-Amen-Installation von OpenBSD nur mit aktiviertem httpd, meiner obigen httpd.conf und den Zertifikaten läuft definitiv.
Wird keine index.html in /var/www/htdocs gefunden, gibt es ein "403", Du hast zwei Definitionen (default und webserver), das zweite Verzeichnis muss also unter .../htdocs existieren (und eine index.html enthalten).
Wenn dann nicht irgendwo Loadbalancer, transparente Proxies, falsche Routen, merkwürdige hosts-Dateien oder DNS-Einträge oder was auch immer dazwischenfunkt, sollte das aus dem Stand heraus laufen. Hast Du mal frisch installiert und dann nur den httpd angeworfen?

Viele Grüße
Michael
 
...Nachtrag: Deine obige httpd.conf funktioniert bei mir nur dann, wenn ich das zweite server "webserver" {...}-Statement komplett entferne. o.O
 
OMG, Ich habs! :D

Mein Provider hat die benötigten Standardports noch nicht freigeschaltet!

Ich habe jetzt interims-weise einen freien Port > 1024 genommen, damit funktioniert es. :o

Vielen lieben Dank für die Unterstützung; hätte ich das mal früher bedacht, hätte ich weniger lange im System suchen müssen. . .;'(

. . .dafür habe ich viel dazu gelernt. :belehren:

Guten Rusch und bis bald!

Michael
 
Zurück
Oben