Ubuntu 18.04 Server に、Samba 4.7 を導入して、Active Directory (AD) の ドメインコントローラー (DC) を構築した際のメモです。

あまり細かい説明は抜き (汗) で、手順通りに作業すれば環境が構築できるようにしています。

 

 

 

構築した環境

ゴール

  • Active Directory (AD) の、ドメインコントローラ (DC) を構築
  • ホスト名: s4dc1
  • IPアドレス: 192.168.10.40/24
  • ゲートウェイ: 192.168.10.1
  • ドメイン名: SAMDOM.MYDOMAIN.ORG
  • DNSバックエンド: BIND9_DLZ

ネットワーク設定

IPv6 を無効にする

Ubuntu 18.04 で ipv6 を無効にする を参照して、IPv6 を無効にします。

IP アドレスの設定

OSインストール時に、DHCP でネットワークに接続している場合は、静的なIPアドレスに変更します。

設定をテストします。

設定を適用します。

ホスト名の設定

/etc/hosts を編集して、エントリを修正します。

DHCP で設定した場合、ここに 127.0.1.1 というエントリがあるかもしれませんが、その場合は、そのエントリをコメントアウトか、もしくは削除してください。

/etc/hostname ホスト名を設定します。

ここでいったん再起動して、ネットワークの設定を適用します。

BIND のインストール

Bind9 をパッケージからインストールします。

Bind9 のバージョンを確認します。これは後ほど必要になるので、控えておきます。

稼動しているかどうか確認。

名前解決の確認

localhost の前方参照ゾーンの確認

localhost の後方参照ゾーンの確認

Bind 起動オプションの変更

/etc/default/bind9 を編集して、Bind9 のIPv6 対応を無効にします。

Samba のインストール

インストール

ケルベロスのレルム、およびキーサーバー等の名称を確認されるので次のようにします。

  • レルム: SAMDOM.MYDOMAIN.LOCAL
  • あなたのレルムのケルベロスサーバー (kdc) : s4dc1.samdom.mydomain.org
  • あなたのレルムのケルベロス管理サーバー (admin_server) : s4dc1.samdom.mydomain.org

Samba のプロビジョニング

プロビジョニングする前に、デフォルトのsmb.confを退避させます。

対話形式 (--interactive) で、Samba をプロビジョニングします。プロビジョニング中に何点か質問が出てきますが、基本はそのままで大丈夫ですが、DNS Backend の質問には、 BIND9_DLZ を指定します。

また、Administrator のパスワードを確認されますので、パスワードを設定します。

krb5.conf のコピー

プロビジョニングが終わると、/var/lib/samba/private/krb5.conf ができているので、これを /etc/krb5.conf と置き換えます。

BIND9 を設定

BIND9_DLZ モジュールの設定

Samba のプロビジョニングが終了すると、/var/lib/samba/private/named.conf ができています。このファイルを開いて、先程控えておいたBind9 のバージョンを確認して、どのライブラリを使用するのか確認します。

すでに、BIND 9.11.x の部分の設定のコメントが外されているので、そのまま使用します。
また、このファイルを、Bind の設定ファイル、/etc/bind/named.conf.local 内で internal ゾーンにインクルードさせます。
同様に、/etc/bind/named.conf.default-zones もインクルードさせます。

次に、/etc/bind/named.conf の内容を変更します。すでに、named.conf.local でインクルードされている named.conf.default-zones のエントリをコメントアウトします。

さらに、/etc/bind/named.conf.options を編集して、アクセスコントロールリスト (acl) の設定やその他を追加します。

Kerberos を使用した動的な DNS 更新のための設定

動的に DNS を更新するために、/etc/bind/named.conf.options に次のような設定を追加します。

AppArmor の設定

AppArmor の設定を追加して、Bind が Samba 関連のファイルへのアクセスを許可するようにします。こちらは、SambaWiki の Interaction with AppArmor or SELinux の内容のままでは Bind がエラーを吐きます。

一応、起動に成功したのは下記のパターンです。/etc/apparmor.d/local/usr.sbin.named を編集します。

設定を保存したら、AppArmor を再起動します。

Bind の設定ファイルのチェック

設定ファイルに間違いがないか確認します。

DNSリゾルバを無効にする

/etc/resolve.conf が自動的に更新されないように、無効にして、/etc/resolv.conf を削除します。

次に、手動で resolve.conf を編集します。

Samba の起動設定

動的な DNS の更新をテストする前に、Samba を起動します。が、初期設定ではsamba-ad-dc.service を起動させることができませんので、次の手順で起動させます。

まず、Samba と競合するサービスを停止させます。これらのサービスは個別に起動する必要がありません。samba-ad-dc.service がそれぞれ適切に起動するようになります。

また、これらの競合サービスが自動起動しないようにします。

samba-ad-dc が起動できるように、マスクを解除します。

その上で Sambaを有効にして起動します。

起動がしているかどうか確認するには、 smbclient を使用します。

その後、Bind を再起動します。

念の為、起動に失敗していないかログを確認します。

このように、all zones loaded となって、running となっていれば起動は成功しています。

となっている場合は、起動に失敗しています。ログを見て、修正してください。

もしログの直後に、

このように出力されている場合は、AppArmor の設定ミスになります(あるいは、AppArmor の再起動のし忘れ等)。

動的DNS更新のテスト

無事、Bindが起動したなら、動的DNS更新をテストします。

逆引きゾーンの作成

これは必須の作業ではなく、必要に応じて実施してください。

最終確認

ここまでが一通り終わったら、最終チェックをします。

Samba AD DC の確認

ファイルサーバーの確認をします。ドメインコントローラの共有フォルダの一覧が見えます。

次に、Administrator でログオンを試みます。下の例は、Administrator としてログオンして、ls コマンドを発行させる例です。

DNS の確認

LDAPサーバーが名前解決できるか確認。

Kerberosサーバーが名前解決できるか確認。

Sambaサーバーが名前解決できるか確認。

Kerberos の確認

Kerberos でチケットを発行。

発行したチケットの確認。

ここまで来たらあと一息です。

NTP の設定

Active Directory の環境は、ドメインコントローラーとドメインのメンバPC の時刻が一致している必要があります1。メンバPCから時刻同期ができるように、NTPサーバーのインストールを行います。

NTP のインストール。

/var/lib/samba/ntp_signd のパーミッションを変更

/etc/ntp.conf を編集

NTP を一旦停止させて、時刻を強制的に同期させる。

NTP サービスを起動

同期の確認

まとめ

以上で、Samba4.7 の基本的な設定と構築は終わりです。

後は、実際にWindows クライアントから接続していろいろテストしてみるつもりです。

以前に、Samba 4.1 を構築した頃とそんなに多く違うこともなかったですね。変わったのは、Ubuntu のネットワーク周りの設定ですね。

本編とは関係ありませんが、VirtualBox で検証を始める前に、Ubuntu Server 上で KVM を使って構築していたのですが、作業の途中から全くネットワーク接続がなくなってしまう怪現象にみまわれて、いっときは検証を断念しそうになりました。でも、その後 VirtualBox で改めて作業するとすんなりとできてしまったので、ちょっと頭が混乱しています。

あのネットワーク接続の消失は何だったんだろうか・・


  1. 最大5分のズレまでは許容されますが、それを超えるとログオンできなくなります。 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です