У меня есть система, которая содержит несколько Raspberry Pi, одним из которых является «ведущий», который должен экспортировать NFS на несколько «ведомых» устройств в системе.

Система будет подключена к сети конечных пользователей; конечный пользователь сможет указать диапазон подсети ip, по которому должен взаимодействовать pi.

Чтобы сократить сложность настройки для конечного пользователя, можно ли указать в /etc /exports, чтобы он использовался только с локальным IP-адресом pi?

Что-то вроде:

/home      local-ip/255.255.255.0(ro)

Для ясности: если конечный пользователь устанавливает, что ip числа pi находится в диапазоне 10.0.1.x или в диапазоне 192.168.5.x, возможно ли для экспорта автоматически использовать этот диапазон без изменения /etc /exports? Я не хочу экспортировать все IP-адреса.

Другая информация: пользователь не имеет связи с системой во время использования. SD-карта для pi имеет небольшой раздел FAT, который конечный пользователь может смонтировать на компьютере под управлением Windows и изменить файл интерфейсов, полученный из /etc /network /interfaces, чтобы он мог изменить ip. / Etc / exports не поддерживает источники из другого файла.

1 ответ1

2

Вы правы, /etc/exports не может быть получен обычными методами - вы можете, однако, написать сценарий для содержимого файла:

#!/bin/bash
ip_info=$(ip a | grep inet | grep -v "127.0.0.1" | cut -d " " -f 6)
range=$(echo $ip_info | sed 's/\.[0-9]\+\//\.0\//g')
echo "/home/              $range(ro)" > /etc/exports
exportfs
/etc/init.d/nfs-kernel-server restart

Поместите это с вашим любимым редактором в /root/set_nfs_exports.sh и сделайте его исполняемым

chmod +x /root/set_nfs_exports.sh

и выполнить его после появления сетевого интерфейса

ln -s /root/set_nfs_exports.sh /etc/network/if-up.d/export-nfs

Надеюсь это поможет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .