LINUX.ORG.RU
решено ФорумAdmin

firewalld блокирует работу NFS

 , , , ,


0

1

Здравствуйте. Имеется сервер с крутящимися на нём сервисами dhcpd, httpd, tftpd, nfs. Между сервером и клиентами два устройства, выполняющие роли маршрутизаторов и файрволлов. Сервер и клиенты в разных подсетях. Все устройства на VMware, с установленными CentOS 8.

Клиенты бездисковые, по tftp и http (с помощью pxe) заливают себе в память загрузчик и прочие файлы. И далее, при условии выключенного firewall-cmd на промежуточных устройствах, клиенты подключаются к nfs-серверу и выводят окно ввода логина и пароля. Если firewall-cmd включен, то этап с подключением к nfs-серверу обламывается (выводится спам сообщениями: mount.nfs access denied by server while mounting). Задача состоит в обеспечении стабильной связи клиентов с сервером через включенные файрволлы.

Что пробовал. В firewall-cmd пробовал добавлять сервисы и разные порты, имеющие отношение к nfs. Также, учитывая динамическое использование портов nfs и смежными службами, вручную назначил конкретные порты и также добавил их в файрволл. Но всё безрезультатно. Пробовал ещё засунуть клиентов в одну подсеть с сервером, но в таком случае всё работает и без настроек файрволла. Ещё проверял на доступность порты сервера через nc (нужные порты открыты).

https://i.imgur.com/YrklEUf.png — спам сообщениями на бездисковом клиенте.

https://pastebin.com/y5paQszV — текущие настройки файрволла на сервере и двух маршрутизаторах.

https://pastebin.com/PtJpKPY2 — данные о портах с rpcinfo -p .

https://pastebin.com/agecVfPw — настройка в /etc/exports .

https://pastebin.com/kMSStBk1 — настройки конфига default в pxelinux.cfg/ .

https://pastebin.com/mKTeHavN — кусок сообщений из /var/log/messages на сервере, во время спама сообщениями на клиенте.

https://pastebin.com/JCAtjFgF — на маршрутизаторе, имеющем общую подсеть с клиентами, поставил интерфейс на прослушку с помощью tcpdump -i ens34 port 2049 . В выводе непонятное месиво данных.

Ответ на: комментарий от mky

@mky

Ну вот пример потока данных, где фильтрация по портам, исключающим 2049. 172.16.20.10 - сервер, 172.16.100.66 - клиент (172.16.100.65 был при включении машины). https://i.imgur.com/1Atf129.png

@bigbit

Поставил и донастроил по этому мануалу: cyberciti.biz/faq/centos-fedora-rhel-nfs-v4-configuration . Внёс правило из iptabels оттуда через –direct и всё равно нет соединения.

Serpentary ()
Ответ на: комментарий от Serpentary

А теперь тоже самое на сервер. И лучше tcpdump с опцией -nn, чтобы не было всяких LMSocialServer. Может тогда будет видно, что у вас маршрутизатор делает NAT...

refused mount request from 172.16.20.1

/var/lib/tftpboot/centos8/root 172.16.100.0/24(rw,no_root_squash)

mky ★★★★★ ()
Ответ на: комментарий от Serpentary

Напишу ещё раз. Вы настраивате на взаимодействие с сервером с адресов 172.16.100.0/24, а у вас туда приходит с адреса 172.16.20.1. Похоже, что все нужные порты у вас открыты, работоспособность nfs-клиентов при выключение firewall-cmd на промежуточных устройствах происходит не из-за портов, а из-за отключения SNAT (маскарада).

Я бы посоветовал отключить ″masquerade: yes″ на маршрутизаторе, но может это что-то другое поломает. Как с помощью firewalld отключать маскарадинг для некоторых ip-адресов не знаю.

mky ★★★★★ ()
Ответ на: комментарий от mky

Проверил. Да, действительно дело было во включённом маскараде. Странно конечно. То что в потоке данных присутствовал адрес 172.16.20.1, ну это я списывал на последовательную передачу сообщения об ошибке через цепочку ip.

Спасибо за совет. С активацией маскарада на определённых интерфейсах и зонах я смогу разобраться.

Serpentary ()