Иногда нам нужно получить доступ к одному или нескольким маршрутизаторам из-за пределов офиса. Сделать это с нашего веб-сайта было бы очень удобно. На нашем сервере работает Apache под Windows 2008 server. Поскольку он обслуживает несколько доменов, в файл httpd-vhosts.conf были внесены изменения:
ProxyRequests Off
ProxyPreserveHost On
<Location "/router/">
ProxyPass http://192.168.1.40/
ProxyPassReverse http://192.168.1.40/
</Location>
При просмотре http://www.ourdomain.com/router/ страница входа действительно появляется, но на ней отсутствуют некоторые изображения и кнопка входа (изображение для). После входа в систему появляется полный бардак «запрещено».
Похоже, что директива ProxyPreserveHost была полностью проигнорирована. Что-то не так с вышеуказанной модификацией? Мы что-то не понимаем? Может быть, это связано с тем, что главная страница роутера построена с использованием javascript и нужно что-то еще настроить? К вашему сведению, после входа в сам роутер URL не меняется (остается http://192.168.1.40)
Страница входа в систему, как она выглядит снаружи:
Правильная страница входа:
Главная страница роутера после входа извне:
Я думаю, что TP-Link Archer C2 тоже проверяет реферер и выдает 403, если он не соответствует внутреннему IP-адресу вашего маршрутизатора. Это мера безопасности для предотвращения загрузки веб-сайтами содержимого с маршрутизатора.
Попробуйте вручную изменить заголовок на обратном прокси:
<Location "/router/">
ProxyPass http://192.168.1.40/
ProxyPassReverse http://192.168.1.40/
Header add referer "http://192.168.1.40/"
RequestHeader set referer "http://192.168.1.40/"
</Location>
Обратите внимание, что ваша установка показывает интерфейс веб-конфигурации со всеми возможными проблемами безопасности для внешней сети, поскольку прошивка маршрутизатора обычно не обновляется автоматически. Хорошо, что у вас уже включен TLS для подключения, но вы также можете добавить дополнительный уровень аутентификации перед собственной страницей входа в маршрутизатор.