Вопрос или проблема
У меня есть две системы, работающие на 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
-
Файл /etc/exports на сервере (PC1):
Убедитесь, что файл/etc/exports
содержит правильные параметры. Ваш текущий вид:/media/auerbach-data 139.124.148.0/25(rw,no_subtree_check,sync,fsid=001)
Этот синтаксис корректен, и команда
sudo exportfs -av
показала, что экспорт выполнен без ошибок. -
Проверка доступности сервера:
Убедитесь, что сервер PC1 доступен с клиента PC2. Вы можете использовать командуping
:ping <IP-адрес PC1>
Если сервер отвечает на запросы, то сеть функционирует корректно.
-
Проверка списка экспортов на сервере:
Выполните командуshowmount -e
на PC1:showmount -e
Вы получаете корректный список экспортов. Следовательно, сервер действительно видит клиента.
-
Проверка сетевых соединений:
Используйтеtcpdump
, чтобы убедиться, что запросы доходят до сервера. Вы уже выполнили эту команду и увидели, что сервер не отвечает на запросы NFS, что указывает на проблемы с сетевым соединением.
Устранение неполадок NFS
-
Проверка настроек брандмауэра:
Хотя вы упомянули, что на PC1 нет брандмауэра, рекомендуется проверить наличие iptables или ufw, которые могут блокировать трафик:sudo ufw status sudo iptables -L
Убедитесь, что порты 2049 (NFS), а также дополнительные порты для NFS, такие как 111 (rpcbind), открыты.
-
Проверка службы NFS:
Убедитесь, что необходимые службы запущены на PC1:sudo systemctl status nfs-server sudo systemctl status rpcbind
Если какие-либо службы не запущены, воспользуйтесь следующими командами для их старта:
sudo systemctl start nfs-server sudo systemctl start rpcbind
-
Использование IP-адресов вместо имён хостов:
Попробуйте монтировать путь, используя IP-адрес PC1 вместо имени хоста. Например:sudo mount <IP-адрес PC1>:/media/auerbach-data /mnt/auerbach-data -v
-
Проверка версий 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
на сервере) для выявления более детальной информации о возможных сбоях.