現代的な組織では、Unix、Linux、Windows、macOS など、複数のオペレーティング システムを組み合わせて利用していることが一般的です。Network File System (NFS) はオープンなクライアント/サーバー プロトコルで、組織がデータ ストレージを 1 台以上のサーバーに集中管理し、さまざまなオペレーティング システム間でシームレスなファイル共有を実現できるようにします。
この記事では、ユーザーがローカルに保存されているかのようにネットワーク経由で共有ファイルにアクセスできるように、NFS Windows クライアントをマウントする方法を解説します。あわせて、セキュリティとパフォーマンスの両方を最適化するためのベスト プラクティスも紹介します。
Windows で NFS を設定する:ステップバイステップガイド
ユーザーがリモートの NFS ファイルにアクセスできるようにするには、次の手順に従って Windows で NFS をマウントできるように設定します。
ステップ 1:Windows マシンに「Client for NFS」機能をインストールして、Windows 用の NFS クライアントをセットアップします。
Windows 10 または Windows 11 では、コントロール パネルを開いて Windows Features に進みます。Services for NFS を展開し、Client for NFS の横のチェックボックスをオンにします(以下のとおり)。
Windows Server 2012 以降では、[役割と機能の追加ウィザード] を実行し、Client for NFS を選択します(以下のとおり)。
または、昇格(管理者権限)のある Windows PowerShell セッションを使用して NFS クライアントを Windows にインストールできます:
- Windows 10 または Window 11 の場合、コマンドは次のとおりです:
Enable-WindowsOptionalFeature -Online -FeatureName ServicesForNFS-ClientOnly
- Windows Server の場合、コマンドは次のとおりです:
Install-WindowsFeature -Name NFS-Client
ステップ 2:クライアントと接続を確認します。
下の例のように、ご使用のマシンで NFS Client サービスが実行されていることを確認してください。
もちろん、指定された NFS サーバーへの接続が必要です。Windows の NFS マウントを正常に行うには、NFS Client サービスが実行されていること、そしてファイアウォールで NFS トラフィックが許可されていることを確認してください。デフォルトのポートは 2049 です。
ステップ 3:アイデンティティのマッピングを実行します。
Windows ユーザーが NFS export を提供する Unix サーバーに対して認証できるようにするには、Windows ユーザーを、Unix 系のオペレーティング システムが使用する Unix ユーザー識別子(UID)およびグループ識別子(GID)にマッピングする必要があります。このマッピングにより、Unix サーバーは NFS export の要求を行ったユーザーが誰であるかを判断できるようになります。
アイデンティティ マッピングは、次のいずれかの方法で実行できます。
- Active Directory(NFS 環境と統合している場合)
- ローカル ユーザー マッピング ファイル
- Windows レジストリの設定
セキュリティとスケーラビリティの理由から、最初のオプションが推奨されます。
方法 A(推奨):Active Directory(AD)で Identity Mapping を実行
Unix の NFS サーバーと Windows の NFS クライアントの両方が同じ Active Directory ドメイン に参加している場合は、Active Directory の identity mapping を使用できます。これは、可能な限り推奨される方法です。
デフォルトでは、NFS クライアントは Active Directory で identity mapping を参照しません。ただし、NFS クライアント上で昇格した PowerShell セッションで次のコマンドを実行することで変更できます:
Set-NfsMappingStore -EnableADLookup $True -ADDomainName “yourdomain.com”
これらの LDAP オプションを追加して、ドメイン コントローラーを指定できます:
Set-NfsMappingStore -LdapServers “dc1.yourdomain.com”,”dc2.yourdomain.com”
NFS クライアント サービスを再起動します。
次に、アイデンティティ マッピングを設定する必要があります。Active Directory Users and Computers を次のように操作します。
- 下に示すように、[表示(View)] ドロップダウンで [Advanced Features](高度な機能)を有効にします。
- 表示したいオブジェクトを右クリックし、Properties を選択します。
- 属性エディター(Attribute Editor)タブで、uidNumber または gidNumber 属性を選択し、Edit をクリックします。
- 値を入力して、OK をクリックして変更を保存します。
または、次の PowerShell コマンドを使用することもできます:
Set-ADUser -Identity <UserPrincipalName> -Add @{uidNumber=”<user_unix_uid>”;gidNumber=”<user_unix_gid>”}
次の項目を置き換えてください:
- UserPrincipalName — 変更するユーザー(例:user@domain.com)
- @{ … } — 追加する新しい属性を含むハッシュテーブル
- uidNumber — ユーザーの Unix ユーザーID(UID)
- gidNumber — ユーザーのプライマリグループに対する Unix グループID(GID)
このタスクを自動的に実行するには、ユーザーデータを含む CSV ファイルを作成し、それをループ処理してください。
方法 B:ローカル構成ファイルを使用して Identity Mapping を実行する
ローカルのユーザーマッピングファイルを使用することで、Active Directory に依存せずに Windows ユーザーと Unix UIDs/GIDs の対応関係を確立できます。この方法では、主に次の 2 つの設定ファイルを使用します。
- passwd — Windows ユーザーを Unix UIDs にマッピング
- group — Windows グループを Unix GIDs にマッピング
両方のファイルは通常、C:\Windows\system32\drivers\etc\ ディレクトリに配置されています。これらは特定の形式に従っており、1 行ごとにユーザーまたはグループのマッピングが記載されています。Windows ユーザーが NFS リソースにアクセスしようとすると、NFS サービスはこれらのファイルを参照してユーザーの Windows アカウント名を検索し、対応する UID と GID を取得します。その後、その UID と GID が NFS の操作に使用されます。
この方法は、小規模環境で設定および管理するのが簡単で、特にスタンドアロン サーバーやワークグループに有用です。ただし、マッピング ファイルを手動でメンテナンスする必要があるため、大規模環境ではあまりスケールしません。さらに、Active Directory の統合が現実的にできない環境に対する解決策は提供しますが、セキュリティ上の影響を考慮し、マッピングが正確かつ安全に維持されていることを定期的に監査することが重要です。
方法 C:Windows レジストリ設定を使って Identity Mapping を実行する
この方法では、レジストリ値を設定して、Windows の NFS クライアントが NFS 共有にアクセスするときに使用する既定の UID と GID を指定します。Windows のユーザー アカウントに関係なく、Windows クライアントからのすべての NFS アクセスが特定の Unix ユーザーとして表示されるようにしたい場合に、特に有用です。
このマッピングを実装するには、次の PowerShell コマンドを使用します:
New-ItemProperty “HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default” -Name AnonymousUID -Value <unix_export_owner_uid> -PropertyType “DWord”
New-ItemProperty “HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default” -Name AnonymousGID -Value <unix_export_owner_gid> -PropertyType “DWord”
新しい設定を反映するには再起動が必要です。このマッピングは、Windows クライアントによって行われるすべての NFS マウントに適用されます。アイデンティティ マッピングを実行した後、コマンド プロンプトを使用して Windows で NFS をマウントできます。
この方法では、Windows クライアントからのすべての NFS アクセスに同じ UID/GID が適用されます。そのため、多ユーザー環境では十分なアクセス制御が提供されない可能性があります。さらに、レジストリの変更には管理者権限が必要であり、セキュリティ上の懸念につながるおそれがあります。これらの理由などにより、この方法は安全でないアプローチとみなされ、推奨されません。
手順 4:Windows で NFS 共有をマウントする
NFS におけるマウントとは、リモートのファイル システム(NFS サーバーによってエクスポートされたもの)を、クライアント マシンのローカル ファイル システム上のディレクトリに取り付けることです。クライアントが NFS 共有をマウントすると、リモート ファイル システムに接続され、あたかも NFS 共有がローカルのディレクトリ構造の一部であるかのように見えるようになります。
Windows で NFS をマウントするには、コマンド プロンプトを使用して、次のように利用可能なドライブ文字に割り当てます。
mount \\<nfs_server_ip_address>\<pathtonfsexport> Z:
次の内容を置き換えてください。
- <nfs_server_ip_address> — NFS サーバーの IP アドレス
- <pathtonfsexport> — サーバー上のエクスポート パス
- Z — NFS共有をWindowsコンピューター上でマウントするドライブ文字です。
追加のオプションを指定できます。たとえば、 mount -o anon は接続を匿名で行うことを指定し、 mount -o nolock は NFS が使用する既定のファイルロックを上書きします。
次の mount または mount o コマンドを実行した後、net use コマンドで、すべてのマップされたネットワーク ドライブを表示し、NFS共有が正常にマウントされたかどうかを確認してください。
トラブルシューティングのヒント
マウント処理中に発生しうるエラーと、その典型的な根本原因の例を示します。
- 権限が拒否されました — NFS サーバーのエクスポート設定が正しくないか、NFS のルールによってブロックされています
- サーバーによってアクセスが拒否されました — クライアントとサーバー間で UID/GID が一致しません
- バージョンの不一致 — クライアントとサーバーが互換性のない NFS バージョンを使用しています
- マウントポイントはすでに使用中です — すでにマウントポイントとして使用されているディレクトリにマウントしようとしています
- そのようなファイルまたはディレクトリはありません — サーバー側のエクスポートパスが存在しません
Windows での NFS マウントに関するベストプラクティス
以下のベストプラクティスは、Windows での NFS マウント利用時にセキュリティとパフォーマンスを最適化するのに役立ちます。
セキュリティ
- Kerberos のような強力な認証プロトコルを使用してください。
- ファイアウォールを設定してネットワークをセグメント化し、信頼できないネットワークからの NFS アクセスを制限してください。必要なポートのみを許可します(TCP と UDP のポート 2049)。
- 盗聴や改ざんからデータを保護するため、セキュアなプロトコルを使用して転送中のデータを暗号化します。
- 必要最小限のアクセス権だけを付与し、クライアントの接続を特定の IP アドレスまたはホスト名に制限することで、NFS のエクスポート権限を制限します。
- 既知の脆弱性から保護するために、Windows クライアントと NFS サーバーの両方を定期的に更新し、パッチを適用してください。
- NFS サーバーで詳細なログを有効化し、不審なアクティビティを監視します。
- リモートアクセスには、VPN などの追加のネットワークセキュリティ対策を使用します。
パフォーマンス
- 可能であれば、NFSv3 ではなく NFSv4 または NFSv4.1 を使用してください。
- クライアント側で読み取りおよび書き込みキャッシュを有効にして、頻繁にアクセスされるデータのパフォーマンスを向上させます。次のコマンドで実行できます。 mount –o readcache,writecache.
- セキュリティが環境上問題にならない場合は、ファイルロックを無効にするために nolock オプションの使用を検討してください。
- 最新のパフォーマンス改善とバグ修正の恩恵を受けるために、Windows NFS クライアント ソフトウェアを最新の状態に保ってください。
Netwrix で Unix 共有の変更を監視
Netwrix Change Tracker は、ファイルの変更を監視し、監査ログを維持することでセキュリティを確保します。
よくある質問
Windows 11 は NFS クライアントをサポートしていますか?
はい、Windows 11 は NFS クライアントをサポートしています。
Windows で NFS を使うにはどうすればよいですか?
Windows で NFS を使用する方法をいくつか紹介します。
- Windows の NFS ファイル サーバーを使用すると、SMB と NFS の両方のプロトコルで同じファイル共有へのアクセスを提供できます。
- NFS プロトコルを使用して、非 Windows クライアントがアクセスできる NFS ファイル共有を提供するために、非 Windows のオペレーティング システムを導入できます。
- アプリケーションをあるオペレーティング システムから別のオペレーティング システムへ移行できるようにするには、SMB と NFS の両方のプロトコルでアクセス可能なファイル共有にデータを保存します。
NFS バージョン 4.1 にはどのような改善が含まれていますか?
詳細については、こちらの Microsoft NFS page をご覧ください。バージョン 4.1 の主な改善点は以下のとおりです:
- Remote Procedure Call (RPC)/External Data Representation (XDR) のトランスポート基盤。より良いサポートと、より高いスケーラビリティを提供します
- RPC ポート・マルチプレクサ
- 自動調整されたキャッシュとスレッドプール
- 新しい Kerberos のプライバシー実装および認証オプション
NFS のロール サービスのサーバーを追加するにはどうすればよいですか?
Server Manager または Windows Admin Center で、「役割と機能の追加」ウィザードを使用します。
Server for NFS には、どのような Windows のコマンドライン管理ツールが含まれていますか?
- Mount は、ローカル ドライブにマップされる NFS マウントを Windows クライアントに提供します。
- Nfsadmin は、Server for NFS および Client for NFS コンポーネントの構成設定を管理します。
- Nfsshare Server for NFS を介して共有されるフォルダーの NFS 共有設定を構成します。
- Nfsstat Server for NFS が受信した呼び出しに関する統計を表示またはリセットします。
- Showmount Server for NFS によってエクスポート(公開)されたファイル システムを一覧表示します。
共有する
もっと詳しく
著者について
Joe Dibley
セキュリティリサーチャー
Netwrix のセキュリティリサーチャーであり、Netwrix Security Research Team のメンバーです。Joe は Active Directory、Windows、およびさまざまなエンタープライズソフトウェアのプラットフォームとテクノロジーの専門家であり、新たなセキュリティリスク、複雑な攻撃手法、そしてそれに関連する緩和策と検知について研究しています。