× К оглавлению На главную Об авторе

   Дата и время публикации:

Постановка задачи и решение

1. Задача

Состоит в том, чтобы экспортировать данные с использованием распределенного серверного хранилища, как показано на рисунке 1.1, между внутренними и внешними узлами вычислительной сети, организованной с использованием стека протоколов tcp/ip.

Рисунок 1.1

Согласно представленной схеме, показанной на рисунке 1.1, реализуется обмен данных между внешними и внутренними узлами с использованием сервера NFS, к которому имеют доступ обои типы указанных узлов. Адресации узлов приведена для вычислительных сетей, использующих IPv4, поэтому нумерация узлов считается по последнему октету в адресе IP. Линии со стрелками показывают направление обмена от узла к серверу и обратно.

Задача состоит в том, что требуется организовать разделенный доступ по протоколу NFS, когда внешние узлы сети экспортируют данные на шлюз без обращения к ресурсам внутренней сети и, обратно, узлы внутренний сети импортируют данные со шлюза без доступа к внешним узлам...

2. Решение

2.1 Настройка шлюза

Разделяемый доступ организовывается путем настройки демона (сервер) NFS путем установки набора пакетов, поддерживающий протокола NFS, как показано в дамп 2.1.1

Дамп 2.1.1

 
apt-get install nfs-kernel-server nfs-common

В файле /etc/default/nfs-kernel-server запрещаем использование nfs версии 4, как показано ниже и никак иначе, выделено жирным в дампе 2.1.2a

Дамп 2.1.2a

 
root@home:~# nano /etc/default/nfs-kernel-server 
# Number of servers to start up
#RPCNFSDCOUNT=8
RPCNFSDCOUNT="8 --no-nfs-version 4"
  ...

Перезапускаем сервер, как показано в дампе 2.1.2b

Дамп 2.1.2b

 
sudo service nfs-kernel-server restart
 nfs-server.service - NFS server and services
     Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
     Active: active (exited) since Thu 2020-04-02 14:40:22 MSK; 1min 0s ago
    Process: 17435 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
    Process: 17436 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
    Main PID: 17436 (code=exited, status=0/SUCCESS)
    ...

Редактируем файл /etc/exports, как показано в дампе 2.1.3

Дамп 2.1.3

 
# nano /etc/exports
. . . 
/srv/nfs 10.3.1.1/24(rw,sync,no_root_squash,no_subtree_check,sec=sys)
/srv/nfs 192.168.1.1/24(rw,sync,no_root_squash,no_subtree_check,sec=sys)
. . .

Тем самым разрешается всем клиентам сети доступ к директории /srv/nfs и проверяем, что усе тип-топ, как показано в дампе 2.1.4

Дамп 2.1.4

 
root@home:~# exportfs -rav
exporting 10.3.1.1/24:/srv/nfs
exporting 192.168.1.1/24:/srv/nfs

Далее, настраиваем доступ внутренним пользователям на шлюзе, как показано в дампе 2.1.5

Дамп 2.1.5

 
~# chmod 777 /srv/nfs

Создаем в ней файл /srv/nfs/access.log, как показано в дампе 2.1.6

Дамп 2.1.5

 
~#  echo "`date +%Y%d%m` my nfs-server is run on $HOSTNAME !" > /srv/nfs/access.log

2.2 Настройка внут./внеш. узлов

На клиентских узлах внутренней и внешней сети производится установкой пакетов, как показано в дампе 2.2.1

Дамп 2.2.1

~# apt-get install nfs-common

Затем, создается точка монтирования (директория), как показано в дампе 2.2.2

Дамп 2.2.2

~# /mkdir /media/nfs-exports && chmod 777 /media/nfs-exports

После чего, производится попытка монтирования, как показано в дампе 2.2.3

Дамп 2.2.3

~# mount -t nfs -o vers=3,hard,intr,nolock,port=2049,tcp 192.168.1.1:/srv/nfs /media/nfs-exports

И проверяем доступность, как показано в дампе 2.2.4

Дамп 2.2.4

~# ls -la  /media/nfs-exports
ls -la /media/nfs-exports 
total 12
drwxrwxrwx 2 root   root   4096 Feb 10 12:11 .
drwxr-xr-x 4 root   root   4096 Feb 10 11:59 ..
-rw-r--r-- 1 user   user     39 Feb 10 12:11 access.log

Пытаемся прочитать данные, как показано в дампе 2.2.5

Дамп 2.2.5

~# cat /media/nfs-exports/access.log 
20201002 my first nfs-server down up!

2.3 В качестве бонуса пример подключения к внешнему хосту под управлением MS-Windows с адресом IP 10.3.1.24, как показано в дампе 2.3.1

Дамп 2.3.1

C:\Users\adm> mount -o anon \\10.3.1.1\srv\nfs Z:
Z: успешно подключен к \\10.3.1.1\srv\nfs

Команда успешно выполнена.

C:\Users\adm>
C:\Users\adm>mount

Локальный    Удаленный                                 Свойства
-------------------------------------------------------------------------------
Z:       \\10.3.1.1\srv\nfs                  UID=0, GID=0
                                                rsize=1048576, wsize=1048576
                                                mount=soft, timeout=0.8
                                                retry=1, locking=yes
                                                fileaccess=755, lang=ANSI
                                                casesensitive=no
                                                сек.=system

В командой строке MS-Windows вводится команд umount c URI-адресом удаленного, разделяемого хранилища данных и локальной точки монтирования в виде виртуального диска Z:. При этом используется опция -o anon, которая указывает на то, что процесс монтирования производится анонимно.

 

3. Библиография

3.1 Debian Wiki. NFS Server Setup

3.2 Debian Wiki. NFS

3.3 MicrosoftDocs.Mount

3.4 Mount(8) – Linux man page