今回は大抵の家に転がっている(?)古いラズパイをつかっていわゆる自宅ADを作ってみました。
ラズパイ model B+となると、メモリは512MBだし、ラズパイ3みたいにDockerが動くわけでもない。Etherも100Mbpsだしシングルコアだしで今となってはずいぶん微妙なものになってしまいました。
ちょうど自宅サーバをリプレイスするにあたり、MicroSoft社から無償配布されているHyper-V Server2019を検証するにあたり、非ADな所詮Workstation環境ではFW突破から初手の初期設定がかなり厳しく、それでもなおリモート管理がつながらないという
一昔前私がSambaを使っていたころ(Ver1.0~2.0)設定は難解だわやれケルベロスだwinbindだとかなりの修行が必要でしたが、今やSamba4は自力でADのプライマリドメインコントローラになれます。インストールも設定も随分簡単になりましたので、これで行けそうな気がします。
- 対象:Raspberry Pi model B+
- OS: Raspbian Buster Lite
- まずは公式サイトよりイメージをダウンロードし、SDカードに書き込みます。今では各OSごとにSDカードに書き込むツールを公式が配布していますので、それを使っても構いません。
- 次に、ラズパイ起動時に自動的にSSH接続できるようにしたいので小細工します。書き込んだSDカードを抜き差しすると、FAT32で初期化された領域が見えます。そこにsshという名前の空のファイルを作成します。するとラズパイ起動時に自動的にSSH接続できるようになります。
- 書き込んだSDカードをラズパイにさして起動させます。無事起動しましたら、とりあえず主要なソフトとアップデートのインストールを行い再起動します。
$ sudo apt-get update sudo apt-get -y upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get install vim git sudo reboot - 再起動後、再度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 - 次にIPアドレスを固定にします。まず設定ファイルを開きます。
$ sudo vim /etc/dhcpcd.conf
- 設定ファイルの中に 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アドレス -
ホスト名を設定します。ここでは、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 #追加 - 次にあまり使わないIPv6を無効化します。
$ sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"
- ここでいったん再起動して、設定した固定IPで繋がる事、外部へ出れることを確認しておきます。
- 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
- 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 - コンパイルして、インストールします。なお、ラズパイmodel B+でやると、コンパイルが終わるまでオーバークロックしない場合軽く半日は掛かりました。configureでも30分くらいかかったかな?
$ cd /usr/local/src/samba/samba-4.12.0
$ sudo ./configure --with-utmp --with-ads
$ sudo make && make install - インストールが無事終わったら、ドメインコントローラを構築します。といっても今じゃウイザードがあります。
$ 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文字以上じゃないとダメくらいです。 -
設定が出来ましたら、自動生成されたケルベロス認証設定ファイルをコピーします。
$ sudo cp /usr/local/samba/private/krb5.conf /etc
- 公式サイトを参考に、スタートアップスクリプトを作成し登録します。
$ sudo vi /etc/systemd/system/samba-ad-dc.service
- 有効化し再起動時に自動起動するようにします。
$ sudo systemctl daemon-reload
$ sudo systemctl enable samba-ad-dc - 再起動する前に、正しく起動するかを確認しておきましょう。
$ sudo systemctl start samba-ad-dc
これで表示がグリーンでActive: active (runnning)になっていればOKです。
$ sudo systemctl status samba-ad-dc - あとはADに所属させたいPCのDNSをラズパイADのIPアドレスに設定して、通常通りADに参加すればOKです。参加の際RPCサーバが起動していないとエラーが出ますが、特に問題なく使えています。ただし、windows10の職場又は学校にアクセスするからAD参加すると最後でエラーになりますので、従来通りシステムのプロパティからADに参加させましょう。