Sie können nicht von einem entfernten Standort auf Port 80 zugreifen, arbeiten aber lokal?


14

Ich habe einen Linux-Server zur Konfiguration mit Apache. Ich kann jedoch nicht über einen Remotecomputer darauf zugreifen.

Ich kann normal auf den Server ssh.

meine IP-Tabelle:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

netstat -ant

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 SERVERIP:80                 0.0.0.0:*                   LISTEN
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      0 0.0.0.0:45117               0.0.0.0:*                   LISTEN
tcp        0    196 SERVERIP:22                 MyIP:3149                   ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::47193                    :::*                        LISTEN

Mit Curl SERVERIP:80und geben curl localhost:80beide die Standardseite von Apache zurück.

Woran könnte das liegen?

Antworten:


26

Sie müssen den Zugriff auf Ihren Server über Port 80 aktivieren, da er derzeit von iptables blockiert wird.

sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Dadurch wird die Regel zu Beginn in Ihre iptables-Konfiguration eingefügt. Sobald Sie dies getan und getestet haben, dass es funktioniert, sollten Sie die Konfiguration speichern, damit sie beim nächsten Start des Dienstes verwendet wird.

sudo /sbin/service iptables save

Dadurch wird die aktuelle Konfiguration in geschrieben /etc/sysconfig/iptables.

Wenn Sie CentOS 7 verwenden, ist FirewallD der richtige Weg:

firewall-cmd --zone = public --add-port = 80 / tcp

Überprüfen Sie mit Ihrem Browser, dass es funktioniert, und dann:

firewall-cmd --zone = public --add-port = 80 / tcp --permanent

firewall-cmd --reload

Änderungen dauerhaft vornehmen


1

Ihre iptables-Regeln erlauben nur eingehende Verbindungen über Port 22. Öffnen Sie auch Port 80.


... und der cmd istiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
— onik

... was korrekt ist, aber nicht funktioniert, da diese Regel hinter der Regel angehängt wird, die alle eingehenden Verbindungen ablehnt, die zuvor nicht akzeptiert wurden.
— Paweł Brodacki

Das stimmt, ich bin nur daran gewöhnt, es der Regeldatei an der richtigen Position hinzuzufügen, vergessen zu erwähnen. iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited, dann die vorherige, dann fügen Sie die allerneueste Regel mitiptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
— onik

0

Sie können den Standard-http-Dienst auch direkt verwenden

firewall-cmd --permanent --zone = public --add-service = http

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.