<div dir="ltr"><div class="gmail_quote gmail_quote_container"><div class="msg-9142895881639296906"><div lang="CS" link="#467886" vlink="#96607D" style="word-wrap:break-word"><div class="m_-9142895881639296906WordSection1"><p class="MsoNormal">Dear all,<u></u><u></u></p><p class="MsoNormal"><br></p>
<p class="MsoNormal">I’m trying to use Kea DHCP‑DDNS (D2) with the GSS‑TSIG hook (libddns_gss_tsig.so) to perform secure DDNS updates against Microsoft DNS (Active Directory). The GSS‑TKEY exchange fails immediately at GSS context initialization.<u></u><u></u></p>
<p class="MsoNormal">I’m attaching ~30 lines of log around the first failure plus the relevant D2 configuration excerpt and the Kerberos/systemd settings used to run D2.<u></u><u></u></p>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>Environment<u></u><u></u></b></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoNormal">OS: RHEL 9.x<u></u><u></u></li><li class="MsoNormal">Kea DHCP‑DDNS (D2): 3.0.3<u></u><u></u></li><li class="MsoNormal">GSS‑TSIG hook: /usr/lib64/kea/hooks/libddns_gss_tsig.so<u></u><u></u></li><li class="MsoNormal">DNS server: Microsoft DNS / AD, dc1.example.local (10.0.0.10)<u></u><u></u></li><li class="MsoNormal">Kerberos realm: EXAMPLE.REALM<u></u><u></u></li><li class="MsoNormal">DHCP/DDNS host: dhcp1.example.local<u></u><u></u></li></ul>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>Kerberos credentials (keytab + ccache)<u></u><u></u></b></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoNormal">Keytab: /etc/kea/client.keytab
<u></u><u></u>
<ul style="margin-top:0cm" type="circle">
<li class="MsoNormal">Principal: host/dhcp1.example.local@EXAMPLE.REALM (kvno 15)<u></u><u></u></li></ul>
</li><li class="MsoNormal">We create a FILE ccache for the service user using:
<u></u><u></u>
<ul style="margin-top:0cm" type="circle">
<li class="MsoNormal">sudo -u kea KRB5_CONFIG=/etc/kea/krb5_kea.conf   kinit -k -t /etc/kea/ client.keytab -c FILE:/var/lib/kea/krb5/client.ccache  
<a href="mailto:host/dhcp1.example.local@EXAMPLE.REALM" target="_blank">host/dhcp1.example.local@EXAMPLE.REALM</a><u></u><u></u></li></ul>
</li><li class="MsoNormal">Kerberos config used by the service:
<u></u><u></u>
<ul style="margin-top:0cm" type="circle">
<li class="MsoNormal">/etc/kea/krb5_kea.conf (includes default_ccache_name = FILE:/var/lib/kea/krb5/client.ccache)<u></u><u></u></li></ul>
</li></ul>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>D2 / GSS‑TSIG configuration (relevant points)<u></u><u></u></b></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoNormal">server-principal: DNS/dc1.example.local@EXAMPLE.REALM<u></u><u></u></li><li class="MsoNormal">DNS server definition: <u></u>
<u></u>
<ul style="margin-top:0cm" type="circle">
<li class="MsoNormal">servers: { id: "ad_dns", ip-address: "10.0.0.10", port: 53 }<u></u><u></u></li></ul>
</li><li class="MsoNormal">tkey-lifetime: 3600, rekey-interval: 2700 (See attached kea-dhcp-ddns.conf.excerpt.json.)<u></u><u></u></li></ul>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>Error (from kea-dhcp-ddns log)<u></u><u></u></b></p>
<p class="MsoNormal">During startup, the hook creates a new GSS‑TSIG key and then fails to initialize the GSS‑TKEY exchange:<u></u><u></u></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoNormal">TKEY_EXCHANGE_FAIL_TO_INIT<br>
gss_init_sec_context failed<br>
Major: No credentials were supplied, or the credentials were unavailable or inaccessible (458752)<br>
Minor: SPNEGO cannot find mechanisms to negotiate (100001)<u></u><u></u></li></ul>
<p class="MsoNormal">The exact log context is attached (kea-dhcp-ddns.log.excerpt.txt).<u></u><u></u></p>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>How D2 is started (systemd)<u></u><u></u></b></p>
<p class="MsoNormal">The service runs as user kea and we set the following environment:<u></u><u></u></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoNormal">KRB5_CONFIG=/etc/kea/krb5_kea.conf<u></u><u></u></li><li class="MsoNormal">KRB5CCNAME=FILE:/var/lib/kea/krb5/client.ccache<u></u><u></u></li><li class="MsoNormal">GSS_USE_PROXY=no (Full relevant excerpt attached in systemd-override-and-krb5.conf.excerpt.txt.)<u></u><u></u></li></ul>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>What we verified<u></u><u></u></b></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoNormal">kinit/klist/kvno works for the keytab principal and FILE ccache when run as the service user.<u></u><u></u></li><li class="MsoNormal">The failure appears specific to the GSS‑TSIG hook’s acquisition of initiator credentials / context initialization inside D2.<u></u><u></u></li></ul>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>Questions<u></u><u></u></b></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoNormal">What is the recommended, supported way in Kea 3.0.x GSS‑TSIG hook to supply initiator credentials for AD DNS updates (keytab-only vs FILE ccache vs cache collection/KCM)?<u></u><u></u></li><li class="MsoNormal">When a FILE ccache exists and KRB5CCNAME/default_ccache_name are set to FILE, should the hook rely on that, or does it still attempt to use other cache mechanisms?<u></u><u></u></li><li class="MsoNormal">Is there a canonical minimal hook configuration for Microsoft AD DNS in Kea 3.0.x (required parameters for client identity vs server-principal)?<u></u><u></u></li></ol>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thank you in advance for any guidance.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best regards,<br>
Jaroslav Cihak<u></u><u></u></p>
<p class="MsoNormal"><b><u></u> <u></u></b></p>
<p class="MsoNormal"><b>Attachments:</b><u></u><u></u></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoNormal">kea-dhcp-ddns.conf.excerpt.json<u></u><u></u></li><li class="MsoNormal">kea-dhcp-ddns.log.excerpt.txt (~30 lines)<u></u><u></u></li><li class="MsoNormal">systemd-override-and-krb5.conf.excerpt.txt<u></u><u></u></li></ol>
<p class="MsoNormal"><u></u> </p>
</div>
<br></div>

</div></div></div>