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?

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


1

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


... 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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.