回答:
$ rpcinfo -p | grep nfs
NFSサーバーのポート111(TCPおよびUDP)および2049(TCPおよびUDP)。
NFSロックマネージャー用のポート(ポート4045 TCPおよびUDP)と同様に、クラスターおよびクライアントステータス用のポート(前者にはポート1110 TCP、後者には1110 UDP)もあります。ゲートウェイ間で必要なサービスに応じて、許可する必要があるポートを決定できるのはユーザーだけです。
grep nfs
が、111がであることを知るためにgrepを中断しましたportmapper
。知っておくといい!(そしてあなたが言ったように、必要な)
ポートマッパーの111とnfsの2049に加えて、mountdポートと、場合によってはrquotad、lockd、およびstatdを許可する必要があります。これらはすべて動的にすることができます。この優れたNFSセキュリティガイドでは、スタートアップスクリプトとカーネルモジュールの構成を変更して、強制的に静的ポートを使用することをお勧めします。
ファイアウォールに関するセクションがある上記のガイドに加えて、NFSの強化に関する別の質問に対する私の答えを参照してください。
RPCMOUNTDOPTS="--port 34567"
し、その後で再起動sysctl --system
し、/etc/init.d/nfs-kernel-server restart
私はこのページで自分の問題に役立つ方向を見つけましたが、レシピに従うのは簡単ではありませんでした。だからここに私のレシピです。
TL; DR-修正後、nfsポート(111、2049)とmountdポートの両方を許可する必要があります。
手順:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="--port 33333"
または他のポート番号。
次に、次を使用してnfsをリセットしてください。
sudo service nfs-kernel-server restart
そして、それが使用に役立つかどうかをテストします:
rpcinfo -p | grep "tcp.*mountd"
私にとっては十分ではありませんでしたが、完全に再起動することで問題は解決しました。
(クレジット)
(1)古いルールを削除する、これを手動で行う、またはファイアウォールの唯一の用途である場合はリセットする:
sudo ufw reset
sudo ufw enable
(2)nfsおよびmountdポートを追加する
sudo ufw allow in from 10.0.0.1/20 to any port 111
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333
(ローカルIPまたはのany
代わりに「」に変更します10.0.0.1/20
)
これですべてです。
sudo service nfs-config restart
再起動する前の簡単な方法でnfs-kernel-server
問題ありません。
systemctl
、systemctl restart nfs-kernel-server.service
です。
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
その後に(OK、2つのスウェルフープ)が続きsudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333
ます。ポート33333は上記の例にあることに注意してください。答えが示すように、別のポートを使用できます。
FERMでは、Backticksを使用してrpcinfoからポートを取得できます。次に例を示します。
サーバ:
proto tcp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
クライアント:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(TCPのみを使用する場合は、proto tcp
一部のみが必要です)。
記録のために、NFS共有がWindows 2008 R2サーバーによってエクスポートされ、クライアントがUbuntu 12.04.4である構成の場合、ポート111、2049 、および 1048のアクセス許可を追加する必要がありました。
これが誰かの助けになることを願っています。