2020年3月14日土曜日

Raspberry Pi model B+ で家庭内ActiveDirectoryDomainControlerを作る。

気が付いたら1年くらい放置していましたね・・・

今回は大抵の家に転がっている(?)古いラズパイをつかっていわゆる自宅ADを作ってみました。
ラズパイ model B+となると、メモリは512MBだし、ラズパイ3みたいにDockerが動くわけでもない。Etherも100Mbpsだしシングルコアだしで今となってはずいぶん微妙なものになってしまいました。
ちょうど自宅サーバをリプレイスするにあたり、MicroSoft社から無償配布されているHyper-V Server2019を検証するにあたり、非ADな所詮Workstation環境ではFW突破から初手の初期設定がかなり厳しく、それでもなおリモート管理がつながらないというMS仕草に疲れた本質的でない作業が大変だったので、ADを組むことにしました。

一昔前私がSambaを使っていたころ(Ver1.0~2.0)設定は難解だわやれケルベロスだwinbindだとかなりの修行が必要でしたが、今やSamba4は自力でADのプライマリドメインコントローラになれます。インストールも設定も随分簡単になりましたので、これで行けそうな気がします。

  • 対象:Raspberry Pi model B+
  • OS: Raspbian Buster Lite
  1. まずは公式サイトよりイメージをダウンロードし、SDカードに書き込みます。今では各OSごとにSDカードに書き込むツールを公式が配布していますので、それを使っても構いません。
  2. 次に、ラズパイ起動時に自動的にSSH接続できるようにしたいので小細工します。書き込んだSDカードを抜き差しすると、FAT32で初期化された領域が見えます。そこにsshという名前の空のファイルを作成します。するとラズパイ起動時に自動的にSSH接続できるようになります。
  3. 書き込んだSDカードをラズパイにさして起動させます。無事起動しましたら、とりあえず主要なソフトとアップデートのインストールを行い再起動します。
    $ sudo apt-get update sudo apt-get -y upgrade
    $ sudo apt-get dist-upgrade
    $ sudo apt-get install vim git sudo reboot
  4. 再起動後、再度SSHで接続し、TimeZoneやロケールの設定をします。
    $ sudo timedatectl set-timezone Asia/Tokyo
    $ sudo dpkg-reconfigure -f noninteractive tzdata
    $ sudo perl -pe 's/^# (ja_JP.UTF-8 UTF-8)/$1/g' -i /etc/locale.gen
    $ sudo locale-gen sudo update-locale LANG=ja_JP.UTF-8
    $ sudo dpkg-reconfigure -f noninteractive locales
  5. 次にIPアドレスを固定にします。まず設定ファイルを開きます。
    $ sudo vim /etc/dhcpcd.conf
  6. 設定ファイルの中に Example static IP configuration という箇所がコメントされているので、こんな感じでコメントアウトしてIPアドレスを設定します。
    # Example static IP configuration:
    interface eth0
    static ip_address=192.168.0.11/24 #固定したいIPアドレス、サブネット
    #static ip6_address=fd51:42f8:caae:d92e::ff/64
    static routers=192.168.0.1 #デフォルトゲートウエイIP
    static domain_name_servers=192.168.0.1 8.8.8.8 # DNSのIPアドレス
  7. ホスト名を設定します。ここでは、dc.example.comとします。(昔ながらの~.localってのは今はダメらしい)
    $ sudo raspi-config nonint do_hostname dc.example.com
    $ sudo vim /etc/hosts

    192.168.0.11 dc.example.com #追加
    127.0.0.1 dc.example.com #追加
  8. 次にあまり使わないIPv6を無効化します。
    $ sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"
  9. ここでいったん再起動して、設定した固定IPで繋がる事、外部へ出れることを確認しておきます。
  10. Samba4をビルドするのに必要なパッケージ群をインストールします。
    $ sudo apt-get -y install acl attr autoconf bison build-essential \ debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \ libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \ libcap-dev libcups2-dev libgnutls28-dev libjson-perl wget \ libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \ libpopt-dev libreadline-dev perl perl-modules pkg-config \ python-all-dev python-dev python-dnspython python-crypto \ xsltproc zlib1g-dev libjansson-dev python3-distutils git \ libpython3-dev liblmdb-dev pkg-config libgnutls28-dev python3-dns python3-dnspython \ libarchive-dev libacl1-dev libldap2-dev libpam0g-dev libgpgme11-dev
  11. Samba4のソースコードをダウンロードします。(最新版はここから探してください)
    $ sudo mkdir /usr/local/src/samba wget https://download.samba.org/pub/samba/stable/samba-4.12.0.tar.gz
    $ sudo tar xvzfp samba-4.12.0.tar.gz -C /usr/local/src/samba
    $ rm samba-4.12.0.tar.gz
  12. コンパイルして、インストールします。なお、ラズパイmodel B+でやると、コンパイルが終わるまでオーバークロックしない場合軽く半日は掛かりました。configureでも30分くらいかかったかな?
    $ cd /usr/local/src/samba/samba-4.12.0
    $ sudo ./configure --with-utmp --with-ads
    $ sudo make && make install
  13. インストールが無事終わったら、ドメインコントローラを構築します。といっても今じゃウイザードがあります。
    $ sudo /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
    詳しい説明は公式ドキュメントを見ていただければと思います。 といっても注意点はDNS backendはデフォルトのSAMBA_INTERNALを選択する。function-levelは(今のところ)2008_R2まで。DNS forwarder IP addressはADのドメイン以外の名前解決できるDNSサーバを指定する。Administratorのパスワードは大文字小文字数字を入れた8文字以上じゃないとダメくらいです。
  14. 設定が出来ましたら、自動生成されたケルベロス認証設定ファイルをコピーします。
    $ sudo cp /usr/local/samba/private/krb5.conf /etc
  15. 公式サイトを参考に、スタートアップスクリプトを作成し登録します。
    $ sudo vi /etc/systemd/system/samba-ad-dc.service
  16. 有効化し再起動時に自動起動するようにします。
    $ sudo systemctl daemon-reload
    $ sudo systemctl enable samba-ad-dc
  17. 再起動する前に、正しく起動するかを確認しておきましょう。
    $ sudo systemctl start samba-ad-dc
    $ sudo systemctl status samba-ad-dc
    これで表示がグリーンでActive: active (runnning)になっていればOKです。
  18. あとはADに所属させたいPCのDNSをラズパイADのIPアドレスに設定して、通常通りADに参加すればOKです。参加の際RPCサーバが起動していないとエラーが出ますが、特に問題なく使えています。ただし、windows10の職場又は学校にアクセスするからAD参加すると最後でエラーになりますので、従来通りシステムのプロパティからADに参加させましょう。
ユーザの追加などはいろんな管理ツールがあるので割愛します。自分が試したところ、ユーザとコンピュータの登録は出来るのですが、グループポリシーの適用とかが上手くいかないようです。あくまで家庭内で数人ユーザ登録する分には使えると思います。 あとラズパイのスペック的にログインに数秒待たされます。

0 件のコメント:

コメントを投稿