How-to`s — Как я NFS настраивал
И снова здравствуйте.
Как я и обещал, про LIRC я рассказал. Теперь наступила очередь NFS.
Кому интересно - добро пожаловать под кат.
Примечание: Я использую Arch, поэтому все нижеописанное характерно именно для этого дистрибутива.
Для начала о том, какие задачи я себе поставил.
У меня есть такой себе недосервер, который жужжит в кладовке, служит шлюзом в сеть, качает/раздает торренты ну и, естественно, используется как файлопомойка.
На этой машинке у меня стоит три винта, один из которых отдан под систему, а два других, собственно, и держат на себе всю эту помойку.
Вот их структура:
Можно конечно и в таком виде скормить это NFS-серверу, но как-то не кошерно. Попробуем навести порядок.
Для наведения порядка я решил все, что примерно относится к мультимедия (видео, музыка, электронная библиотека) прибиндить (mount --bind) в отдельную директорию и уже потом натравливать на нее NFS.
Вот что у меня получилось:
Согласитесь, что это уже немного лучше.
Про установку NFS в сети информации куча, поэтому, дабы не копипастить, просто рекомендую почитать хотя бы archwiki.
От себя скажу, что я установил пакеты nfs-utils и rpcbind и добавил в автозагрузку демоны rpcbind, nfs-common и nfs-server.
А вот теперь будет уже интереснее. Файл /etc/exports. В этом файле содержится информация о том, что расшаривать, кому расшаривать и с какими правами.
Сейчас я покажу свой файл, а потом прокоментирую его:
Очень прикольно, что теперь можно примонтировать как весь NFS-корень, так и отдельные папки.
/srv/nfs/export + fsid=0 указывает, что корнем шары будет директория /srv/nfs/export
192.168.1.0/24 - разрешил свою домашнюю сеть
10.43.0.87 - разрешил свой рабочий комп
rw и ro - разрешение на read-write и read-only доступы соответственно
nohide - NFS автоматически не показывает нелокальные ресурсы (помните про mount --bind ?), а эта опция отключает непоказ таких ресурсов
insecure - использование непривилегированных портов (> 1024)
no_subtree_check и async - хз, что-то для ускорения доступа
Для клиента достаточно установить nfs-utils и запихнуть в автозагрузку nfs-common.
Проверка работоспособности:
# sudo mount 192.168.1.254:/ /media/nfs/osiris
Если все нормально, то можно и в /etc/fstab добавить:
У меня файрвол настроен таким образом, что бы в домашней сетке было можно все, а вот извне уже только то, что разрешено.
И вот, что бы разрешить с работы подключаться нормально к своему домашнему сервачку, пришлось повозиться.
Дело в том, что nfs-server запускает еще какой-то процесс mountd, который запускается каждый раз на разном порту.
Вот строчка из моего конфига, которая четко опредлеляет, на каком порту (-p 4000) ему запускаться:
Теперь уже можно настроить файрвол, указав ему разрешить NFS.
Я использую Shorewall для создания правил и вот кусок конфига, отвечающий за NFS (я думаю, что он в коментариях не нуждается):
Вот впринципе и все. Если есть вопросы - велкам в камменты, я постараюсь на них ответить.
Как я и обещал, про LIRC я рассказал. Теперь наступила очередь NFS.
Кому интересно - добро пожаловать под кат.
Примечание: Я использую Arch, поэтому все нижеописанное характерно именно для этого дистрибутива.
Для начала о том, какие задачи я себе поставил.
У меня есть такой себе недосервер, который жужжит в кладовке, служит шлюзом в сеть, качает/раздает торренты ну и, естественно, используется как файлопомойка.
Часть 1. Подготовка.
На этой машинке у меня стоит три винта, один из которых отдан под систему, а два других, собственно, и держат на себе всю эту помойку.
Вот их структура:
# tree -d -L 2 /media
/media
|-- sdb1
| |-- backup
| |-- Home_Video
| |-- install
| |-- lost+found
| |-- Temp
| |-- Torrents
| `-- Video
`-- sdc1
|-- Home_Photo
|-- Library
|-- lost+found
|-- Music
`-- Картинки
/media
|-- sdb1
| |-- backup
| |-- Home_Video
| |-- install
| |-- lost+found
| |-- Temp
| |-- Torrents
| `-- Video
`-- sdc1
|-- Home_Photo
|-- Library
|-- lost+found
|-- Music
`-- Картинки
Можно конечно и в таком виде скормить это NFS-серверу, но как-то не кошерно. Попробуем навести порядок.
Для наведения порядка я решил все, что примерно относится к мультимедия (видео, музыка, электронная библиотека) прибиндить (mount --bind) в отдельную директорию и уже потом натравливать на нее NFS.
Вот что у меня получилось:
# cat /etc/fstab
/media/sdb1/Video /srv/nfs/export/video none bind 0 0
/media/sdb1/Torrents /srv/nfs/export/torrents none bind 0 0
/media/sdc1/Music /srv/nfs/export/music none bind 0 0
/media/sdc1/Library /srv/nfs/export/library none bind 0 0
# tree -d -L 2 /srv/nfs
/srv/nfs
|-- export
| |-- library
| |-- music
| |-- torrents
| `-- video
`-- private
/media/sdb1/Video /srv/nfs/export/video none bind 0 0
/media/sdb1/Torrents /srv/nfs/export/torrents none bind 0 0
/media/sdc1/Music /srv/nfs/export/music none bind 0 0
/media/sdc1/Library /srv/nfs/export/library none bind 0 0
# tree -d -L 2 /srv/nfs
/srv/nfs
|-- export
| |-- library
| |-- music
| |-- torrents
| `-- video
`-- private
Согласитесь, что это уже немного лучше.
Часть 2. Сервер.
Про установку NFS в сети информации куча, поэтому, дабы не копипастить, просто рекомендую почитать хотя бы archwiki.
От себя скажу, что я установил пакеты nfs-utils и rpcbind и добавил в автозагрузку демоны rpcbind, nfs-common и nfs-server.
А вот теперь будет уже интереснее. Файл /etc/exports. В этом файле содержится информация о том, что расшаривать, кому расшаривать и с какими правами.
Сейчас я покажу свой файл, а потом прокоментирую его:
# cat /etc/exports
/srv/nfs/export 192.168.1.0/24(rw,fsid=0,no_subtree_check,async,insecure) 10.43.0.87(rw,fsid=0,no_subtree_check,async)
/srv/nfs/export/music 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export/video 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export/torrents 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export/library 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export 192.168.1.0/24(rw,fsid=0,no_subtree_check,async,insecure) 10.43.0.87(rw,fsid=0,no_subtree_check,async)
/srv/nfs/export/music 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export/video 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export/torrents 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
/srv/nfs/export/library 192.168.1.0/24(rw,no_subtree_check,async,nohide,insecure) 10.43.0.87(ro,no_subtree_check,async,nohide)
Очень прикольно, что теперь можно примонтировать как весь NFS-корень, так и отдельные папки.
/srv/nfs/export + fsid=0 указывает, что корнем шары будет директория /srv/nfs/export
192.168.1.0/24 - разрешил свою домашнюю сеть
10.43.0.87 - разрешил свой рабочий комп
rw и ro - разрешение на read-write и read-only доступы соответственно
nohide - NFS автоматически не показывает нелокальные ресурсы (помните про mount --bind ?), а эта опция отключает непоказ таких ресурсов
insecure - использование непривилегированных портов (> 1024)
no_subtree_check и async - хз, что-то для ускорения доступа
Если вы сделали какие-нить изменения в /etc/exports уже после старта nfs-server'a, то не забудьте сделать
# exportfs -r
чтобы сервер перечитал файлик.
# exportfs -r
чтобы сервер перечитал файлик.
Часть 3. Клиент.
Для клиента достаточно установить nfs-utils и запихнуть в автозагрузку nfs-common.
Проверка работоспособности:
# sudo mount 192.168.1.254:/ /media/nfs/osiris
Если все нормально, то можно и в /etc/fstab добавить:
# cat /etc/fstab
192.168.1.254:/ /media/nfs/osiris nfs defaults 0 0
192.168.1.254:/ /media/nfs/osiris nfs defaults 0 0
Часть 4. Файрвол.
У меня файрвол настроен таким образом, что бы в домашней сетке было можно все, а вот извне уже только то, что разрешено.
И вот, что бы разрешить с работы подключаться нормально к своему домашнему сервачку, пришлось повозиться.
Дело в том, что nfs-server запускает еще какой-то процесс mountd, который запускается каждый раз на разном порту.
Вот строчка из моего конфига, которая четко опредлеляет, на каком порту (-p 4000) ему запускаться:
# cat /etc/conf.d/nfs-server.conf
MOUNTD_OPTS="--no-nfs-version 1 --no-nfs-version 2 -p 4000"
MOUNTD_OPTS="--no-nfs-version 1 --no-nfs-version 2 -p 4000"
Теперь уже можно настроить файрвол, указав ему разрешить NFS.
Я использую Shorewall для создания правил и вот кусок конфига, отвечающий за NFS (я думаю, что он в коментариях не нуждается):
# cat /etc/shorewall/rules
## NFS
ACCEPT all $FW tcp 111
ACCEPT all $FW udp 111
ACCEPT all $FW tcp 4000
ACCEPT all $FW udp 4000
ACCEPT all $FW tcp 2049
ACCEPT all $FW udp 2049
## NFS
ACCEPT all $FW tcp 111
ACCEPT all $FW udp 111
ACCEPT all $FW tcp 4000
ACCEPT all $FW udp 4000
ACCEPT all $FW tcp 2049
ACCEPT all $FW udp 2049
Вот впринципе и все. Если есть вопросы - велкам в камменты, я постараюсь на них ответить.