時間をかけて関心をお寄せいただきありがとうございます。簡単に言うと、私のADドメイン(Server 2012システムでホストされている)に対するKerberos認証をテストするためにkinitを呼び出すと、このエラーが発生します。
エラー:kinit:初期資格情報の取得中に「MYDOMAIN.LOCAL」領域のKDCに接続できません。
今明示的に設定すると韓国KDCホスト名の代わりにIPアドレスに変更します/etc/krb5.conf
(例:kdc = 172.16.0.10は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
- AD FQDNは
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つのSRVレコードしかない(少なくとも私が知っている限り)、なぜ2つのSRVレコードを表示するのかわかりません。
gententホストの出力...
user@ps:~$ getent hosts ad0.mydonaim.local
user@ps:~$ getent hosts 172.16.0.10
172.16.0.10 ad0.mydomain.local
したがって、ホストファイルにドメインコントローラのエントリが含まれていない場合は、リバースルックアップが機能します。順方向検索ではそうではありません。エントリがホストにある場合は両方とも機能します。
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
スタンザの不完全なDNS実装に関連している可能性がありますか/etc/krb5.conf
?それとも、私が認識していない一種のDNS catch-22に閉じ込められていますか?しかし、なぜKerberosだけがあるのですか?追加の質問でローカルホスト名を見つける必要があるのはなぜですか/etc/hosts anyway
?バックエンドでどのように機能するかを説明するLinuxネットワークの詳細な記事を教えてくれる人はいますか?
助けてくれてありがとう。本当に迷惑です。
答え1
kinit / kerberosが正しく機能するには、ホスト名のルックアップとゾーンforward
に対してreverse
機能する必要があります。nsswitch.conf
ネームサービス情報を取得するLinuxホストのソースを決定します。このファイルの各行はデータベースソースを制御します。たとえば、hosts
この行は、ホスト名解決のために検索するソースを決定します。
デフォルト設定はhosts
hosts: files mdns4_minimal [NOTFOUND=return] dns
files
DNSはまったく検索されません。ホストレコードが(/ etc / hosts)に見つからない場合は返されますmdns4_minimal
(このソースはavahi-daemonに関連しているようです)multicast DNS
しかし、Kerberosホストを確認できないようです)
[NOTFOUND=return]
接続が許可されているホスト確認プロセスを削除しますdns servers
(上記の要求に従って機能しているようです/etc/resolv.conf
)。dig