Я пытаюсь подключить клиент под управлением Ubuntu 13.04 к сетевому ресурсу, размещенному на файловом сервере, который недавно был обновлен с Windows Server 2003 до 2012.
В настоящее время я могу смонтировать удаленный общий ресурс, подключившись к локальной сети, используя:
sudo mount -t cifs //myserver.mydomain.co.uk/myshare /media/myshare/ -o user=myself,domain=myworkgroup,pass=**********
Однако у меня возникли проблемы с монтированием общего ресурса через Cisco (IPsec/Xauth) VPN. До обновления сервера у меня не было с этим проблем, но теперь я получаю следующее сообщение:
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
dmesg | tail
дает мне[ 1975.651346] CIFS VFS: cifs_mount failed w/return code = -112
Хост определенно не отключен — я все еще могу подключиться к тому же ресурсу через VPN, используя smbclient
:
smbclient //myserver.mydomain.co.uk/myshare -U myself -W myworkgroup
Enter myself's password:
session request to MYSERVER.MYDOMAIN failed (Called name not present)
Domain=[MYWORKGROUP] OS=[Windows Server 2012 Standard 9200] Server=[Windows Server 2012 Standard 6.2]
smb: \>
Я не уверен в значимости session request to MYSERVER.MYDOMAIN failed (Called name not present)
ошибки " ", так как я все еще могу просматривать структуру каталогов.
Есть ли у вас предложения, что можно попробовать дальше?
решение1
Вы можете подключиться с помощью SMB Client, поскольку вы можете подключиться как "анонимный". Но возможность подключиться как анонимный не означает, что служба аутентификации для обычных пользователей работает.
У вас, вероятно, проблема с брандмауэром. Откройте эти 4 порта:
- UDP&TCP/137
- UDP&TCP/138
- UDP&TCP/139
- TCP/445
Убедитесь, что вы также разрешаете взаимодействовать службе Netlogon на стороне Windows.
решение2
Можете ли вы получить доступ к порту 445/tcp при подключении через VPN. Используйте
nc -v myserver.mydomain.co.uk 445.
Если бы это сработало.
Connection to myserver.mydomain.co.uk 445 port [tcp/microsoft-ds] succeeded!
Единственная проблема, которую вы можете увидеть, это если брандмауэр проксирует соединение, которое может быть успешно установлено в любом случае. Тогда вам нужно будет сделать захват пакетов и посмотреть, отправляет ли сервер Windows что-либо.
решение3
И вот, год спустя я наконец понял это!
Корневая причина оказалась в проблеме с разрешением имени хоста. Подсказка пришла, когда я пытался решить другую проблему с SSHing на машине в той же удаленной сети через VPN.
Из вывода ssh -v
:
debug1: Connecting to myserver2.mydomain.ox.ac.uk [163.1.21.182] port 22.
Я обнаружил, что OpenSSH пытался подключиться к бессмысленному IP-адресу (на самом деле он преобразовывал имя хоста моего сервера в IP-адрес сетевого принтера!). Я обнаружил, что это ping
также не позволяло правильно преобразовывать имена хостов, тогда какhost
казалось, работает. Это в конечном итоге привело меня кэта темана Ask Ubuntu.
Оказывается, ping
и ssh
оба используют glibc resolver, как и mount.cifs
. Источники, из которых glibc получает информацию о службе имен, настраиваются в/etc/nsswitch.conf
.
Первоначально содержимое моего письма nsswitch.conf
выглядело так:
passwd: compat
group: compat
shadow: compat
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns wins mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Важная строка начинается с hosts:
, в которой перечислен порядок источников, которые glibc запрашивает при выполнении разрешения имени хоста. Обратите внимание, что в моей версии dns
идет после [NOTFOUND=return]
в порядке поиска.
Я интерпретирую так: если glibc не сможет разрешить имя хоста в соответствии с первыми четырьмя источниками, он вернется до того, как фактически запросит какие-либо DNS-серверы! Я понятия не имею, почему это nsswitch.conf
было настроено таким образом (я определенно не настраивал это таким образом), но изменение строки на:
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
внезапно заставил все работать правильно, включая ping
, ssh
и mount.cifs
.