Дата и время публикации:
Постановка задачи и решение
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