MyTetra Share
Делитесь знаниями!
Как разрешить доступ к WEB-интерфейсу сетевого хранилища WD MyCloud EX2 из другой подсети
17.11.2017
01:18
Текстовые метки: nas, WD MyCloud EX2, доступ, запрещен, forbidden, permission to access
Раздел: Компьютер - Аппаратное обеспечение - NAS

По-умолчанию 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>. После чего надо перезапустить Апач, и доступ из другой подсети заработает.



Вот только неясно, сохраняется ли эта настройка при перезагрузке и при замене прошивки. Надо проверить.


 
MyTetra Share v.0.52
Яндекс индекс цитирования