Sowohl meine Arbeitsstation als auch mein Server befinden sich im selben LAN-Segment und können sich gegenseitig anpingen (und ich kann von meiner Arbeitsstation aus problemlos per SSH auf den Server zugreifen).
Habe eine Standardinstallation von Apache auf CentOS 7 durchgeführt.
Habe den Dienst gestartet, kann aber von meiner Arbeitsstation aus nicht zu meinem Webserver navigieren.
NMAP-Berichtsport 80 wird gefiltert.
Ich habe SELinux auf dem Server deaktiviert, aber der Port wird immer noch gefiltert.
Hier ist, was netstat -l mir gibt:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Merkwürdigerweise zeigt netstat -na an, dass Port 80 lauscht, allerdings für IPv6 (obwohl ich irgendwo gelesen habe, dass das nicht unbedingt bedeutet, dass er nicht auch auf IPv4 lauscht).
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 64 10.1.1.1:22 10.2.2.2:44939 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
raw6 0 0 :::58 :::* 7
Hier sind die relevanten Teile meiner /etc/httpd/conf/httpd.conf (die ich nicht geändert habe)
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Files ".ht*">
Require all denied
</Files>
Der Dienst scheint ordnungsgemäß zu laufen:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since Fri 2015-10-02 08:36:40 EDT; 1h 27min ago
Process: 23294 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 23302 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─23302 /usr/sbin/httpd -DFOREGROUND
├─23303 /usr/sbin/httpd -DFOREGROUND
├─23304 /usr/sbin/httpd -DFOREGROUND
├─23305 /usr/sbin/httpd -DFOREGROUND
├─23306 /usr/sbin/httpd -DFOREGROUND
└─23307 /usr/sbin/httpd -DFOREGROUND
Warum lauscht es nicht auf Port 80?
Antwort1
Da Michael Hampton Ihren Beitrag kommentiert hat, würde ich wetten, dass Ihre Firewall (iptables) Ihren Datenverkehr blockiert.
Deaktivieren Sie es entweder ( systemctl disable firewalld
) oder weisen Sie es an, Datenverkehr auf Port 80 zuzulassen ( firewall-cmd --zone=public --add-port=80/tcp --permanent
).
Antwort2
Die Tatsache, ob Port 80 gefiltert ist oder nicht, ist für die Netstat-Ausgabe nicht relevant. Selbst wenn iptables so konfiguriert ist, dass Verbindungen zu diesem Port blockiert werden (DROP oder REJECT), sollten Sie sehen, dass Apache auf Port 80 lauscht.
Der Punkt ist, dass httpd so konfiguriert ist, dass es sowohl auf IPv4- als auch auf IPv6-Adressen (0.0.0.0 und ::) hört, und in diesem Fall zeigt netstat nur die IPv6-Adresse an. Die Erklärung finden Sie hier:
https://bugs.launchpad.net/ubuntu/+source/net-tools/+bug/657270
Kurz gesagt: In diesem Fall kann die IPv6-Verbindung BEIDE Protokolle bedienen und daher wird nur ein Socket geöffnet. Und da nur ein Socket geöffnet ist, wird in der Netstat-Ausgabe nur ein Socket angezeigt.
Antwort3
Überprüfen Sie die iptables-Regeln ( iptables-save
) und sehen Sie nach, ob Port 80 zulässig ist.
Zu Testzwecken können Sie service iptables stop
oder tun iptables -F
.