Samba 3.2でホスト名によるアクセス制御が機能しない

提供: Samba-JP
移動先:案内検索
KB番号 J0099
最終更新日 2008/10/31
作成者 たかはしもとのぶ
最終更新者

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 3.2 系列
  • Samba 3.0 系列

現象

Samba 3.0 系列で hosts allow および hosts deny パラメータを用いてホスト名でアクセス制御を行っていた場合、Samba 3.2 系列に移行すると、アクセス制御が期待した動作をしない場合があります。

説明

これは、Sambaの仕様です。

Samba 3.2 系列を IPv6 が有効な環境で動作させると、以下のように IPv4 アドレスでのアクセスが、IPv6 互換アクセスとして記録されます。

[2008/10/31 12:17:33,  2] lib/access.c:check_access(406)
  Allowed connection from  (::ffff:192.168.135.1)

このため、たとえば以下のようにホスト名でアクセス制御を行っていた場合

  hostname lookups = yes
 
  ...
  hosts allow = pc1, pc2

/etc/hosts ファイルで

  192.168.135.1   pc1

のような記述をしても、192.168.135.1 と ::ffff:192.168.135.1 が別のアドレスだと解釈され、意図した動作が行われません。

この際、以下のようなログが記録されます。

[2008/10/31 11:46:43,  0] lib/util_sock.c:matchname(1669)
  matchname: host name/address mismatch: ::ffff:192.168.135.1 != pc1
[2008/10/31 11:46:43,  0] lib/util_sock.c:get_peer_name(1790)
  Matchname failed on pc1 ::ffff:192.168.135.1

上記の場合、/etc/hosts ファイルに

::ffff:192.168.135.1 pc1

のような記述を行うことで期待した動作が行われます。