IPsec VPN 経由の CIFS マウントの問題

IPsec VPN 経由の CIFS マウントの問題

Ubuntu 13.04 を実行しているクライアントを、最近 Windows Server 2003 から 2012 にアップグレードされたファイル サーバーによってホストされているネットワーク共有に接続しようとしています。

現在、以下を使用して LAN に接続しながらリモート共有をマウントできます。

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 クライアントでは、「匿名」として接続できるため、接続できます。ただし、匿名として接続できるということは、一般ユーザー向けの認証サービスが機能していることを意味するわけではありません。

おそらくファイアウォールに問題があるのでしょう。次の 4 つのポートを開いてください:

- UDP&TCP/137
- UDP&TCP/138
- UDP&TCP/139
- TCP/445

Windows 側の Netlogon サービスにも通信を許可していることを確認してください。

答え2

VPN経由で接続する場合、ポート445/tcpにアクセスできますか?

nc -v myserver.mydomain.co.uk 445.  

もしそれがうまくいったなら。

Connection to myserver.mydomain.co.uk 445 port [tcp/microsoft-ds] succeeded! 

発生する可能性がある唯一の問題は、ファイアウォールがプロキシ接続を成功させるかどうかです。その場合は、パケット キャプチャを実行して、Windows サーバーが何かを送信しているかどうかを確認します。

答え3

さて、1年後、ついに私はそれを理解しました!

根本的な原因は、ホスト名の解決に問題があることが判明しました。ヒントは、VPN 経由で同じリモート ネットワーク上のマシンに SSH 接続する際の別の問題を解決しようとしたときに見つかりました。

の出力から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 リゾルバを使用することが判明しました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 が最初の 4 つのソースに従ってホスト名を解決できない場合、実際に DNS サーバーに問い合わせる前に返されるということです。なぜnsswitch.confこのように設定されたのかはわかりません (そのように設定したわけではありません) が、次の行を次のように変更します。

hosts:          files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4

突然ping、、、sshを含むすべてが正常に動作するようになりましたmount.cifs

関連情報