По-умолчанию WD MyCloud EX2 разрешает доступ к Web-интерфейсу только из свой подсети. Обращения из другой подсети, например если есть VPN, он блокирует.
В браузере появляется сообщение:
Forbidden
You don't have permission to access /UI on this server.
или, на других моделях WD My Cloud, такое сообщение:
Forbidden
You don't have permission to access / on this server.
Как решить эту проблему? Буржуи советуют так - надо зайти по ssh или telnet на WD MyCloud EX2, и сделать настройку Апача по следующей инструкции:
The problem with this is if you remove the restriction to allow VPN, it will also allow dangerous WAN access directly to the MyCloud.
Instead add your VPN subnet to the restriction:
sed -ri 's/(\$\{LOCAL_NET\})$/\1 192.168.2.0\/24/' /etc/apache2/sites-available/wdnas-ui.conf>/dev/null 2>&1;
Then restart the daemon:
service apache2 restart
I assumed above modifications are done on a Gen1 Single Bay MyCloud firmware v4. Modifying any part of the device may void your warranty.
В результате файл /etc/apache2/sites-available/wdnas-ui.conf, имеющий в начале вид:
<IfModule mod_rewrite.c>
<Directory "${DOCUMENT_ROOT}/UI">
${LOCAL_NET}
RewriteEngine On
RewriteBase /UI/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /UI/ [R]
</Directory>
</IfModule>
Получит изменения в третьей строчке на вот такую:
${LOCAL_NET} 192.168.2.0/24
Однако данная инструкция подойдет не для всех моделей WD MyCloud. Команды service , которая по-идее используется для запуска, перезапуска, остановки сервисов, в BusyBox может не быть. Вместо этого можно попробовать поиграть с командой демона httpd:
# httpd -k restart
httpd: Could not open configuration file /home/ssd/wdic-gpl/_xinstall/Glacier/conf/httpd.conf: No such file or dire
ctory
Однако через нее перезапустить апач тоже не получается из-за вышеуказанной ошибки. Ошибка из-за того, что команда не может найти по известному ей пути никакого файла конфигурации. Чтобы узнать файл конфигурации апача, можно дать команду:
# ps aux | grep apache
3768 root 40928 S httpd -f /usr/local/apache2/conf/httpd.conf -k graceful
9006 root 4768 S /usr/bin/rotatelogs -n 2 /var/log/apache2/web_error.log 256K
9007 root 4768 S /usr/bin/rotatelogs -p /usr/local/sbin/rotateApache.sh -n 2 /var/log/apache2/access.log 200K
9008 root 4768 S /usr/bin/rotatelogs -p /usr/local/sbin/rotateApache.sh -n 2 /var/log/apache2/access_ssl.log 200K
9524 root 43360 S httpd -f /usr/local/apache2/conf/httpd.conf -k graceful
10398 root 2880 S grep apache
11599 root 43392 S httpd -f /usr/local/apache2/conf/httpd.conf -k graceful
12573 root 43168 S httpd -f /usr/local/apache2/conf/httpd.conf -k graceful
И сразу становится понятно, что для перезапуска апача нужно выпонить команду:
httpd -f /usr/local/apache2/conf/httpd.conf -k restart
Однако становится ясно, что файл /etc/apache2/sites-available/wdnas-ui.conf не участвует в конфигурации Апача2 для данной модели WD MyCloud. А конфигурирет Апач2 файл /usr/local/apache2/conf/httpd.conf. Изучив его и соседние файлы, можно понять, что для перенастройки mod_rewrite (как советовали выше буржуи) используется файл:
/usr/local/apache2/conf/mods-enabled/rewrite.conf
Его содержимое следующее:
<IfModule rewrite_module>
RewriteEngine on
RewriteCond expr "%{REQUEST_URI} != '/xml/english.xml'"
RewriteCond expr "%{REQUEST_URI} != '/xml/lang.xml'"
RewriteRule ^/xml/(.*) /cgi-bin/webpipe.cgi
#RewriteRule /api/[0-9.]+/rest/(.*)\?(.*)$ /htdocs/api/rest/index.php?$2
#RewriteRule /api/[0-9.]+/rest/(.*) /htdocs/api/rest/index.php
RewriteCond %{HTTP_HOST} ^(.*)\.(:\d+)?$
RewriteRule ^(.*)$ http://%1%2$1 [L,R=301]
</IfModule>
Однако, если в секцию IfModule прописать строку:
${LOCAL_NET} 192.168.2.0/24
То при перезапуске сервиса будет ошибка:
[Wed Jan 23 14:41:15.121189 2019] [core:warn] [pid 18706] AH00111: Config variable ${LOCAL_NET} is not defined
Поэтому надо поступить по-другому. Можно просто открыть основной файл конфигурации Apache /usr/local/apache2/conf/httpd.conf, и заменить в нем строки "Require local" на "Require all granted", вот так:
<RequireAny>
# Require local
Require all granted
Require ip 192.168.1.9/24
</RequireAny>
Эти настройки надо сделать в каждой секции <Directory>. После чего надо перезапустить Апач, и доступ из другой подсети заработает.
Вот только неясно, сохраняется ли эта настройка при перезагрузке и при замене прошивки. Надо проверить.