Zentyalを日本語で使う場合の設定手順

Linux(Ubuntu 16.04 LTS)ベースでDHCPサーバ/ファイヤーウォール/NATルータ/ActiveDirectory/Exchange互換サーバなどを提供できるアプライアンス「zentyal」を久々にセットアップ。 (以前はzentyal.orgだったのが、zentyal.comに統合された)

2019/07/02追記:Ubuntu 18.04.1 LTSベースのZentyal 6.0です。この記事はZentyal 5.1の時に作成していますが、Zentyal 6.0でも同じでした。
2021/08/12追記:Ubuntu 20.04.2 LTSベースのZentyal 7.0ですが、同じように日本語は化け、同じパッケージインストールで修正できました。

以前、日本語訳を投稿しておいたおかげで日本語を選択できるようになっていますが、注意点が1つ。
インストール時に日本語を設定してしまうと、firefoxが文字化けし、設定に難儀します。
まずはEnglishでインストールを行った上で、手動でパッケージを追加してから日本語に変更する必要があります。

1. EnglishでZentyalをインストール
2. 初回ログイン
3. シェルを開く
4. Ubuntuの日本語対応をインストール「sudo apt install language-pack-ja firefox-locale-ja」
5. 日本語表示用フォントをインストール「sudo apt install fonts-arphic-uming fonts-takao-pgothic」
6. zentyalの日本語対応をインストール「sudo apt install language-pack-zentyal-ja」
7. zentyalの設定画面で「日本語」を設定する。

2019/12/13追記: fonts-takao-pgothic でエラーとなる場合は fonts-takao-gothic で実施のこと

文字化け状態の例

文字化け解消後

なお、yahooのページだと「fonts-arphic-uming」だけでも大丈夫だったが、zentyalではさらに「fonts-takao-pgothic」を追加する必要があった。
なお、 xfonts-intl-japanese では文字化けは直らなかった。

vpopmail代替としてのpostfix+dovecotメールサーバ環境iRedMail

vpopmail+qmailを使って複数ドメインのメールサーバを運用していた。
さすがにきつくなってきたので乗り換え先をいろいろ検討していた。

・いままで使っていたパスワードが継続できること
 (元の平文パスワードは不明で、MySQL上のvpopmailにあるパスワード文字列を引き継げること)
・POP3 before SMTPは廃止する
・とりあえず20ドメインぐらいあり、各ドメインのユーザは20個程度
・Maildir形式のメールデータは移行する
・Web UIでメールアカウントを作成できること
・無償版の範囲であること

いろいろ探した結果、「iRedMail」を乗り換え先として選定した。

vpopmailとiRedMail無償版を比較した場合、機能が足らない点は以下である。
・各ドメイン内の管理者ユーザが使用できない
  全体管理者と一般ユーザの2種類のみが使用できる
  ドメイン内の管理者ユーザは有償版の機能
・エイリアスはWeb UIで管理できない
  有償版での機能
  手動でMySQL DB上に設定を入れることでエイリアスを使用することはできる
  (Set mail forwarding with SQL command line)
・メーリングリストをWeb UIで管理できない
  有償版での機能
  mlmmjベースであるため手動で設定することはできる
・アップデートが面倒
  無償版だと手動でいろいろ設定しつつアップデートを行う必要がある。

ドメイン内管理者が使用できないというところが痛いが、必須要素ではないため、目をつぶった。

新しい利点として
・Exchange対応
  POP3/IMAPだけでなく「SOGo」というExchange互換サーバ機能を利用できる
  カレンダー(CalDAV)、住所録(CardDAV)も対応
・WebMailが2種類使える
  「Roundcube」と「SOGo」の2種類のWebMailが使える
・SMTP AUTH対応
・LetsEncryptによるSSL対応
 「Use a SSL certificate
・DKIM対応
 「Sign DKIM signature on outgoing emails for new mail domain

設定は、初期インストール直後のCentOS 7/Ubuntuなどで「iRedMail」公式からファイルをダウンロードして、インストールスクリプトを実行するだけで良い。

インストールスクリプト実行完了後に、初期の設定パスワードなどを記載したファイルを出力するので、どこか別の場所に保存しておく必要がある。

インストール後、「postfix/dovecotメールサーバでWindows Live Mail 2012がエラーになる」に記載した設定は行った方が良い。

また、今後、パッケージのアップデートを行う場合は「php.iniを変更せずにdisable_functionsの内容を無効化してroundcubeのアップグレードスクリプトを動作させる方法」の知識が必要になる。

なお、実際に切り替えてみると、Windows Live Mail 2012ユーザでは問題が発生した。
Windows Live Mail 2012の場合、同じパスワードであってもパスワードの設定をやり直さなければ認証エラーとなる仕様であるようだ。

php.iniを変更せずにdisable_functionsの内容を無効化してroundcubeのアップグレードスクリプトを動作させる方法

/etc/php.iniでdisable_functionsに「system」を含めている場合、roundcubeのアップグレードを行う時に「./bin/installto.sh /var/www/roundcube」を実行すると、エラーとなってしまう。

# ./bin/installto.sh /var/www/roundcubemail
Error 500: PHP system() function is required. Check disable_functions in php.ini.
#

これは、/etc/php.ini内の「disable_functions 」設定で「system」が記載されていることにより使用できないために発生している。

/etc/php.iniの disable_functionsを修正してしまえば動くようになりますが、アップデートのたびに変更して、アップデートが終わったら元に戻すのは面倒です。

/etc/php.iniを変更するのではなく、一時的に回避するための手法を検討した結果・・・

「php -d disable_functions=”” ./bin/installto.sh /var/www/roundcubemail」と実行することで、disable_functionsの設定に関して無視して実行することができました。

# php -d disable_functions="" ./bin/installto.sh /var/www/roundcubemail
<略>

これで、/etc/php.iniを編集しなくともアップデートができるようになりました。

+メッセージで使われるRCSと旧来のSMS/MMSの使い分け

NTTドコモ, au, ソフトバンクが共通で画像添付のメッセージをやりとりできるサービスを+メッセージとして開始する、というリリースが出た。

これは、GSMAという団体が定義しているRich Communication Services(RCS)という仕様に基づいたもので、すでにAndroidはGoogleが使えるソフト(メッセージ)を出しているし、iOSもiMessageが対応しているにもかかわらず、別のソフトで対応する方針らしい。

なんでだろう?と調べて見ると、日本ならではの事情らしきものが見えた。

まず、携帯電話同士のメッセージのやりとりには、短い文章のみを送れるSMSと、画像などを添付して送れるMMSの2種類がある。
これらはパケット課金ではなく、1通いくら、という形でやりとりされている。
日本では、SMSは3社とも対応しているが、MMSは一部しか対応していない。

RCSの仕様書を読んでいくと、おもしろいことが分かった。
それは、「メッセージの送信者と受信者の状況」と「オフライン受信の可否」と「ファイルを添付するか否か」によって、SMS,RCS,MMSを自動選択する、という仕組みがある、ということである。

joyn Crane Product Definition Document Version 3.0
(この記事は上記のRCS実装の1つであるjoynを元に書いていたが、その後、RCS Universal Profileに関するドキュメントも公開された→「RCS Universal Profile Service Definition Document Version 2.2」若干記述が変わっているところがあるものの概ね同じです)

なお、pdfは「RCS Documentation」にて[Specifications]→[Universal Profile Service]でダウンロードすることができます。

さて、仕様書からSMS,RCS,MMSの送受信の動作に関して表で説明されている箇所を抜き出して見ると・・・

その1:オフライン受信を許可しない設定時にメッセージのみを送る場合

その2:オフライン受信を許可する設定時にメッセージのみを送る場合

その3:オフライン受信を許可しない設定時にファイル添付でメッセージを送る場合

その4:オフライン受信を許可する設定時にファイル添付でメッセージを送る場合

ちょっとした条件の違いで何を使うかが変わっている。

これを日本でそのまま使ってしまうと、パケット課金のRCSで送ろうと思ったけど、実はSMSやMMSで送られちゃいました、ということが起こりえる。
そうすると1通当たりの課金になってしまうため、たくさんメッセージを送るとすごいことになってしまう。

こういった課金事故を減らすために必ずRCSでメッセージを送信するような仕組みにしたソフトを使わせようとしているのではないか?

という印象を受けた

Samba 4.7.xでActive Directoryを1から立てる

2019/06/14追記

Samba 4.10.xでActive Directoryを1から立てる」という記事を更新版の記事を作成しています。違いは必要となるパッケージが増えたことについてです。


CentOS7とSamba 4.7.5で環境を作成しなおしたので、記事更新

過去の記事はこちら
2014年2月版「Samba 4.xでActive Directoryを1から立てる
2016年7月版「Samba 4.4.xでActive Directoryを1から立てる


Linux上でSambaを使ってActive Directoryサーバを立てるメリット
Windows Serverを買わなくてもActive Directoryを作れる
 ライセンス費用の低減
Active Directoryユーザの作成などのユーザ管理をWindowsマシンからWindows標準ツールで行える
 ユーザ作成/変更、コンピュータアカウントの作成、DNS管理など、Active Directoryの管理を行う際に
 良く使う動作については、Linuxのコマンドではなく、WindowsのActive Directory管理ツールで行える
 具体的にはADに参加しているWindowsマシンにWindows機能のActive Directory管理ツールを追加インストールしたあと、
 ADの管理者ユーザでログオンすることでAD管理を行うことができる
設定が難しくない
 いまのsambaは、DNSサーバとLDAPサーバ機能が統合されており、AD名とAD上の役割と
 管理者パスワードを決めてしまえば、あとは良きに計らってくれるので
 設定の難易度が非常に低い

もちろん、デメリット、もあります
ActiveDirectoryの全機能が搭載されていない
 ドメイン/フォレストの機能レベルが「Windows Server 2008 R2」までとなっている。
 なお、フェールオーバクラスタについては作成できるようになっていました。
 →「samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた」というわけで動作することを確認しました

それでは、実際の手順について・・・
元ネタは公式ページの「Setting up Samba as an Active Directory Domain Controller」となります。

0. CentOS7の最小インストールを実施

1. /etc/hostsの修正
自ホスト名を/etc/hostsに追加
追加の際は、ショートのホスト名と、ドメイン付きのFQDNの両方を列挙すること。

[root@adserver ~]# cat /etc/hosts<br><br>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4<br><br>
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6<br><br>
172.17.44.40    adserver adserver.adosakana.local<br><br>
[root@adserver ~]#

2. 好みに応じて使うツールをインストール
セッションが途中で切れても良い様に「screen」と、ファイルダウンロードするためにwget(curlでもいいのですが)をインストールします。

[root@adserver ~]# yum install wget screen<br><br>
<略><br><br>
[root@adserver ~]#

3. 必要なパッケージをインストール
Samba公式の「Operating system requirements/Dependencies – Libraries and programs」に記載されているパッケージをインストール

[root@adserver ~]# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \<br><br>
       libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \<br><br>
       perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \<br><br>
       python-crypto gnutls-devel libattr-devel keyutils-libs-devel \<br><br>
       libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \<br><br>
       pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel<br><br>
<略><br><br>
[root@adserver ~]#

4. sambaのtar.gzをダウンロード

[root@adserver ~]# wget https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz<br><br>
--2016-xx-xx xx:xx:xx--  https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz<br><br>
download.samba.org をDNSに問いあわせています... 144.76.82.156<br><br>
download.samba.org|144.76.82.156|:443 に接続しています... 接続しました。<br><br>
HTTP による接続要求を送信しました、応答を待っています... 200 OK<br><br>
長さ: 20715838 (20M) [application/gzip]<br><br>
`samba-4.7.5.tar.gz' に保存中</p><br>
<p>100%[======================================>] 16,862,398  3.71MB/s 時間 5.5s</p><br>
<p>2018-03-xx xx:xx:xx (2.93 MB/s) - `samba-4.7.5.tar.gz' へ保存完了 [16862398/16862398]</p><br>
<p>[root@adserver ~]#

5. configure実施

[root@adserver ~]# tar xfz samba-4.7.5.tar.gz<br><br>
[root@adserver ~]# cd samba-4.7.5<br><br>
[root@adserver samba-4.7.5]# ./configure<br><br>
Checking for program gcc or cc           : /usr/bin/gcc<br><br>
Checking for program cpp                 : /usr/bin/cpp<br><br>
<略><br><br>
Checking if toolchain accepts -fstack-protector                                                 : yes<br><br>
'configure' finished successfully (2m43.587s)<br><br>
[root@adserver samba-4.7.5]#

6. make & make install

[root@adserver samba-4.7.5]# make<br><br>
WAF_MAKE=1 python ./buildtools/bin/waf build<br><br>
Waf: Entering directory `/root/samba-4.7.5/bin'<br><br>
<略><br><br>
Note: Writing nmblookup4.1<br><br>
Waf: Leaving directory `/root/samba-4.7.5/bin'<br><br>
'build' finished successfully (22m56.876s)<br><br>
[root@adserver samba-4.7.5]# make install<br><br>
WAF_MAKE=1 python ./buildtools/bin/waf install<br><br>
Waf: Entering directory `/root/samba-4.7.5/bin'<br><br>
<略><br><br>
* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm<br><br>
Waf: Leaving directory `/root/samba-4.7.5/bin'<br><br>
'install' finished successfully (6m48.094s)<br><br>
[root@adserver samba-4.7.5]#

7. インストール完了確認

sambaのバージョン確認

[root@adserver ~]# /usr/local/samba/sbin/samba -V<br><br>
Version 4.7.5<br><br>
[root@adserver ~]#

8. Active Directoryのセットアップ
ドメイン「adosakana.local」を作成します。
また、sambaの機能を使ってAD DNSを構築するので「SAMBA_INTERNAL」を選択します。

なお、「–use-rfc2307」はADにNIS連携機能を追加するオプションです。AD上にUnix用のUID/GID/shell情報なども格納できるようにします。Samba環境では有効にしておくべきものです。

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive<br><br>
Realm [ADOSAKANA.LOCAL]:<br><br>
 Domain [ADOSAKANA]:<br><br>
 Server Role (dc, member, standalone) [dc]:<br><br>
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:<br><br>
 DNS forwarder IP address (write 'none' to disable forwarding) [172.30.50.100]:<br><br>
Administrator password:<br><br>
Retype password:<br><br>
Looking up IPv4 addresses<br><br>
Looking up IPv6 addresses<br><br>
No IPv6 address will be assigned<br><br>
Setting up secrets.ldb<br><br>
Setting up the registry<br><br>
Setting up the privileges database<br><br>
Setting up idmap db<br><br>
Setting up SAM db<br><br>
Setting up sam.ldb partitions and settings<br><br>
Setting up sam.ldb rootDSE<br><br>
Pre-loading the Samba 4 and AD schema<br><br>
Adding DomainDN: DC=adosakana,DC=local<br><br>
Adding configuration container<br><br>
Setting up sam.ldb schema<br><br>
Setting up sam.ldb configuration data<br><br>
Setting up display specifiers<br><br>
Modifying display specifiers<br><br>
Adding users container<br><br>
Modifying users container<br><br>
Adding computers container<br><br>
Modifying computers container<br><br>
Setting up sam.ldb data<br><br>
Setting up well known security principals<br><br>
Setting up sam.ldb users and groups<br><br>
Setting up self join<br><br>
Adding DNS accounts<br><br>
Creating CN=MicrosoftDNS,CN=System,DC=adosakana,DC=local<br><br>
Creating DomainDnsZones and ForestDnsZones partitions<br><br>
Populating DomainDnsZones and ForestDnsZones partitions<br><br>
Setting up sam.ldb rootDSE marking as synchronized<br><br>
Fixing provision GUIDs<br><br>
A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf<br><br>
Setting up fake yp server settings<br><br>
Once the above files are installed, your Samba AD server will be ready to use<br><br>
Server Role:           active directory domain controller<br><br>
Hostname:              adserver<br><br>
NetBIOS Domain:        ADOSAKANA<br><br>
DNS Domain:            adosakana.local<br><br>
DOMAIN SID:            S-1-5-21-98280047-2622333268-1688910966</p><br>
<p>[root@adserver ~]#

なお、password_hashでエラーとなるとおもいます。
現状の /etc/krb5.conf の内容が問題で発生しています。
この後の手順で正しいものに置き換えるので、この段階では単純に「mv /etc/krb5.conf /etc/krb5.conf.org」などの手段で別の名前として使わなくすれば大丈夫です。

Setting up sam.ldb users and groups<br><br>
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:3132<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run<br><br>
    return self.run(*args, **kwargs)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 474, in run<br><br>
    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision<br><br>
    skip_sysvolacl=skip_sysvolacl)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill<br><br>
    next_rid=next_rid, dc_rid=dc_rid)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb<br><br>
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif<br><br>
    ldb.add_ldif(data, controls)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 229, in add_ldif<br><br>
    self.add(msg, controls)

9. sambaを起動

[root@adserver ~]# ps -ef|grep samba<br><br>
root     11129 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba<br><br>
[root@adserver ~]# /usr/local/samba/sbin/samba<br><br>
[root@adserver ~]# ps -ef|grep samba<br><br>
root     11131     1 14 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11132 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11133 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11134 11132  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11135 11134 19 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11136 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11137 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11138 11131 21 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11139 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11140 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11141 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11142 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11143 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11144 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11145 11142  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11146 11131  2 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11147 11145 18 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11148 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11151 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11152 11151 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_dnsupdate<br><br>
root     11153 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11154 11153 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_spnupdate<br><br>
root     11157 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11158 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11160 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba<br><br>
root     11161 11147  0 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground<br><br>
[root@adserver ~]#

10.動作確認
CentOS内部からSMB接続を行うテストを実施。

[root@adserver ~]# /usr/local/samba/bin/smbclient --version<br><br>
Version 4.7.5<br><br>
[root@adserver ~]# /usr/local/samba/bin/smbclient -L localhost -U%</p><br>
<p>        Sharename       Type      Comment<br><br>
        ---------       ----      -------<br><br>
        netlogon        Disk<br><br>
        sysvol          Disk<br><br>
        IPC$            IPC       IPC Service (Samba 4.7.5)<br><br>
Reconnecting with SMB1 for workgroup listing.</p><br>
<p>        Server               Comment<br><br>
        ---------            -------</p><br>
<p>        Workgroup            Master<br><br>
        ---------            -------<br><br>
[root@adserver ~]#

以前は「Domain=[ADOSAKANA.LOCAL] OS=[Unix] Server=[Samba x.y.z]」という出力もあったのですが、Samba 4.7.5では無くなったようです。

netlogon共有にAdministrator権限でアクセスできるか確認。

[root@adserver ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'<br><br>
Enter Administrator's password:<br><br>
  .                                   D        0  Fri Mar  2 15:53:48 2018<br><br>
  ..                                  D        0  Fri Mar  2 15:58:16 2018</p><br>
<p>                14034944 blocks of size 1024. 11789628 blocks available<br><br>
[root@adserver ~]#

11.AD DNSの動作テスト
AD DNSが想定通りに動作しているかテストします。

まず、どんなzoneが登録されているのか確認

[root@adserver ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator<br><br>
Password for [ADOSAKANA\Administrator]:<br><br>
  2 zone(s) found</p><br>
<p>  pszZoneName                 : adosakana.local<br><br>
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE<br><br>
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY<br><br>
  Version                     : 50<br><br>
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED<br><br>
  pszDpFqdn                   : DomainDnsZones.adosakana.local</p><br>
<p>  pszZoneName                 : _msdcs.adosakana.local<br><br>
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE<br><br>
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY<br><br>
  Version                     : 50<br><br>
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED<br><br>
  pszDpFqdn                   : ForestDnsZones.adosakana.local<br><br>
[root@adserver ~]#

Active Directoryで使用するDNSのSRVレコードが登録されているかをhostコマンドを使って確認。

[root@adserver ~]# host -t SRV _ldap._tcp.adosakana.local 127.0.0.1<br><br>
Using domain server:<br><br>
Name: 127.0.0.1<br><br>
Address: 127.0.0.1#53<br><br>
Aliases:</p><br>
<p>_ldap._tcp.adosakana.local has SRV record 0 100 389 adserver.adosakana.local.<br><br>
[root@adserver ~]# host -t SRV _kerberos._udp.adosakana.local 127.0.0.1<br><br>
Using domain server:<br><br>
Name: 127.0.0.1<br><br>
Address: 127.0.0.1#53<br><br>
Aliases:</p><br>
<p>_kerberos._udp.adosakana.local has SRV record 0 100 88 adserver.adosakana.local.<br><br>
[root@adserver ~]#

ADサーバのホスト名が登録されているか確認

[root@adserver ~]# host -t A adserver.adosakana.local 127.0.0.1<br><br>
Using domain server:<br><br>
Name: 127.0.0.1<br><br>
Address: 127.0.0.1#53<br><br>
Aliases:</p><br>
<p>adserver.adosakana.local has address 172.17.44.40<br><br>
[root@adserver ~]#

12. DNSサーバの変更
ADサーバの/etc/resolv.confを、ADサーバ自身を使う様に書き換え

13. /etc/krb5.conf の変更
/usr/local/samba/private/krb5.conf に元となるものがあるので、それを使用する。

[root@adserver ~]# cat /etc/krb5.conf<br><br>
[logging]<br><br>
 default = FILE:/var/log/krb5libs.log<br><br>
 kdc = FILE:/var/log/krb5kdc.log<br><br>
 admin_server = FILE:/var/log/kadmind.log</p><br>
<p>[libdefaults]<br><br>
 default_realm = EXAMPLE.COM<br><br>
 dns_lookup_realm = false<br><br>
 dns_lookup_kdc = false<br><br>
 ticket_lifetime = 24h<br><br>
 renew_lifetime = 7d<br><br>
 forwardable = true</p><br>
<p>[realms]<br><br>
 EXAMPLE.COM = {<br><br>
  kdc = kerberos.example.com<br><br>
  admin_server = kerberos.example.com<br><br>
 }</p><br>
<p>[domain_realm]<br><br>
 .example.com = EXAMPLE.COM<br><br>
 example.com = EXAMPLE.COM<br><br>
[root@adserver ~]# cat /usr/local/samba/private/krb5.conf<br><br>
[libdefaults]<br><br>
        default_realm = ADOSAKANA.LOCAL<br><br>
        dns_lookup_realm = false<br><br>
        dns_lookup_kdc = true<br><br>
[root@adserver ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf<br><br>
cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? y<br><br>
[root@adserver ~]# cat /etc/krb5.conf<br><br>
[libdefaults]<br><br>
        default_realm = ADOSAKANA.LOCAL<br><br>
        dns_lookup_realm = false<br><br>
        dns_lookup_kdc = true<br><br>
[root@adserver ~]#

14. Kerberosの動作確認

kinitコマンドを実行して確認します。

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL<br><br>
Password for administrator@ADOSAKANA.LOCAL:<br><br>
Warning: Your password will expire in 41 days on 2018年04月13日 15時58分15秒<br><br>
[root@adserver ~]#

正常に設定されていれば、上記の様にAdministratorユーザのパスワード有効期限が表示されます。

ドメイン名指定の大文字/小文字を間違えると下記の様なエラーとなります。

[root@adserver ~]# kinit administrator@adosakana.local<br><br>
Password for administrator@adosakana.local:<br><br>
kinit: KDC reply did not match expectations while getting initial credentials<br><br>
[root@adserver ~]#

また、DNSサーバ指定が誤っている場合は下記の様なエラーです。

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL<br><br>
kinit: Cannot resolve servers for KDC in realm "ADOSAKANA.LOCAL" while getting initial credentials<br><br>
[root@adserver ~]#

「klist」コマンドを実行することでも確認出来ます。

[root@adserver ~]# klist<br><br>
Ticket cache: FILE:/tmp/krb5cc_0<br><br>
Default principal: administrator@ADOSAKANA.LOCAL</p><br>
<p>Valid starting       Expires              Service principal<br><br>
2018-03-02T16:06:21  2018-03-03T02:06:21  krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL<br><br>
        renew until 2018-03-03T16:06:18<br><br>
[root@adserver ~]#

15. フォレストとドメインの機能レベル確認
作成したActive Directoryのドメインの機能レベルとフォレストの機能レベルを確認します。

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain level show<br><br>
Domain and forest function level for domain 'DC=adosakana,DC=local'</p><br>
<p>Forest function level: (Windows) 2008 R2<br><br>
Domain function level: (Windows) 2008 R2<br><br>
Lowest function level of a DC: (Windows) 2008 R2<br><br>
[root@adserver ~]#

Samba 4.7.5では、Windows Sevrer 2008R2と設定されているようです。

16. firewalldの設定

CentOS7ではfirewalldによりポートが制限されています。
現状を「firewall-cmd –list-all」で確認。

# firewall-cmd --list-all<br><br>
public (active)<br><br>
  target: default<br><br>
  icmp-block-inversion: no<br><br>
  interfaces: ens160<br><br>
  sources:<br><br>
  services: ssh dhcpv6-client<br><br>
  ports:<br><br>
  protocols:<br><br>
  masquerade: no<br><br>
  forward-ports:<br><br>
  source-ports:<br><br>
  icmp-blocks:<br><br>
  rich rules:<br><br>
# 

開けるべきポートのテンプレートがあらかじめ用意されているので「firewall-cmd –get-services」を実行して確認します。

# firewall-cmd --get-services<br><br>
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server<br><br>
#

SambaをADとして使う場合のポートを「Samba AD DC Port Usage」で確認します。

CentOS7のfirewalldで定義されているものと待避させてみると・・・

サービス ポート プロトコル firewalld定義
DNS 53 tcp/udp dns
Kerberos 88 tcp/udp kerberos,freeipa-ldap,freeipa-ldaps
End Point Mapper (DCE/RPC Locator Service) 135 tcp freeipa-trust
NetBIOS Name Service 137 udp samba,samba-client
NetBIOS Datagram 138 udp samba,samba-client,freeipa-trust
NetBIOS Session 139 tcp samba,freeipa-trust
LDAP 389 tcp/udp freeipa-trust(ldap,freeipa-ldapはtcpのみ)
SMB over TCP 445 tcp samba,freeipa-trust(freeipa-trustはudpも含む)
Kerberos kpasswd 464 tcp/udp kpasswd,freeipa-ldap,freeipa-ldaps
LDAPS 636 tcp ldaps,freeipa-ldaps
Dynamic RPC Ports(4.7以前) 1024-1300 tcp freeipa-trust
Dynamic RPC Ports(samba 4.7以降) 49152-65535 tcp ?
Global Catalog 3268 tcp freeipa-trust
Global Catalog SSL 3269 tcp なし

・firewalldの定義「samba」「dns」「freeipa-ldaps」「freeipa-trust」を使用
・「Dynamic RPC Ports(samba 4.7以降):49152-65535」を追加するか、smb.confで「rpc server port」を定義するか。
・「Global Catalog SSL:3269」を追加

# firewall-cmd --permanent --zone=public --add-service=samba<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-service=dns<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-service=freeipa-ldaps<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-service=freeipa-trust<br><br>
success<br><br>
# firewall-cmd --reload<br><br>
success<br><br>
# firewall-cmd --list-all<br><br>
public (active)<br><br>
  target: default<br><br>
  icmp-block-inversion: no<br><br>
  interfaces: ens160<br><br>
  sources:<br><br>
  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust<br><br>
  ports:<br><br>
  protocols:<br><br>
  masquerade: no<br><br>
  forward-ports:<br><br>
  source-ports:<br><br>
  icmp-blocks:<br><br>
  rich rules:</p><br>
<p>#

# firewall-cmd --permanent --zone=public --add-port=49152-65535/tcp<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-port=3269/tcp<br><br>
success<br><br>
# firewall-cmd --reload<br><br>
success<br><br>
# firewall-cmd --list-all<br><br>
public (active)<br><br>
  target: default<br><br>
  icmp-block-inversion: no<br><br>
  interfaces: ens160<br><br>
  sources:<br><br>
  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust<br><br>
  ports: 49152-65535/tcp 3269/tcp<br><br>
  protocols:<br><br>
  masquerade: no<br><br>
  forward-ports:<br><br>
  source-ports:<br><br>
  icmp-blocks:<br><br>
  rich rules:<br><br>
#

17. systemdへの登録
systemdへの登録については「Managing the Samba AD DC Service Using Systemd」を参照のこと
CentOS6の場合は「Managing the Samba AD DC Service Using an Init Script

以上で設定は終了です。