Nie możesz uzyskać dostępu do portu 80 ze zdalnej lokalizacji, ale działa lokalnie?

14

Mam serwer linux na konfiguracji z Apache. Jednak nie mogę uzyskać do niego dostępu za pomocą komputera zdalnego.

Mogę normalnie ssh do serwera.

moja tabela IP:

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

przy użyciu Curl SERVERIP:80i curl localhost:80oba zwracają domyślną stronę z apache.

Co może być problemem?

DucDigital
źródło

Odpowiedzi:

26

Musisz włączyć dostęp do swojego serwera na porcie 80, ponieważ jest on obecnie blokowany przez iptables.

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

Spowoduje to wstawienie reguły na początku do konfiguracji iptables. Po wykonaniu tej czynności i sprawdzeniu, czy działa, należy zapisać konfigurację, aby można było z niej skorzystać przy następnym uruchomieniu usługi,

sudo /sbin/service iptables save

to zapisze bieżącą konfigurację do /etc/sysconfig/iptables.

Jeśli używasz CentOS 7, FirewallD jest właściwą drogą:

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

Sprawdź w przeglądarce, czy działa, a następnie:

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

firewall-cmd --reload

Aby zmiany były trwałe

Iain
źródło
1

Twoje reguły iptables zezwalają tylko na połączenia przychodzące na porcie 22. Otwórz także port 80.

Paweł Brodacki
źródło
... a cmd toiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik
... co jest poprawne, ale nie będzie działać, ponieważ doda tę regułę za tą, która ODRZUCA wszystkie połączenia przychodzące, które nie zostały wcześniej zaakceptowane.
Paweł Brodacki,
To prawda, jestem przyzwyczajony do dodawania go do pliku reguł we właściwej pozycji, zapomniałem wspomnieć. iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited, a następnie poprzedni, a następnie dodaj regułę „odmawiaj wszystkiego” za pomocąiptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
onik
0

Możesz także użyć domyślnej usługi http bezpośrednio

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

Edmond Chui
źródło