
У меня есть веб-сервер Apache (2.4.10), работающий на настольном компьютере с Debian (Jessie, 8).
У рабочего стола есть статический локальный IP-адрес (192.168.xx), а мой WAN (публичный) IP-адрес также был зафиксирован моим провайдером (82.xxx). Добавлена переадресация порта 80 на этот рабочий стол.
Я могу получить доступ к веб-странице из моей локальной сети без проблем, но я не могу получить к ней доступ с помощью адреса WAN, внутри или снаружи моего дома: я получаю сообщение "Веб-страница недоступна - ERR_CONNECTION_REFUSED" от Chrome. Обратите внимание, что я могу открыть свой маршрутизатор с помощью адреса WAN (на другом порту).
Сама веб-страница представляет собой не более чем «index.html» с надписью Hello World.
Я пробовал отключить брандмауэр iptables, не помогло. Я пробовал другой порт, кроме 80, не помогло. Я звонил интернет-провайдеру, и порт 80 не заблокирован. Я уже с ума сошел в гугле. Есть ли у кого-нибудь предложения, как сделать сайт доступным?
решение1
Я решил это!
Благодаря Moonpoint я понял, что проблема была в переадресации портов. Поэтому я еще раз взглянул и заметил, что для правила порта 80 "Интерфейс WAN" был установлен на "ADSL" (по умолчанию). Я не знаю, что это значит, поэтому я никогда его не менял. Я пробовал разные варианты и установка на "ETHWAN" решила проблему. Теперь я могу получить доступ к веб-странице публично, и я добавил no-ip DDNS, который также работает.
EDIT: Теперь я узнал, что интерфейс ETHWAN WAN был просто добавлен к маршрутизатору моим интернет-провайдером и является интерфейсом для подключения по оптоволокну.
решение2
Когда вы утверждаете, что пытались отключить брандмауэр iptables, но безуспешно, вы имеете в виду, что вы отключили брандмауэр iptables, но все равно не смогли подключиться к веб-серверу с внешнего IP-адреса, или вы имеете в виду, что вам не удалось отключить брандмауэр iptables на основе хоста? Проверьте журналы доступа и ошибок Apache для вашего веб-сайта, чтобы увидеть, зарегистрирована ли какая-либо попытка доступа к системе с внешнего IP-адреса в каком-либо из этих файлов. Проверьте ваш /etc/httpd/conf/httpd.conf
файл Apache. Есть ли в нем какой-либо раздел, похожий на следующий, где-либо в файле:
<Directory /home/www/example>
Order Deny,Allow
Deny from all
Allow from 192.168 127.0.0.1
</Directory>
В приведенном выше примере доступ разрешен со всех, кромелокальный хостадрес 127.0.0.1 и системы в той же локальной сети, т. е. 192.168.xxx.xxx, запрещены. Если вы хотите сделать сервер доступным для всего мира, "Запретить всем" будет неуместным.
Вы можете локализовать проблему в системе Debian, на которой запущен веб-сервер Apache, или маршрутизаторе, на котором настроена переадресация портов, при условии отсутствия промежуточного сетевого оборудования, используяtcpdumpкоманда в системе Debian Linux. Выполните команду tcpdump -i any port 80
как root. Это заставит tcpdump искать только соединения с портом 80 на любом интерфейсе, игнорируя остальной трафик. Затем попробуйте подключиться к веб-серверу с внешнего адреса. Если tcpdump показывает, что трафик на порт 80 достигает системы Linux, то переадресация портов работает правильно. Если нет, у вас, вероятно, проблема с переадресацией портов, поэтому дважды проверьте, что вы перенаправляете порт 80 на правильный IP-адрес веб-сервера.