[Samba] smb.conf設定 bind interfaces only (G)とinterfaces (G)

bind interfaces only (G)
このグローバルパラメーターにより、 Samba 管理者が SMB 要求を受け付けるインタフェースを制限できるようになる。 この影響は、ファイルサービス smbd(8) とネームサービス nmbd(8) とで多少異なる。

このパラメーターを指定すると、ネームサービス nmbd は、 interfaces パラメーターで指定されたインタフェースのポート 137 と 138 にバインドする。 nmbd は、ブロードキャストメッセージを受信するために、 「すべてのアドレス」となるインタフェース (0.0.0.0) のポート 137 と 138 にもバインドする。このオプションが設定されていない場合、 nmbd は、これらすべてのソケットに対してネームサービスを提供する。 bind interfaces only が設定されていると、 nmbd はブロードキャストパケットの送信元アドレスを確認して、 interfaces パラメーターで指定されたインタフェースのブロードキャストアドレスを経由しないパケットを破棄する。 他のソケットでユニキャストパケットを受信した場合、 nmbd は、 interfaces パラメーターで指定されたインタフェースを経由しないパケットを送出したマシンに対してはネームサービスを拒否する。 もっとも、IP ソースアドレスを偽造 (spoofing) することで、この単純なチェックは破られてしまう。 そのため、このパラメーターを nmbd のセキュリティ機能と位置付けて本格的に利用すべきではない。

ファイルサービスの場合、このパラメーターを指定すると、 smbd(8) が interfaces パラメーターで指定されたインタフェースにのみバインドするようになる。 これにより、 smbd がサービスを提供するネットワークを指定したインタフェース経由のものに制限することが可能である。 PPP などの間欠的なネットワークインタフェースや、非ブロードキャストなネットワークインタフェースにサービスを提供している場合は、 これらの非永続的なインタフェースをうまく処理できないため、このパラメーターを使わないこと。

bind interfaces only が設定されているが、 127.0.0.1 のネットワークアドレスが interfaces パラメーターに指定されていない場合は、 以下に示すような理由のため、smbpasswd(8) が期待したように動作しないことがある。

ユーザーの SMB パスワードを変更するために、 smbpasswd はデフォルトで localhost – 127.0.0.1 のアドレスに SMB クライアントとして接続を行ない、パスワード変更要求を送信する。 bind interfaces only が設定されているにも関わらず、 127.0.0.1 のネットワークアドレスが interfaces パラメーターに含まれていなかった場合、 smbpasswd のデフォルトの状態では接続に失敗してしまう。 smbpasswd については、 smbpasswd(8) に -r remote machine パラメーターを指定して、 remote machine にローカルホストのプライマリインタフェースのIPアドレスを設定することにより、 強制的にローカルホストのプライマリIPインタフェースを利用させることも可能である。

既定値: bind interfaces only = no

 

interfaces (G)
このオプションにより、Samba がブラウジング、名前の登録その他のNBTの通信に 利用する既定のネットワークインタフェースリストを設定することが可能となる。 既定値では、Samba はカーネルに対して有効なインタフェースのリストを問い合わせ、 127.0.0.1以外のブロードキャスト可能なインタフェースをすべて利用する。

このオプションはインタフェースを示す文字列のリストとなる。 各文字列は以下の形式のいずれで指定してもよい。

ネットワークインタフェース名( eth0 など)。 シェルのようなワイルドカード指定も可能である。 例えばeth*は「eth」から始まるすべてのインタフェースを指定したことになる。

IP アドレス。 この場合、ネットマスクの値は、カーネルから取得されたインタフェースのリストにより設定される。

IP/mask のペア。

ブロードキャスト/mask のペア。

「mask」パラメーターはビット長(例えば24はクラスCネットワーク)で指定しても、 ドット区切り10進数表記で指定してもよい。

上記の「IP」パラメーターは、ドット区切り10進法で指定しても、 OSの標準的なホスト名解決機構で解決可能なホスト名で指定してもよい。

デフォルトで、Samba はループバックインタフェース (IPアドレス 127.0.0.1) を除くブロードキャスト可能なすべての有効なインタフェースを使用する。

SMB3 マルチチャネルの設定をサポートするため、smbd は、以下の拡張文法を 実際のインタフェースの後に追加した、いくつかの拡張パラメータを受け付ける (; と , 文字を扱うために引用することは重要であることに注意):

interface[;key1=value1[,key2=value2[…]]] “interface[;key1=value1[,key2=value2[…]]]”

指定出来るキーは、speed, capability, と if_index である。Speed は 秒単位のビット数で指定する。指定出来る capability は、RSS とRDMAである。 if_index は、注意して使うべきである: 値は、kernel によって使われる インデックスと一致してはならない。 これらのオプションは、実際に運用で使うというよりは、テストと開発用 であることに注意。少なくとも、Linux システム上では、これらの値は 自動的に検出されるべきであるが、設定は自動認識が動かないあるいは 無効の時に、最後の手段として使える。 指定された値は、自動検出した値を上書きする。

以下の最初の2つの例では、eth0 デバイスと 192.168.2.10 および 192.168.3.10 の IP アドレスに対応する 3 つのネットワークインタフェースが指定されている。 後者のインタフェース 2 つに対するネットマスクは 255.255.255.0 に設定されている。

他の例は、インタフェース毎の拡張パラメータをどのように指定するかを示している。 二重引用符が必要な、”,” と “;” の使い方に注意。

既定値: interfaces =

例: interfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0

例: interfaces = eth0, 192.168.2.10/24; 192.168.3.10/255.255.255.0

例: interfaces = “eth0;if_index=65,speed=1000000000,capability=RSS”

例: interfaces = “lo;speed=1000000000” “eth0;capability=RSS”

例: interfaces = “lo;speed=1000000000” , “eth0;capability=RSS”

例: interfaces = “eth0;capability=RSS” , “rdma1;capability=RDMA” ; “rdma2;capability=RSS,capability=RDMA”

Linux、Netatalk、Samba、NFSを使用したファイルサーバーについて研究・運用しています。

fsをフォローする
参考リンク

コメント