У меня есть 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:80
и curl localhost:80
, оба возвращают страницу по умолчанию из apache.
В чем может быть проблема?
Вам необходимо разрешить доступ к вашему серверу через порт 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 - правильный путь:
брандмауэр-cmd --zone = общедоступный --add-port = 80 / tcp
Убедитесь в своем браузере, что он работает, а затем:
firewall-cmd --zone = public --add-port = 80 / tcp --permanent
брандмауэр-cmd --reload
Сделать изменения постоянными
Ваши правила iptables разрешают входящие соединения только через порт 22. Откройте также порт 80.
вы можете использовать -I вместо -A и cmd - это iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Вы также можете напрямую использовать службу http по умолчанию
брандмауэр-cmd --permanent --zone = public --add-service = http