IPA dinamik DNS yalnızca AAAA kaydını güncelleştirir. A kayıtlarım nerede?


11

FreeIPA alan adı kuruyorum. Laboratuvarımda üç sanal makine var: etki alanı denetleyicisi ipadc1ve iki istemci puppetve wordpress(yaratıcı, evet, biliyorum). Her üç VM de yeni kurulmuş CentOS 6.4 (FreeIPA 3.0.0) çalıştırıyor.

IPA sunucusunu kurdum, example.usburada arayacağımız bir etki alanı oluşturduk , DNS hizmeti ve otomatik DNS güncellemeleri etkin.

İki VM'yi etki alanına başarıyla kattım. Ancak dinamik DNS güncellemeleri yalnızca AAAA kayıtlarını DNS'ye koyuyor. Hiçbir A kaydı eklenmez.

DNS RR'leri

Dyanmic güncelleştirmeleri ve BIND güncelleme ilkesi için DNS bölge ayarlarım da doğru görünüyor.

DNS bölge ayarları

Hem istemci VM'lerin aslında var IPv4 adresleri; puppetstatik bir IPv4 adresine sahiptir ve wordpressIPv4 adresini DHCP'den alır. Bu bir fark yaratmıyor gibi görünüyor.

# ip a s dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:3c:d5:f5 brd ff:ff:ff:ff:ff:ff
    inet 172.25.50.227/24 brd 172.25.50.255 scope global eth0
    inet6 2001:db8:16:bf:5054:ff:fe3c:d5f5/64 scope global dynamic 
       valid_lft 86180sec preferred_lft 14180sec
    inet6 fe80::5054:ff:fe3c:d5f5/64 scope link 
       valid_lft forever preferred_lft forever

Sorun aslında dinamik DNS güncellemelerini itmekten sorumlu olduğunu öğrendiğim sssd ile ilgili gibi görünüyor. Ben hata ayıklama krank debug_level = 9ve günlüklerde buldum. Sssd'nin A kaydı göndermeye çalışmakla bile uğraşmadığını gösteriyor, ancak bana nedenini göstermiyor.

(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ipa_dyndns_update_send] (0x4000): Performing update
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ok_for_dns] (0x0200): Multicast IPv4 address 172.25.50.227
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ok_for_dns] (0x0200): Link local IPv6 address fe80::5054:ff:fe3c:d5f5
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ipa_dyndns_gss_tsig_update_step] (0x1000): Checking if the update is needed
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_get_family_order] (0x1000): Lookup order: ipv6_first
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_is_address] (0x4000): [wordpress.example.us] does not look like an IP address
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_step] (0x2000): Querying DNS
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_dns_query] (0x0100): Trying to resolve AAAA record of 'wordpress.example.us' in DNS
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [schedule_request_timeout] (0x2000): Scheduling a timeout of 5 seconds
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [schedule_timeout_watcher] (0x2000): Scheduling DNS timeout watcher
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [unschedule_timeout_watcher] (0x4000): Unscheduling DNS timeout watcher
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [request_watch_destructor] (0x0400): Deleting request watch
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_step] (0x2000): Querying DNS
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_dns_query] (0x0100): Trying to resolve A record of 'wordpress.example.us' in DNS
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [schedule_request_timeout] (0x2000): Scheduling a timeout of 5 seconds
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [schedule_timeout_watcher] (0x2000): Scheduling DNS timeout watcher
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [unschedule_timeout_watcher] (0x4000): Unscheduling DNS timeout watcher
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [request_watch_destructor] (0x0400): Deleting request watch
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_next] (0x0200): No more address families to retry
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_next] (0x0100): No more hosts databases to retry
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_is_address] (0x4000): [wordpress.example.us] does not look like an IP address
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_step] (0x2000): Querying DNS
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_dns_query] (0x0100): Trying to resolve A record of 'wordpress.example.us' in DNS
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [schedule_request_timeout] (0x2000): Scheduling a timeout of 5 seconds
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [schedule_timeout_watcher] (0x2000): Scheduling DNS timeout watcher
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [unschedule_timeout_watcher] (0x4000): Unscheduling DNS timeout watcher
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [request_watch_destructor] (0x0400): Deleting request watch
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_next] (0x0200): No more address families to retry
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [resolv_gethostbyname_next] (0x0100): No more hosts databases to retry
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ipa_dyndns_gss_tsig_update_check] (0x1000): Address on localhost only: 2001:db8:16:bf:5054:ff:fe3c:d5f5
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ipa_dyndns_gss_tsig_update_check] (0x0400): Detected IP addresses change, will perform an update
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [create_nsupdate_message] (0x0200): Creating update message for realm [EXAMPLE.US] and zone [example.us].
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [create_nsupdate_message] (0x0400):  -- Begin nsupdate message --
realm EXAMPLE.US
zone example.us.
update delete wordpress.example.us. in A
send
update delete wordpress.example.us. in AAAA
send
update add wordpress.example.us. 86400 in AAAA 2001:db8:16:bf:5054:ff:fe3c:d5f5
send
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [create_nsupdate_message] (0x0400):  -- End nsupdate message --
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [child_handler_setup] (0x2000): Setting up signal handler up for pid [2144]
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [child_handler_setup] (0x2000): Signal handler set up for pid [2144]
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [write_pipe_handler] (0x0400): All data has been sent!
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ipa_dyndns_stdin_done] (0x4000): Sending nsupdate data complete
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [child_sig_handler] (0x1000): Waiting for child [2144].
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [child_sig_handler] (0x0100): child [2144] finished successfully.
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [sss_child_handler] (0x2000): waitpid failed [10]: No child processes
(Mon Jul 22 21:50:01 2013) [sssd[be[example.us]]] [ipa_dyndns_update_done] (0x0020): DNS update finished

Benim sssd.conf:

[domain/example.us]

cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = example.us
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = wordpress.example.us
chpass_provider = ipa
ipa_dyndns_update = True
ipa_server = _srv_, ipadc1.example.us
ldap_tls_cacert = /etc/ipa/ca.crt
[sssd]
services = nss, pam, ssh
config_file_version = 2

domains = example.us
[nss]

[pam]

[sudo]

[autofs]

[ssh]

[pac]

Sonuç ipa dnszone-show example.us --all:

  dn: idnsname=example.us,cn=dns,dc=example,dc=us
  Zone name: example.us
  Authoritative nameserver: ipadc1.example.us.
  Administrator e-mail address: hostmaster.example.us.
  SOA serial: 1374982142
  SOA refresh: 3600
  SOA retry: 900
  SOA expire: 1209600
  SOA minimum: 3600
  BIND update policy: grant EXAMPLE.US krb5-self * A; grant EXAMPLE.US krb5-self
                      * AAAA; grant EXAMPLE.US krb5-self * SSHFP;
  Active zone: TRUE
  Dynamic update: TRUE
  Allow query: any;
  Allow transfer: none;
  mxrecord: 0 mail.example.us
  nsrecord: ipadc1.example.us.
  objectclass: top, idnsrecord, idnszone
  txtrecord: v=spf1 a mx -all

Bu o zamandan beri, gerçekten benim için küçük bir sorun olmakla birlikte olabilir IPv4 DNS güncellemeleri ( 's güzel% 100 ikili yığın olarak) burada neler olduğunu bilmiyor hala sinir bozucu olmadan yayınlanmaz. Belki de kaçırdığım, duruma ışık tutacak günlükler var?

(Oh, ve evet kapatıp tekrar açtım.)


vay, her şey benim gibi görünüyor. Muhtemelen bazı hatalar, daha düşük bir versiyonum var, Jacob'a #freeipa @freenode üzerinde sormanız gerekiyor. Ayrıca bu makineden, keytab'a sahip olmanız gereken güncellemeyi elle göndermeyi deneyebilirsiniz. nsupdate >update add wordpress.example.us 86400 A 172.25.50.227?
Danila Ladner

@DanilaLadner Evet, manuel olarak çalıştırırsam nsupdatekayıtları güncelleyebilirim. Sorun , A kaydını güncellememeyi sssdsöylemiyor gibi görünüyor nsupdate.
Michael Hampton

Yanıtlar:


9

Ekledikten sonra

ipa_dyndns_iface = eth0

o pastebin i sssd ipinizi multicast olarak tanımak bakın:

"(Tue Jul 9 10:00:01 2013) [sssd[be[example.us]]] [ok_for_dns] (0x0200): Multicast IPv4 address 172.25.50.227"

Jacob'un looback adreslerini, çok noktaya yayın adreslerini vb. nerede test edeceğini yazdığı kodda dns'e rapor vermemenizi öneririz:

if (IN_MULTICAST(ntohl(addr->s_addr))) {
        DEBUG(SSSDBG_FUNC_DATA, ("Multicast IPv4 address %s\n", straddr));
        return false;
    } else if (inet_netof(*addr) == IN_LOOPBACKNET) {
        DEBUG(SSSDBG_FUNC_DATA, ("Loopback IPv4 address %s\n", straddr));
        return false;
    } else if ((addr->s_addr & 0xffff0000) == 0xa9fe0000) {
        /* 169.254.0.0/16 */
        DEBUG(SSSDBG_FUNC_DATA, ("Link-local IPv4 address %s\n", straddr));
        return false;
    } else if (addr->s_addr == htonl(INADDR_BROADCAST)) {
        DEBUG(SSSDBG_FUNC_DATA, ("Broadcast IPv4 address %s\n", straddr));
        return false;
    }
} else {
    DEBUG(SSSDBG_CRIT_FAILURE, ("Unknown address family\n"));
    return false;
}

return true;

Şimdi soru neden "çok noktaya yayın addr" olarak tanınan bir fikrim yok. IN_MULTICAST olarak in.hşunları görebilirsiniz:

   "IN_MULTICAST(a)" - tests whether a is a multicast address. and it is in "inet.h/in.h":
   #define  IN_CLASSD(i)        (((long)(i) & 0xf0000000) == 0xe0000000)
   #define  IN_MULTICAST(i)     IN_CLASSD(i)

Peki IP Adresi multicast olarak nasıl değerlendirilir, onu strace ve bakmak için çalışacağız. Ayrıca Jacob Hrozek'e sorabilirsiniz, o sssd kodunu yazdı. Genellikle her zaman freenode üzerinde #sssd adresinde kullanılabilir, bununla sonuçlandığınızı paylaşırsanız harika olurdu. Umarım biraz yardımcı olur.

DÜZENLE

Evet, 1.9.2 sürümünüzde bir hata var. Var:

  if (IN_MULTICAST(addr->s_addr))) {

Olmalı:

  if (IN_MULTICAST(ntohl(addr->s_addr))) {

Bir bataklık standart RFC 1918 adresidir ve kesinlikle IPv4 çok noktaya yayın değildir. Sanırım bunun bir tür hata olduğu konusunda haklısın. Bu hangi kaynak dosyadaydı?
Michael Hampton

evet, çok garip.
Danila Ladner


sssd rpm'nizin hangi sürümü?
Danila Ladner

1
Keşke bunu bir kereden fazla kaldırabilirdim. Ne kapsamlı ve kesin bir cevap; alkış!
MadHatter

1

Gönderen sssd-ipa(5)man:

   ipa_dyndns_iface (string)
       Optional. Applicable only when ipa_dyndns_update is true. Choose the interface whose IP address should be used for dynamic DNS updates.

       Default: Use the IP address of the IPA LDAP connection

Sen ayarlamalısınız ipa_dyndns_ifaceiçinde /etc/sssd/sssd.confvarsayılan olarak sadece IPA sunucusunun doğru soket adresini kullanmaktır olarak, IPA sunucusunun arabirimini maç için:

ipa_dyndns_iface = eth0

Bu, hem IPv4 hem de IPv6 için dinamik güncelleştirmeleri etkinleştirmelidir.


Güzel deneyin, ama yardım etmedi. Bunu eklemenin sonuçları burada pastebin'de .
Michael Hampton

0

Ayrıca, lookup_family_order öğesini test durumu olarak ipv6_first gibi varsayılan olmayan bir değere ayarlamayı deneyin ve ipv4'ü denediğinde bize bildirin.


Bunun da bir etkisi yoktu .
Michael Hampton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.