Не могу получить доступ к сайту WordPress с внешнего IP, хотя внутри сети он работает

20 июл. 2017 г., 16:34:03
Просмотры: 17.3K
Голосов: 0

Я настроил небольшой сайт с использованием LAMP (Raspbian) и WordPress.
Для сайта не будет регистрироваться доменное имя.
Сейчас я получаю доступ к сайту изнутри локальной сети.
Для доступа я просто ввожу внутренний IP-адрес сервера.
Я хочу получить доступ к сайту извне локальной сети через публичный IP.
Публичный IP статический, и настроен Firewall для трансляции внутреннего IP/порта по умолчанию(80) в публичный статический IP/(случайный порт) и обратно. Внутренний IP также статический, и Raspberry Pi подключен напрямую к FW через кабель.

Если я отправляю запрос с внешнего IP, страница никогда не загружается, и в админ-панели (через плагин WP Statistics) я вижу запрос.

Хочу отметить, что я изменил wp-config.php, а именно эти строки:

define('WP_HOME','http://внутреннийIP/');

define('WP_SITEURL','http://внутреннийIP/');

Какие изменения мне нужно внести, чтобы сайт отвечал на внешние запросы?

Есть ли что-то, что я должен проверить в конфигурации WordPress/Apache/mySql/Linux?

Сообщите, если потребуется какая-либо информация о конфигурации.

5
Комментарии

Не все IP-адреса являются маршрутизируемыми. Существуют частные IP-адреса, которые не маршрутизируются; они используются только во внутренних сетях. Если ваша компания использует VPN-клиент, обычно он позволяет получать доступ к внутренним IP-адресам.

user42826 user42826
20 июл. 2017 г. 18:36:16

@user42826 Насколько мне известно, настройки сети корректны. Отдельная компания отвечает за IT-инфраструктуру и межсетевой экран. Кроме того, настройки были проверены также производителем Firewall. В ходе краткого тестирования сети мне сообщили, что WordPress (или Linux/Apache — точно не знаю) перенаправляет на свой собственный IP-адрес и не отвечает на внешний IP-адрес. Поскольку я новичок в WordPress, я хочу выяснить, может ли такое поведение быть результатом некоторых настроек, и как я могу изменить сайт, чтобы он был доступен только извне.

vkoukou vkoukou
20 июл. 2017 г. 19:25:08

Можете ли вы пропинговать IP-адрес? Можете ли вы подключиться к IPaddress:port 80? Исключите WordPress из цепочки. (Снаружи) Попробуйте получить доступ к статической HTML-странице, например, http://ipaddress/readme.html

user42826 user42826
20 июл. 2017 г. 19:46:08

@user42826 Спасибо за ответы. IP-адрес не пингуется (скорее всего из-за настроек безопасности). Но я могу без проблем получить доступ к ipaddress/readme.html и другому статическому контенту с веб-сервера. Если я вручную ввожу index.php в браузере, меня перенаправляет на URL входа (я использовал плагин Theme My Login, чтобы разрешить доступ к сайту только залогиненным пользователям), я вижу только статический контент. Это действительно подтверждает предположение, что с сетью всё в порядке, а проблема в Wordpress. Есть какие-то предположения, что может вызывать такое поведение?

vkoukou vkoukou
20 июл. 2017 г. 20:17:39

Теперь я лучше понимаю вашу ситуацию и опубликовал ответ. Обратите внимание, что для вашей ситуации есть и другие обходные пути.

user42826 user42826
20 июл. 2017 г. 20:44:47
Все ответы на вопрос 2
4

При установке WordPress на IP-адрес (или имя хоста), WordPress будет отвечать только на запросы с этого IP-адреса. Любой запрос с другого IP-адреса, даже если он ведет на тот же сервер, приведет к перенаправлению на страницу ошибки WordPress.

В такой ситуации я бы поступил следующим образом:

  1. Установите WordPress на публичный IP-адрес. Это сработает, если у вас есть возможность маршрутизировать запросы к публичному IP-адресу внутри сети.
  2. Если у вас нет возможности маршрутизировать запросы к публичному IP-адресу внутри сети, то я рекомендую установить WordPress на имя хоста. Вам необходимо настроить DNS так, чтобы внутри сети имя хоста разрешалось во внутренний IP-адрес, а извне — в публичный IP-адрес.
20 июл. 2017 г. 20:44:18
Комментарии

Под 1 ты имеешь в виду переустановку WP? Или будет достаточно изменить 2 строки define в wp-config.php? Под 2 ты имеешь в виду DNS внутренней сети? Например, настроить DNS на фаерволе/роутере или изменить hosts в Linux, чтобы резолвилось на публичный адрес? Любая дополнительная информация/ссылки будут очень кстати. (учти, что я протестирую это завтра в офисе), поэтому фидбек и/или отметка ответа как правильного могут занять время. Спасибо за помощь пока что!

vkoukou vkoukou
20 июл. 2017 г. 21:27:09

(Приватный) IP-адрес, с которым ты устанавливал, прописан в базе данных. Либо переустанови WP, если она новая и ты не против потерять свою работу. Либо можно выполнить поиск и замену в базе данных. Дополнительно нужно будет обновить IP-адрес в wp-config.php.

user42826 user42826
20 июл. 2017 г. 21:55:54

Я попробую заменить его в базе данных через бэкап/изменение/замену оффлайн, затем загружу новые файлы на сервер плюс изменю home и site url на публичный IP в wp-config.php. Спасибо за всю помощь. Я вернусь и сообщу, сработало это или нет.

vkoukou vkoukou
20 июл. 2017 г. 22:00:21

Доступ по публичному IP работает! Я использовал метод relocate из этой статьи и также изменил конфигурационный файл. Теперь WordPress не обслуживает запросы из-за фаервола (есть ли способ это сделать? либо через сеть, либо через Apache? возможно, это должно быть отдельной темой). Спасибо за помощь!

vkoukou vkoukou
21 июл. 2017 г. 00:00:43
0

Хотя это не совсем считается предназначенным режимом работы, WP_HOME и WP_SITEURL могут объявляться динамически в зависимости от отдельного запроса, а не жестко задаваться.

В PHP изначально очень мало состояния, поэтому если вы укажете ему обрабатывать конкретный запрос так, будто он отвечает на этот или тот хостнейм/IP — он так и сделает.

Конечно, хотя это позволит ядру WordPress загрузиться, на его стороне есть некоторое состояние, такое как URL-адреса, зафиксированные в контенте, и тому подобное.

Короче говоря, это определенно возможно, но практическая применимость сильно зависит от особенностей сайта.

25 июл. 2017 г. 17:52:19