お手数をおかけしますが、よろしくお願いいたします。非常に単純に、ADドメイン(Server 2012ボックスでホストされている)に対してkerberos認証をテストするためにkinitを呼び出すと、このエラーが発生します。
エラー:kinit:初期資格情報の取得中にレルム 'MYDOMAIN.LOCAL'のKDCに接続できません
これで、[〜#〜] kdc [〜#〜]を/etc/krb5.conf
のホスト名ではなくIPアドレスに明示的に設定するとすべてが修正されます(例:kdc = 172.16)。 0.10 vs kdc = ad0.mydomain.localおよびadmin_serverと同じ)。これは、[〜#〜] kdc [〜#〜]が/etc/krb5.conf
のホスト名として設定されている場合にも機能します。 [〜#〜] kdc [〜#〜]にも/etc/hosts
に明示的なエントリがあります。私の本当の質問は、なぜこれが必要なのかということです。 DNSの要点は、これらのローカルホストファイルを使用する必要がないことであり、構成をそのように設定する必要はありません。なぜこれがこのように機能するのか誰かが知っていますか?すべての通常のネットワークツールとHost -t SRV ...
クエリは、これらの追加手順なしですべて正しく機能しているようです(詳細は以下を参照)(/etc/krb5.conf
はホスト名をリストし、/etc/hosts
にエントリはありません)。
では、なぜkinit
が私のresolv.confファイルを無視しているように見えるのか誰かに教えてもらえますか?
トークン
172.16.0.20
ですps
ですps.mydomain.local
です172.16.0.10
ですad0
ですad0.mydomain.local
ですmydomain.local
です(.localが悪いことはわかっていますが、作業中です)/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.0.20
netmask 255.255.255.0
gateway 172.16.0.1
network 172.16.0.0
broadcast 172.16.0.255
dns-nameservers 172.16.0.10 8.8.8.8
dns-search MYDOMAIN.LOCAL
/etc/hosts
127.0.0.1 localhost
172.16.0.20 ps.mydomain.local ps
# IPv6 stuff, don't think it's relevant to the problem
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/resolv.conf
-自動生成
nameserver 172.16.0.10
nameserver 8.8.8.8
search MYDOMAIN.LOCAL
/etc/krb5.conf
[libdefaults]
default_realm = MYDOMAIN.LOCAL
dns_lookup_kdc = true
dns_lookup_realm = true
# tried dns_lookup_realm as both true and false, no change
[realms]
MYDOMAIN.LOCAL = {
kdc = ad0.mydomain.local
admin_server = ad0.mydomain.local
default_domain = mydomain.local
}
[domain_realm]
.opticonwa.local = OPTICONWA.LOCAL
opticonwa.local = OPTICONWA.LOCAL
Kinitが機能すると、すべてが機能するため、smb.confは含まれません。
テスト
user@ps:~$ KRB5_TRACE=/dev/stdout kinit administrator
[1634] 1447281918.814976: Getting initial credentials for [email protected]
[1634] 1447281918.815297: Sending request (181 bytes) to MYDOMAIN.LOCAL
[1634] 1447281918.815346: Resolving hostname ad0.mydomain.local
[1634] 1447281923.817731: Resolving hostname ad0.mydomain.local
kinit: Cannot contact any KDC for realm 'MYDOMAIN.LOCAL' while getting initial credentials
user@ps:~$ Host -t SRV _kerberos._udp.mydomain.local
_kerberos._udp.mydomain.local has SRV record 0 0 88 ad0.mydomain.local.
_kerberos._udp.mydomain.local has SRV record 0 100 88 ad0.mydomain.local.
user@ps:~$ Host -t SRV _kerberos._tcp.mydomain.local
_kerberos._tcp.mydomain.local has SRV record 0 0 88 ad0.mydomain.local.
_kerberos._tcp.mydomain.local has SRV record 0 100 88 ad0.mydomain.local.
user@ps:~$ Dig -x 172.16.0.10
; <<>> Dig 9.9.5-3ubuntu0.5-Ubuntu <<>> -x 172.16.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19749
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;10.0.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
10.0.16.172.in-addr.arpa. 1200 IN PTR ad0.mydomain.local.
;; Query time: 2 msec
;; SERVER: 172.16.0.10#53(172.16.0.10)
;; WHEN: Thu Nov 12 11:19:27 PST 2015
;; MSG SIZE rcvd: 92
サーバーには1つしかないので(少なくとも私が知っていることですが)、なぜ2つのSRVレコードを表示しているのかわかりません。
ジェントホストの出力.。
user@ps:~$ getent hosts ad0.mydonaim.local
user@ps:~$ getent hosts 172.16.0.10
172.16.0.10 ad0.mydomain.local
したがって、hostsファイルにドメインコントローラーのエントリが含まれていない場合、逆引き参照が機能します。前方参照はしません。エントリがホストにある場合、両方とも機能します...
基本インストールから変更されていないnsswitch.confの出力...
passwd: files winbind
group: files winbind
#passwd: compat
#group: compat
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
では、kinitが/etc/resolv.conf
を無視しているように見える理由を誰かに教えてもらえますか? admin_server
の/etc/krb5.conf
スタンザの不完全なDNS実装と関係がありますか?それとも、気づかなかったある種のDNSキャッチ22で立ち往生していますか?しかし、なぜKerberosだけなのですか?アドオンの質問として、ローカルホスト名を/etc/hosts anyway
に含める必要があるのはなぜですか?これがバックエンドでどのように機能するかを説明するLinuxネットワークに関する徹底的な記事を誰かに教えてもらえますか?
よろしくお願いします。これは本当に私を悩ませています。
Kinit/kerberosが正しく機能するには、ホスト名のルックアップがforward
ゾーンとreverse
ゾーンの両方で機能する必要があります。 Linuxホストでは、nsswitch.conf
がネームサービス情報を取得するためのソースを決定します。そのファイルの各行はデータベースソースを制御します。たとえば、hosts
行は、ホスト名解決のために検索されるソースを決定します。
デフォルト設定はhosts
です。
hosts: files mdns4_minimal [NOTFOUND=return] dns
DNSはまったく検索されず、ホストレコードがfiles
(/ etc/hosts)およびmdns4_minimal
(このソースはavahi-daemonに関連しているようです-)で見つからなかった場合に返されます。 multicast DNS
ただし、Kerberosホストを解決できないようです)
[NOTFOUND=return]
を削除すると、ホスト解決プロセスがdns servers
の/etc/resolv.conf
に接続できるようになりました(上記のDig
リクエストに従って機能しているようです)