web-dev-qa-db-ja.com

/ etc / hostsでのKerberosDNSの問題

お手数をおかけしますが、よろしくお願いいたします。非常に単純に、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ファイルを無視しているように見えるのか誰かに教えてもらえますか?

トークン

  • ローカルホストIPは172.16.0.20です
  • ローカルホスト名はpsです
  • ローカルFQDNはps.mydomain.localです
  • ADホストIPは172.16.0.10です
  • ADのホスト名はad0です
  • ADFQDNはad0.mydomain.localです
  • ADはプライマリDNSです
  • ドメインはmydomain.localです(.localが悪いことはわかっていますが、作業中です)
  • ネットワークは172.16.0.0/24です

/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ネットワークに関する徹底的な記事を誰かに教えてもらえますか?

よろしくお願いします。これは本当に私を悩ませています。

2
Arkaxandai

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リクエストに従って機能しているようです)

0
VenkatC