Ошибка «Connection refused» или пустой список шар при попытке открыть NFS-папку с Android-смартфона почти всегда означает одно из двух: либо на сервере не разрешён доступ для подсети, в которой находится телефон, либо выбранное приложение вообще не умеет работать с протоколом NFS напрямую. Проверка начинается не с телефона, а с файла /etc/exports на сервере — именно там определяется, каким клиентам разрешено монтирование.
Операционная система Android не имеет встроенной поддержки NFS на уровне пользовательского интерфейса, в отличие от SMB, который частично доступен через сторонние файловые менеджеры. Поэтому подключение к Network File System решается тремя путями: специализированными приложениями-клиентами, монтированием через ядро с root-правами или обходным вариантом — использованием другого протокола, если NAS поддерживает несколько способов доступа.
Почему Android не работает с NFS «из коробки»
Протокол NFS исторически развивался в Unix-среде и требует поддержки на уровне ядра системы. В Android ядро Linux присутствует, но производители прошивок, как правило, не включают в него модуль NFS-клиента или не дают пользователю штатных средств монтирования. Дополнительная сложность — система прав: NFS опирается на UID/GID, а Android использует собственную модель разрешений, изолированную для каждого приложения.
Из этого следует практический вывод: без root-прав монтирование NFS-шары в общую файловую систему устройства невозможно штатными средствами. Приложения-клиенты обходят ограничение иначе — они реализуют протокол внутри себя и показывают содержимое удалённой папки в собственном интерфейсе, не интегрируя её в систему.
⚠️ Внимание: root-доступ и монтирование сетевых ресурсов на уровне системы могут нарушить работу механизмов безопасности Android и гарантийные условия устройства. Перед любыми действиями с правами суперпользователя убедитесь, что понимаете последствия и имеете резервную копию данных.
Способы подключения: обзор вариантов
Выбор метода зависит от того, есть ли root, какой сервер используется и что именно нужно — просто посмотреть файлы или обеспечить доступ к шаре для других приложений, например медиаплеера.
- 📱 Приложения с встроенным NFS-клиентом — файловые менеджеры и плееры, которые сами реализуют протокол (поддержка зависит от конкретной программы, проверяйте описание в магазине приложений).
- 🔧 Монтирование через root — команда
mount -t nfsв терминале, требует ядра с поддержкой NFS и busybox-подобных утилит. - 🔄 Смена протокола на стороне сервера — включение SMB или WebDAV на NAS, что для Android заметно проще.
- 🖥️ Промежуточный сервер — трансляция NFS-шары в другой протокол через ПК или роутер.
Проверка и настройка NFS-сервера
Прежде чем настраивать клиента, убедитесь, что сервер корректно отдаёт шару. На Linux-сервере список экспортируемых каталогов находится в /etc/exports. Типичная строка выглядит примерно так:
/srv/share 192.168.1.0/24(ro,sync,no_subtree_check)
Здесь важно, чтобы подсеть вашей домашней сети была указана верно — если телефон получает адрес из диапазона, не описанного в exports, сервер молча откажет в доступе. После правки файла применяется команда exportfs -ra. Проверить, что экспорт активен, можно командой showmount -e на самом сервере.
Обратите внимание на версию протокола. Некоторые Android-клиенты работают только с NFSv3, тогда как сервер может быть настроен отдавать исключительно NFSv4. Если клиент «не видит» сервер при корректных настройках сети, несовпадение версий — одна из первых версий для проверки. Точный порядок настройки версий зависит от вашего дистрибутива или модели NAS, поэтому сверяйтесь с его документацией.
Подключение через приложение-клиент
Если root нет и не планируется, единственный рабочий вариант — приложение, реализующее NFS самостоятельно. Поддержка протокола встречается в некоторых файловых менеджерах и медиаплеерах, однако набор функций сильно различается: где-то доступно только чтение, где-то нет стабильной работы с большими файлами. Перед установкой изучите описание и свежие отзывы — поддержка NFS иногда исчезает при обновлениях.
Общий порядок действий в таких приложениях примерно одинаков: добавление нового сетевого ресурса, выбор типа NFS, указание IP-адреса сервера и пути экспортируемой папки. Если приложение запрашивает версию протокола — начните с v3, это наиболее совместимый вариант.
☑️ Проверка перед подключением
Монтирование с root-правами
При наличии root и ядра с поддержкой NFS шару можно смонтировать как обычный каталог, и тогда её увидят все приложения. Сначала проверяется, знает ли ядро протокол — командой cat /proc/filesystems: в выводе должна присутствовать строка с nfs. Если её нет, стандартное ядро прошивки протокол не поддерживает, и вопрос упирается в кастомное ядро — это уже территория модификаций с рисками.
Само монтирование выполняется в терминале примерно так:
mount -t nfs -o ro 192.168.1.10:/srv/share /mnt/nfs
Точные опции и доступность точки монтирования зависят от версии Android и прошивки. На современных версиях системы из-за особенностей SELinux и изоляции хранилища смонтированный каталог может быть виден не всем приложениям — это ограничение платформы, а не ошибка в команде.
⚠️ Внимание: не монтируйте NFS-шары в каталоги, критичные для работы системы, и не используйте запись на сетевой ресурс без понимания схемы прав UID/GID — некорректное сопоставление идентификаторов может привести к потере доступа к файлам на самом сервере.
Почему права файлов «ломаются» при записи по NFS
NFS сопоставляет пользователей по числовым UID. Android выдаёт приложениям UID из своего диапазона, которых не существует на сервере. В результате созданные файлы могут получить владельца, недоступного другим клиентам. Решается настройкой squash-опций в exports на стороне сервера.
Сравнение протоколов для Android
Если NFS не является жёстким требованием, стоит сравнить его с альтернативами по трудоёмкости настройки именно на Android.
| Протокол | Поддержка на Android | Нужен root | Сложность настройки |
|---|---|---|---|
| NFS | Через отдельные приложения или ядро | Для монтирования — да | Высокая |
| SMB | Множество файловых менеджеров | Нет | Низкая |
| FTP/SFTP | Широко поддерживается | Нет | Низкая |
| WebDAV | Поддерживается рядом приложений | Нет | Средняя |
Если NAS позволяет включить SMB параллельно с NFS, для Android это почти всегда более практичный выбор — при этом NFS остаётся для Linux-клиентов, где он работает нативно и быстрее.
Типичные ошибки и их диагностика
Сбои при подключении обычно группируются вокруг нескольких причин. Разберём, что проверять в первую очередь.
- 🚫 «Permission denied» — подсеть или хост не разрешены в
/etc/exports, либо режим только чтение конфликтует с попыткой записи. - ⏱️ Таймаут соединения — файрвол сервера блокирует порты NFS, либо телефон находится в гостевой Wi-Fi сети с изоляцией клиентов.
- 📂 Пустой список шар — клиент и сервер не совпадают по версии протокола, либо служба NFS не запущена.
- 🐢 Медленная работа — слабый Wi-Fi, режим
syncна сервере или фрагментация трафика в перегруженной сети.
Диагностику удобно вести от сервера к клиенту: сначала showmount -e локально, затем проверка с другого устройства в сети, и только потом настройка Android-приложения. Такой порядок сразу локализует неисправную сторону.
FAQ: частые вопросы
Можно ли подключить NFS на Android без root?
Да, но только внутри приложения, которое само реализует NFS-клиент. Смонтировать шару в общую файловую систему без root нельзя — это ограничение платформы.
Почему файловый менеджер не видит NFS-сервер?
Возможные причины: приложение не поддерживает NFS, несовпадение версий протокола (v3 против v4), ваша подсеть не разрешена в exports на сервере или трафик блокируется файрволом. Проверяйте в указанном порядке.
Что лучше для Android — NFS или SMB?
Для Android практичнее SMB: он поддерживается большинством файловых менеджеров без root и дополнительной настройки. NFS имеет смысл, если шара уже развёрнута для Linux-устройств и менять инфраструктуру не хочется.
Безопасно ли открывать NFS-шару на запись?
Риск связан с сопоставлением UID: Android-приложения имеют идентификаторы, которых нет на сервере. Для записи настраивайте squash-опции в exports и ограничивайте доступ по подсети. NFS без дополнительной защиты не шифрует трафик, поэтому использовать его стоит только в доверенной локальной сети.
Команда mount выдаёт ошибку «no such device» — что это значит?
Обычно это означает, что ядро прошивки собрано без поддержки NFS. Проверить можно выводом cat /proc/filesystems. Без смены ядра на поддерживающее протокол штатное монтирование невозможно — остаются приложения-клиенты или другой протокол.