web-dev-qa-db-ja.com

SLES 10.2での起動時にネットワークサービスが失敗し、NFSクライアントの問題が発生する可能性があります

最近SLES9.3から10.2にアップグレードされたボックスで、次の問題が発生しています。

アップグレード前は、NFSマウント(yastを介して定義されていました。つまり、_/etc/fstab_に表示されていました)は正しく機能していました。ただし、アップグレード後は失敗します。ネットワークトレースは、TCP(ポートマッパーRPCの場合)を介してNFSサーバーに初期接続を行っていることを示していますが、その後のMOUNT呼び出しではUDPに切り替わります。NFSサーバーはそうではないためです。 UDPを許可しない(nfs(5)のように、データの破損に関する問題が発生する可能性があるため、正当な理由があります)、接続は通過しません。

TCPオプション(fstab内、またはコマンドラインなど)を追加しても効果はありません。

これをトラブルシューティングする過程で、/ var/adm/messagesが起動中に発生したものとして次のことを報告していることがわかりました。

_Failed services in runlevel 3: network
_

(このエラーメッセージにもかかわらず、ボックスにはSSH経由でアクセスできるため、少なくとも一部のネットワークサービスが開始されているようです。)

私の質問、それでは:

  1. サービスの起動失敗の原因を特定するには、何を調べる必要がありますか?
  2. これは確かに上記のNFSで問題を引き起こす可能性がありますか?
  3. (2)の答えが「いいえ」の場合、何を探すべきかについての提案はありますか?

以下の回答に関連する情報を追加するための編集。

インターフェイスの1つ(このボックスには2つあります)がDHCPを使用しているため、ネットワークサービスが起動時に失敗していることが判明しましたが、現時点ではまだ利用できません。そのため、今のところ無効にし、ネットワークサービスとNFSクライアントサービスを停止/再起動しましたが、それでも同じ結果が得られます。

クライアント側にはファイアウォールはありません。また、クライアント側のiptables -Lは、すべてが受け入れられることを示します。 /etc/hosts.allowまたは/etc/hosts.denyにはエントリがありません。

NFSサーバー側では、何も変更されていません。リモートnfsserverは確かに、すべてのNFSサービスに対してTCPとUDPの両方を許可することを宣伝しています(ただし、UDPをブロックするiptablesルールがあります)。

/ etc/fstabエントリは非常に基本的です-yastで設定すると何が得られますか?

_x.x.x.x:/volume      /localdir   nfs     defaults 0 0
_

クライアントボックスのrpcinfo-pは、実行中のportmapper v2のみを表示し、TCPとUDPの両方をアドバタイズします。サーバーの場合、通常のサービスをすべて表示します。

_   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp   4047  status
    100024    1   tcp   4047  status
    100011    1   udp   4049  rquotad
    100021    1   udp   4045  nlockmgr
    100021    3   udp   4045  nlockmgr
    100021    4   udp   4045  nlockmgr
    100021    1   tcp   4045  nlockmgr
    100021    3   tcp   4045  nlockmgr
    100021    4   tcp   4045  nlockmgr
    100005    1   udp   4046  mountd
    100005    1   tcp   4046  mountd
    100005    2   udp   4046  mountd
    100005    2   tcp   4046  mountd
    100005    3   udp   4046  mountd
    100005    3   tcp   4046  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
_

上記の/ etc/fstabエントリを使用したmount呼び出しは、単純に次のとおりです。

_mount /localdir
_

tcp、v3などのさまざまなオプションでも試してみましたが。

/ etc/fstabエントリ(したがってマウント)とrpcinfo -p呼び出しの両方がIPアドレスを使用しているため、DNS解決の問題は発生しません。

2
Alex

参考までに、他の誰かがこの質問に出くわし、答えを求めている場合:

私はついにこれについてNovellでチケットを開きました。これはSLES10.2の既知のバグであることが判明し(491140:マウントは「nfs」の「proto =」を無視します)、パッチがあります(util-linux-2.12r-35.35.2.x86_64.rpm) 。これをインストールすると、マウントは期待どおりに機能し、すべての要求はTCPを介して行われます。 (Novellのサポートから、これがSLES 10.3に統合されたことが通知されました。)

0
Alex

いくつかのこと。まず、最初にsince the NFS server doesn't allow UDP、そしてあなたの編集の中でThe remote nfsserver is indeed advertising that it allows both TCP and UDP for all of the NFS services。これは少し奇妙に思えます。サーバーが許可しないものをアドバタイズするのはなぜですか?

次に、NFSバージョン2またはバージョン3を使用しようとしていますか?バージョン2はUDPのみをサポートしますが、TCPにはバージョン3が必要です。おそらく、マウントオプションでバージョン3を手動で指定すると役立ちますか? (vers = 3)デフォルトが2の場合、TCP)を指定しても何の役にも立ちません。

また、サーバーがバージョン4を完全にサポートしていなかったときに、バージョン4を使用しようとする新しいクライアントで問題が発生しました。 SLESをアップグレードすると、デフォルトバージョンが異なる可能性があります。それを明示的に指定する理由はなおさらです。

/ etc/fstabにもエントリを投稿してみませんか?

1

同様の理由で、/etc/hosts.denymountdのエントリが含まれていないことを確認し、hosts.allowを確認します。価値があるものとして、私は通常hosts.denyをクリアし、iptablesを使用してアクセスを制御します。

rpcinfo -p nfsserverを使用して、mountdが実際にアドバタイズしていることを確認しますTCP —TCPリスニングを無効にするオプション-nがあります。これは(SuSEのIIRC)おそらく/etc/sysconfig/nfsかそこらに設定されます。

1
Alex M

私はあなたの質問を理解しているので、あなたは以下を行うことができます:

  • nfsクライアントシステムへのssh
  • クライアントからサーバーへのrpcinfoとの「接続」
  • dHCPインターフェイスを無効にしたため、すべてのトラフィックが1つのインターフェイスを通過し、他のルートはありません。

ただし、nfsクライアントのnfsサーバーからファイルシステムをマウントすることはできず、エラーメッセージも表示されません。

rpcinfomountの呼び出しの違いは何ですか?一方でIPアドレスを使用し、もう一方でfqdnを使用しますか?出力とリターンコードの両方のコマンドを投稿していただけますか?

1
Christian
  1. service network restartを使用して手動でサービスを開始し、どのようなメッセージが表示されるかを確認してください。そこにいくつかの情報があるはずです。
  2. おそらく...
  3. システムでデフォルトで有効になっているファイアウォールがあるかどうかを確認してください。これが問題の原因である可能性があります。特に、失敗したネットワークの開始がファイアウォールルールを正しくロードしない場合。
0
Kamil Kisiel

物事を明示的に設定してみて、それがどこに到達するかを確認してください。たとえば、/ etc/fstabでは次のようになります。

x.x.x.x:/vol /local nfs proto=tcp,port=2049,mountport=4046,nfsvers=3 0 0

これは、少なくともポートマッパーをバイパスし、上記のTCPポート)に明示的に接続して、デバッグ中に各チャネルをtcpdumpでトレースしやすくする必要があります。

0
user15590