Установка 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: время ожидания установлено на Thu Nov 28 10:44:02 2024
mount.nfs: попытка текстовых опций 'vers=4.2,addr=139.124.148.27,clientaddr=139.124.148.5'
mount.nfs: mount(2): Время ожидания соединения истекло
mount.nfs: Время ожидания соединения истекло

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

Список экспорта для PC1:
/media/auerbach-data 139.124.148.0/25

Так что, похоже, что экспорт работает. И когда я затем выполняю showmount, я получаю:

Хосты на PC1:
IP-адрес PC2

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

Список экспорта для auerbach: 
/media/auerbach-data 139.124.148.0/25

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

tcpdump: подробный вывод подавлен, используйте -v[v]... для полного расшифровки протокола
прослушивание на eno145, тип связи EN10MB (Ethernet), длина снимка 262144 байт
10:52:29.203855 IP hubel.836 > auerbach.nfs: Флаги [S], seq 3035191773, win 64240, опции [mss 1460,sackOK,TS val 3448551700 ecr 0,nop,wscale 7], длина 0
10:52:30.244579 IP hubel.836 > auerbach.nfs: Флаги [S], seq 3035191773, win 64240, опции [mss 1460,sackOK,TS val 3448552741 ecr 0,nop,wscale 7], длина 0

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

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

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

mount.nfs: время ожидания установлено на Thu Nov 28 16:53:57 2024
mount.nfs: попытка текстовых опций 'vers=4.2,addr=139.124.148.27,clientaddr=139.124.148.79'

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

Решение проблемы монтирования NFS на Ubuntu 22.04: ошибка «Connection timed out»

Если вы столкнулись с проблемой монтирования NFS на двух системах Ubuntu 22.04, когда на одном из компьютеров отображается ошибка «Connection timed out», это может быть связано с несколькими факторами. В данном ответе мы рассмотрим возможные причины и шаги по их исправлению.

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

Сначала убедитесь, что конфигурация вашего NFS-сервера (PC1 – auerbach) корректна. В вашем файле /etc/exports запись выглядит следующим образом:

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

Это верное определение диапазона IP-адресов, который может обращаться к экспортируемым данным. Вы также выполнили команду sudo exportfs -av, и она не выдала ошибок, что подтверждает, что сервер успешно экспортирует указанный каталог.

2. Тестирование сетевого взаимодействия

Несмотря на то что ping и showmount работают корректно, стоит еще раз проверить маршрутизацию и доступность порта NFS. Порт по умолчанию для NFS – 2049. Используйте telnet для проверки:

telnet auerbach 2049

Если соединение успешное, то вы увидите пустой экран. Если нет, это указывает на проблему с сетью или правилами брандмауэра, даже если вы указали, что брандмауэр отключен.

3. Анализ сетевого трафика

Ваше использование команды tcpdump дало важные подсказки. Вы видите пакеты SYN от клиента (PC2) на сервер (PC1), но не получаете ответов. Это может быть результатом нескольких проблем:

  • Блокировка пакетов: Проверьте правила брандмауэра iptables на обоих машинах. Используйте команду sudo iptables -L -n -v для просмотра правил.

  • Проблемы с маршрутизацией: Возможно, маршрутизатор блокирует NFS-traffic. Убедитесь, что маршрутизация настроена правильно.

4. Попробуйте другой вариант монтирования

Попробуйте явно указать версию NFS при монтировании:

sudo mount -o vers=4 auerbach:/media/auerbach-data /mnt/auerbach-data

Это может помочь, так как иногда версии NFS могут конфликтовать.

5. Проверка службы NFS

Убедитесь, что служба NFS запущена на серверном ПК (PC1):

sudo systemctl status nfs-server

Если она неактивна, запустите её:

sudo systemctl start nfs-server

И не забудьте настроить автоматический старт:

sudo systemctl enable nfs-server

6. Логи и диагностика

Если проблема остается, проверьте логи на сервере, чтобы получить дополнительные подсказки о том, что может быть не так:

sudo journalctl -xe | grep nfs

Ищите сообщения, которые могут указывать на проблемы с обработкой запросов NFS.

Заключение

С помощью вышеперечисленных шагов вы, вероятно, сможете выявить и устранить причину ошибки «Connection timed out» при монтировании NFS на Ubuntu 22.04. Помните, что проблемы с сетью и конфигурацией часто требуют индивидуального подхода. Если после всех шагов ошибка сохраняется, рассмотрите возможность использования утилит для более детальной отладки сети, или обратитесь к сообществу Ubuntu для дополнительной помощи.

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

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