showmount -e не работает с одного узла

Вопрос или проблема

Когда я запускаю:

showmount -e <IP>
rpc mount export: RPC: Не удалось получить; errno = Соединение сброшено передней стороной

mount <IP>:/path /mnt
mount.nfs: Соединение сброшено передней стороной

Но

mount -t nfs -c vers=3 <IP>:/path /mnt

работает

Клиент и сервер (freenas 9.3) находятся в одной подсети. Как это исправить?

Убедитесь, что пакеты не блокируются брандмауэром. Я бы порекомендовал выполнить iptables -L -v до и после выполнения команды showmount. Если вы видите, что счетчики слева увеличиваются для правила DROP, вероятно, вам нужно вставить правило, чтобы разрешить NFS-клиентам подключаться. Вот некоторая информация с http://www.cyberciti.biz/faq/centos-fedora-rhel-iptables-open-nfs-server-ports/:

Портмапер динамически назначает каждый NFS-сервис порту во время запуска сервиса. Как мне разрешить законным NFS-клиентам получить доступ к NFS-серверу, используя брандмауэр iptables в RHEL / Fedora / CentOS Linux 5.x?

Вам нужно открыть следующие порты: a] TCP/UDP 111 – RPC 4.0 портмапер

b] TCP/UDP 2049 – NFSD (nfs сервер)

c] Статические порты Portmap – различные TCP/UDP порты, определенные в файле /etc/sysconfig/nfs. Настройте службы NFS на использование фиксированных портов

Однако NFS и портмапер – довольно сложные протоколы. Фаервол должен быть настроен на каждом узле и на пограничных фаерволах, чтобы защитить демоны NFS от удаленного доступа, так как NFS-серверы никогда не должны быть доступны извне организации. Однако по умолчанию портмапер динамически назначает каждый NFS-сервис порту во время запуска сервиса.

Динамические порты не могут быть защищены брандмауэрами с фильтрацией портов, такими как iptables. Сначала вам нужно настроить службы NFS на использование фиксированных портов. Откройте /etc/sysconfig/nfs, введите:

# vi /etc/sysconfig/nfs

Измените директиву конфигурации следующим образом, чтобы задать неиспользуемые TCP/UDP порты:

# TCP порт rpc.lockd, на котором должен слушать. LOCKD_TCPPORT=номер-порта-lockd
# UDP порт rpc.lockd, на котором должен слушать. LOCKD_UDPPORT=номер-порта-lockd 
# Порт rpc.mountd, на котором должен слушать. MOUNTD_PORT=номер-порта-mountd
# Порт rquotad, на котором должен слушать. RQUOTAD_PORT=номер-порта-rquotad
# Порт rpc.statd, на котором должен слушать. STATD_PORT=номер-порта-statd
# Исходящий порт statd, который должен быть использован. По умолчанию порт случайный STATD_OUTGOING_PORT=номер-исходящего-порта-statd

Вот пример списка с одного из моих производственных NFS-серверов:

LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892
RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020

Сохраните и закройте файлы. Перезапустите службы NFS и портмапера:

# service portmap restart
# service nfs restart
# service rpcsvcgssd restart Обновите файлы /etc/sysconfig/iptables

Откройте /etc/sysconfig/iptables, введите:

# vi /etc/sysconfig/iptables

Добавьте следующие строки, убедившись, что они появляются перед последними строками LOG и DROP для цепи RH-Firewall-1-INPUT:

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p udp --dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p udp --dport 875 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 662 -j ACCEP

Сохраните и закройте файл. Замените 192.168.1.0/24 на вашу фактическую подсеть /маска. Вам нужно использовать статические значения портов, определенные в файле конфигурации /etc/sysconfig/nfs. Перезапустите службу iptables:

# service iptables restart

Ответ или решение

Когда вы выполняете команду showmount -e <IP> и получаете ошибку:

rpc mount export: RPC: Unable to receive; errno = Connection reset by peer

а также сообщение об ошибке при попытке монтирования через NFS:

mount <IP>:/path /mnt
mount.nfs: Connection reset by peer

в то время как команда:

mount -t nfs -c vers=3 <IP>:/path /mnt

успешно выполняется, это указывает на конкретные проблемы с настройками и сетевыми правилами. Разберем возможные причины и пути их решения.

Возможные причины и их решения

  1. Блокировка пакетов фаерволлом:
    Убедитесь, что ваши сетевые пакеты не блокируются фаерволлом. Для диагностики выполните команду:

    iptables -L -v

    Сделайте это перед и после выполнения команды showmount. Если видите увеличение счетчиков для правил DROP, это может указывать на то, что фаерволл блокирует подключения NFS-клиентов.

    Чтобы разрешить доступ клиентам NFS, необходимо открывать следующие порты:

    • TCP и UDP 111 — для RPC (portmapper)
    • TCP и UDP 2049 — для NFSD
    • Статические порты для других служб, описанных в файле /etc/sysconfig/nfs.

    Пример настройки статических портов можно найти ниже:

    LOCKD_TCPPORT=32803
    LOCKD_UDPPORT=32769
    MOUNTD_PORT=892
    RQUOTAD_PORT=875
    STATD_PORT=662
    STATD_OUTGOING_PORT=2020

    После внесения изменений перезапустите службы NFS и portmapper:

    service portmap restart
    service nfs restart
  2. Проблемы с конфигурацией NFS:
    Убедитесь, что ваш NFS-сервис правильно настроен и работает, особенно если вы видите, что монтирование с указанием версии vers=3 работает. В случае проблем с showmount, возможно, стоит проверить настройки экспорта в файле /etc/exports.

  3. Проблемы сети:
    Поскольку клиент и сервер находятся в одной подсети, проверьте настройки сетевых интерфейсов и маршрутизацию, чтобы убедиться, что они могут общаться друг с другом. Проверьте доступность сервера NFS из клиента с помощью команды ping <IP>.

  4. Убедитесь в целостности программного обеспечения:
    Наличие устаревших компонентов или неправильных версий программ может также вызвать проблемы. Обновите пакет NFS на клиенте и сервере до самой последней стабильной версии.

  5. Логи системы:
    Проверьте системные логи на сервере и клиенте, такие как /var/log/messages или /var/log/syslog, чтобы узнать, нет ли дополнительных сообщений, указывающих на причину проблемы.

Заключение

Если проблема не устраняется после выполнения вышеописанных рекомендаций, возможно, стоит обратиться к документации FreeNAS или на форумы сообщества для получения более специфической помощи. Убедитесь, что все изменения, связанные с настройками сети и безопасности, согласованы с вашими корпоративными стандартами безопасности.

Оцените материал
Добавить комментарий

Капча загружается...