NFS монтирование Ubuntu 22.04 – Время подключения истекло

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

У меня есть две системы, работающие на Ubuntu 22.04. Я хочу смонтировать один из дисков сервера (PC1 – auerbach) на клиенте (PC2 – hubel) с помощью NFS.

Файл /etc/exports на PC1 выглядит следующим образом:

/media/auerbach-data    139.124.148.0/25(rw,no_subtree_check,sync,fsid=001)

Я запустил sudo exportfs -av на PC1, что сработало. Файл /etc/fstab на PC2 выглядит следующим образом:

auerbach:/media/auerbach-data      /mnt/auerbach-data    nfs     defaults,auto,rw        0       0

Однако, когда я запускаю sudo mount /mnt/auerbach-data -v на PC2, я получаю сообщение об ошибке:

mount.nfs: timeout set for Thu Nov 28 10:44:02 2024
mount.nfs: trying text-based options 'vers=4.2,addr=139.124.148.27,clientaddr=139.124.148.5'
mount.nfs: mount(2): Connection timed out
mount.nfs: Connection timed out

Что действительно странно, так это то, что когда я запускаю showmount -e на PC1, я получаю:

Export list for PC1:
/media/auerbach-data 139.124.148.0/25

Таким образом, кажется, что экспортирование действительно работает. Когда я затем запускаю showmount, я получаю:

Hosts on PC1:
IP PC2

Что, похоже, указывает на то, что PC1 видит PC2. Более того, когда я запускаю showmount -e auerbach на PC2, я получаю:

Export list for auerbach: 
/media/auerbach-data 139.124.148.0/25

После небольшого исследования, чтобы исправить проблему, я использовал tcpdump -i eno145 host auerbach и выяснил, что при выполнении команды монтирования на PC2, PC1 не получал никакой информации по сети. Это не так, когда я пингую PC1 или использую showmount. Некоторые логи приведены ниже:

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eno145, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:52:29.203855 IP hubel.836 > auerbach.nfs: Flags [S], seq 3035191773, win 64240, options [mss 1460,sackOK,TS val 3
448551700 ecr 0,nop,wscale 7], length 0
10:52:30.244579 IP hubel.836 > auerbach.nfs: Flags [S], seq 3035191773, win 64240, options [mss 1460,sackOK,TS val 3
448552741 ecr 0,nop,wscale 7], length 0

Кто-нибудь знает, как я могу решить эту проблему? Заранее спасибо!

Дополнительная информация:
На auerbach нет файрвола, и порт 2049 открыт (проверено с помощью telnet).

Когда я использую sudo mount -t nfs auerbach:/media/auerbach-data /mnt/auerbach-data -v, я получаю:

mount.nfs: timeout set for Thu Nov 28 16:53:57 2024
mount.nfs: trying text-based options 'vers=4.2,addr=139.124.148.27,clientaddr=139.124.148.79'

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

Проблема с подключением к NFS на Ubuntu 22.04: Ошибка "Connection timed out"

Введение

Настройка NFS (Network File System) на Ubuntu 22.04 может иногда сопровождаться различными проблемами, особенно при попытке подключить ресурс между двумя системами. В вашей ситуации, несмотря на то, что экспорт настроен правильно и клиент видит сервер, возникает ошибка при попытке подключения: "Connection timed out". Это сообщение может возникать по нескольким причинам. Давайте рассмотрим шаги по диагностике и устранению этой проблемы.

Проверка конфигурации NFS

  1. Файл /etc/exports на сервере (PC1):
    Убедитесь, что файл /etc/exports содержит правильные параметры. Ваш текущий вид:

    /media/auerbach-data 139.124.148.0/25(rw,no_subtree_check,sync,fsid=001)

    Этот синтаксис корректен, и команда sudo exportfs -av показала, что экспорт выполнен без ошибок.

  2. Проверка доступности сервера:
    Убедитесь, что сервер PC1 доступен с клиента PC2. Вы можете использовать команду ping:

    ping <IP-адрес PC1>

    Если сервер отвечает на запросы, то сеть функционирует корректно.

  3. Проверка списка экспортов на сервере:
    Выполните команду showmount -e на PC1:

    showmount -e

    Вы получаете корректный список экспортов. Следовательно, сервер действительно видит клиента.

  4. Проверка сетевых соединений:
    Используйте tcpdump, чтобы убедиться, что запросы доходят до сервера. Вы уже выполнили эту команду и увидели, что сервер не отвечает на запросы NFS, что указывает на проблемы с сетевым соединением.

Устранение неполадок NFS

  1. Проверка настроек брандмауэра:
    Хотя вы упомянули, что на PC1 нет брандмауэра, рекомендуется проверить наличие iptables или ufw, которые могут блокировать трафик:

    sudo ufw status
    sudo iptables -L

    Убедитесь, что порты 2049 (NFS), а также дополнительные порты для NFS, такие как 111 (rpcbind), открыты.

  2. Проверка службы NFS:
    Убедитесь, что необходимые службы запущены на PC1:

    sudo systemctl status nfs-server
    sudo systemctl status rpcbind

    Если какие-либо службы не запущены, воспользуйтесь следующими командами для их старта:

    sudo systemctl start nfs-server
    sudo systemctl start rpcbind
  3. Использование IP-адресов вместо имён хостов:
    Попробуйте монтировать путь, используя IP-адрес PC1 вместо имени хоста. Например:

    sudo mount <IP-адрес PC1>:/media/auerbach-data /mnt/auerbach-data -v
  4. Проверка версий NFS:
    Возможно, версия NFS, используемая на клиентской машине, не поддерживается сервером. Попробуйте явно указать версию NFS в команде монтирования. Например:

    sudo mount -t nfs -o nfsvers=3 <IP-адрес PC1>:/media/auerbach-data /mnt/auerbach-data

Заключение

Проблема с NFS "Connection timed out" часто вызвана ошибками в конфигурации сети, брандмауэром или службами NFS. Проведя данные проверки, вы сможете диагностировать и устранить проблему, обеспечивая корректное взаимодействие между двумя системами. Если проблема сохраняется, рассмотрите возможность использования журналов (например, journalctl -xe на сервере) для выявления более детальной информации о возможных сбоях.

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

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