Не удается получить доступ к порту 80 из удаленного местоположения, но работает на локальном компьютере?

14

У меня есть сервер Linux на конфигурации с Apache. Однако я не могу получить доступ к нему с помощью удаленного компьютера.

Я могу ssh серверу нормально.

моя таблица 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

используя Curl SERVERIP:80and curl localhost:80, оба возвращают страницу по умолчанию из apache.

В чем может быть проблема?

DucDigital
источник

Ответы:

26

Вам необходимо разрешить доступ к вашему серверу через порт 80, так как он в настоящее время блокируется iptables.

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

Это вставит правило в вашу конфигурацию iptables при запуске. После того, как вы сделали это и проверили, что это работает, вам следует сохранить конфигурацию, чтобы она использовалась при следующем запуске службы,

sudo /sbin/service iptables save

это запишет текущую конфигурацию в /etc/sysconfig/iptables.

Если вы используете CentOS 7, то FirewallD - правильный путь:

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

Проверьте с помощью браузера, что он работает, а затем:

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

firewall-cmd --reload

Сделать изменения постоянными

Iain
источник
1

Ваши правила iptables разрешают только входящие соединения через порт 22. Также откройте порт 80.

Павел Бродацкий
источник
... и командаiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik
... что правильно, но не сработает, потому что оно добавит это правило за тем, которое ОТКАЗЫВАЕТСЯ от всех входящих соединений, не ПРИНЯТЫХ ранее.
Павел Бродацкий
Это правда, я просто привык добавлять его в файл правил в правильную позицию, забыл упомянуть. iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited, затем предыдущий, затем добавьте словарь deny-all сiptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
onik
0

Вы также можете напрямую использовать службу http по умолчанию

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

Эдмонд Чуй
источник