2016年2月27日土曜日

Samba4 AD 初回インストール作業要領 (仮)

初回インストールの経過ながら、毎度のコトながら初心者の試行錯誤-->結果:失敗であるので要領(仮)で。いや、試行錯誤というよりは右往左往か。

こんなblogの引き合いに出して申し訳なくも、基本手順は、俺的備忘録さんの2015年3月16日のエントリから。
http://orebibou.com/

----

CentOS 6.7において

Minimalインストール
インストールの指定項目中でホスト名.ドメインを指定

EthernetインターフェースにIPv4設定
ゲートウェイおよびDNSサーバアドレス指定

ntpインストール
/etc/ntp.confファイル中に外部NTPサーバの設定

ここで

/etc/hostname
が存在しないのでホスト名を記述

Samba4 の前提として必要な環境のインストール
yum install wget perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel

Samba導入の一時フォルダ作成
mkdir /tmp/samba

Samba本体のダウロードはこちらから
https://download.samba.org/pub/samba/

 俺的さんはlatestだがここでは4.2.8
 wget http://www.samba.org/samba/ftp/samba-4.2.8.tar.gz -P /tmp

解凍からmakeまで
tar zxvf /tmp/samba-4.2.8.tar.gz -C /tmp/samba/
cd /tmp/samba/samba-*
./configure
make
make install


そして、エラーが。どうやら事前の yum install 中で記述漏れがあったようだ。

Checking for header ldap.h                                                                      : no
Checking for header lber.h                                                                      : no
Checking for header ldap_pvt.h                                                                  : no
Checking for ber_tag_t                                                                          : not found
Checking for library lber                                                                       : not found
Checking for ber_scanf                                                                          : not found
Checking for ber_sockbuf_add_io                                                                 : not found
Checking for variable LDAP_OPT_SOCKBUF                                                          : not found
Checking for variable LBER_OPT_LOG_PRINT_FN                                                     : not found
Checking for library ldap                                                                       : not found
Checking for ldap_init                                                                          : not found
Checking for ldap_init_fd                                                                       : not found
Checking for ldap_initialize                                                                    : not found
Checking for ldap_set_rebind_proc                                                               : not found
Checking for library ldap                                                                       : not found
Checking for ldap_add_result_entry                                                              : not found
Checking whether ldap_set_rebind_proc takes 3 arguments                                         : ok
/tmp/samba/samba-4.2.8/source3/wscript:685: error: LDAP support not found. Try installing libldap2-dev or openldap-devel. Otherwise, use --without-ldap to build without LDAP support. LDAP support is required for the LDAP passdb backend, LDAP idmap backends and ADS. ADS support improves communication with Active Directory domain controllers.
[root@DC01 samba-4.2.8]#

OpenLDAP-devel をインストールし直して、作業続行。そして、DNSの確認にまで至ったところでこのエラー。

[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
ailed to connect host 127.0.0.1 on port 135 - NT_STATUS_CONNECTION_REFUSED
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135 - NT_STATUS_CONNECTION_REFUSED.
ERROR(runtime): uncaught exception - (-1073741258, 'The connection was refused')
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 809, in run
    dns_conn = dns_connect(server, self.lp, self.creds)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 40, in dns_connect
    dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
[root@DC01 ~]#


まず、

Failed to connect host 127.0.0.1 on port 135
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135

この点。SELinux と iptables を「切り分けのため一時的に」はずす。

[root@DC01 ~]# getenforce
Enforcing

[root@DC01 ~]#
[root@DC01 ~]# setenforce 0
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@DC01 ~]#

結果は次のとおり。SELinux、iptables、いずれも直接の関係は無いようだ。

[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Failed to connect host 127.0.0.1 on port 135 - NT_STATUS_CONNECTION_REFUSED
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135 - NT_STATUS_CONNECTION_REFUSED.
ERROR(runtime): uncaught exception - (-1073741258, 'The connection was refused')
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 809, in run
    dns_conn = dns_connect(server, self.lp, self.creds)
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 40, in dns_connect
    dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
root@DC01 ~]#

uncaught exception、「把握できない例外」ぐらいの意味だろうか。そして __init__.py の175行目付近。

try:
            return self.run(*args, **kwargs)

周辺の記述は self.raw なのだが。あるいは変更してみる??? いやそんなまさか。

それから dns.py については、809行目の記述についてはほかにまったく同一の部分が多々ある。もとより、lpもcredsも意味がわからない。

credsは credsntials のようなのだが、そもそもcredentialをわかっちゃいない。
http://ejje.weblio.jp/content/credential

また、調べる中でたまたま見かけたこちら

Windows DNS と Active Directory
http://www.soi.wide.ad.jp/class/20050011/slides/28/index_13.html

このレベルがひとつの経由地なのだが、現状では霞んで見えもしない遥か彼方の経由地であることは言うまでもない。


話は戻って、self.run の部分を self.raw に書き換えてもNGだった。アタリマエだが。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
ERROR(<type 'exceptions.AttributeError'>): uncaught exception - 'cmd_zonelist' object has no attribute 'raw'
  File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.raw(*args, **kwargs)

[root@DC01 ~]# vi /usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py
[root@DC01 ~]#

こんな試みが根拠イミフで支離滅裂>ジブンだ。


そして、一度リブートをはさんだら、

[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [SAMBA4-AD\Administrator]:
  2 zone(s) found

  pszZoneName                 : samba4-ad.local
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : DomainDnsZones.samba4-ad.local

  pszZoneName                 : _msdcs.samba4-ad.local
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : ForestDnsZones.samba4-ad.local

[root@DC01 ~]#

正常化。これはいったい??? あるいは

sed -i "/^DNS1/cDNS1=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*

の後の、ネットワークの再起動が不十分だったということか。そして、

[root@DC01 ~]# host -t SRV _ldap._tcp.Samba4-AD.LOCAL 127.0.0.1
-bash: host: command not found
[root@DC01 ~]#


hostコマンドが無いってなんやねん、、、


というわけで。ド素人が無いアタマをひねってどうにかなる程度でないので、最初からやり直し。。



0 件のコメント:

コメントを投稿