Настройка NFS
на Ubuntu Bionic
Для проверки понадобится две системы
- одна будет серверной частью (
srv-server
) - другая клиентской (
srv-bionic
)
Произвожу преднастройки двух систем скриптом из локальной сети созданным под себя, Вы же либо оставляете развернутую систему дефолтной или же своим скриптом или ручками приводите к работе в продуктиве или тесту.
hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject sudo ./dproject/default
Шаг №1:
На хосте
Устанавливаю роль NFS
(используемая версия 3
):
ekzorchik@srv-server:~$ sudo apt-get install nfs-kernel-server -y ekzorchik@srv-server:~$ dpkg -l nfs-kernel-server Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-============-============-================================= ii nfs-kernel-ser 1:1.3.4-2.1u amd64 support for NFS kernel server ekzorchik@srv-server:~$ cat /etc/services | grep nfs nfs 2049/tcp # Network File System nfs 2049/udp # Network File System ekzorchik@srv-server:~$ sudo mkdir /srv/backup ekzorchik@srv-server:~$ sudo chown nobody:nogroup /srv/backup ekzorchik@srv-server:~$ sudo nano /etc/exports # 172.33.33.0/24 — подключить NFS ресурс могут любые хосты из указанной сети # * - подключить NFS ресурс могут любые хосты вообщем # client1 - подключить NFS ресурс может только хост с именем client1 /srv/backup 172.33.33.0/24(rw,sync,no_subtree_check,no_root_squash) ekzorchik@srv-server:~$ sudo systemctl restart nfs-kernel-server && sudo systemctl status nfs-kernel-server | head -n5 ● nfs-server.service - NFS server and services Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2019-05-15 19:35:52 MSK; 13ms ago Process: 7979 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS) Process: 7978 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Либо же без перезапуска сервиса вот так:
ekzorchik@srv-server:~$ sudo exportfs -a ekzorchik@srv-server:~$ sudo exportfs /srv/backup 172.33.33.0/24
Чтобы отобразить какие ресурсы и для кого расшарены:
ekzorchik@srv-server:~$ sudo showmount -e Export list for srv-bionic: /srv/backup 172.33.33.0/24
Шаг №2:
На клиенте
ekzorchik@srv-bionic:~$ sudo apt-get install -y nfs-common ekzorchik@srv-bionic:~$ sudo mkdir /backup ekzorchik@srv-bionic:~$ sudo mount 172.33.33.2:/srv/backup /backup ekzorchik@srv-bionic:~$ df -h | grep /backup 172.33.33.2:/srv/backup 39G 2.1G 35G 6% /backup ekzorchik@srv-bionic:~$ sudo nfsstat -m /backup from 172.33.33.2:/srv/backup Flags: rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.33.33.18,local_lock=none,addr=172.33.33.2
Шаг №3:
Также считаю важным на сервер где поднята роль NFS
активировать брандмауэр с разрешение с каких систем к нему можно подключаться с использованием NFS:
ekzorchik@srv-server:~$ sudo sed -i "s/IPV6=yes/IPV6=no/" /etc/default/ufw ekzorchik@srv-server:~$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup ekzorchik@srv-bionic:~$ sudo ufw default deny incoming ekzorchik@srv-bionic:~$ sudo ufw default allow outgoing ekzorchik@srv-server:~$ sudo ufw allow from 172.33.33.0/24 to 172.33.33.2 port 2049 proto tcp ekzorchik@srv-server:~$ sudo ufw allow from 172.33.33.0/24 to 172.33.33.2 port 2049 proto udp ekzorchik@srv-server:~$ sudo ufw allow from 172.33.33.0/24 to 172.33.33.2 port 22 proto tcp ekzorchik@srv-server:~$ sudo ufw status Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 172.33.33.2 2049/tcp ALLOW 172.33.33.0/24 172.33.33.2 2049/udp ALLOW 172.33.33.0/24 172.33.33.2 22/tcp ALLOW 172.33.33.0/24 ekzorchik@srv-server:~$ ekzorchik@srv-server:~$ sudo ufw delete allow from any to any port 22 proto tcp ekzorchik@srv-server:~$ sudo ufw logging on
Итого текущая политика на сервере по безопасности:
ekzorchik@srv-server:~$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 172.33.33.2 2049/tcp ALLOW IN 172.33.33.0/24 172.33.33.2 2049/udp ALLOW IN 172.33.33.0/24 172.33.33.2 22/tcp ALLOW IN 172.33.33.0/24 ekzorchik@srv-server:~$
Вот так и должно быть, поднята роль, оттестирована на работоспособность и безопасность, на сервере поднят брандмауэр. Но опять же повторюсь, все настройки должны быть задокументированы чтобы после не ломать голову добавляя что-то и почему не работает. Обычно три раза наступаешь на собственные грабли и умнеешь. На этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.