<html><body><div style="font-size: 12pt; font-family: arial, helvetica, sans-serif; direction: null; color: #000000;" data-attr="forced_root_block_attrs">
<div>Hi,</div>
<div style="font-size: 12pt; font-family: arial, helvetica, sans-serif; color: #000000;" data-attr="forced_root_block_attrs"> </div>
<div style="font-size: 12pt; font-family: arial, helvetica, sans-serif; color: #000000;" data-attr="forced_root_block_attrs">Can you move the script to some other location, e.g. home folder? could it be an apparmor config issue?</div>
<div style="font-size: 12pt; font-family: arial, helvetica, sans-serif; color: #000000;" data-attr="forced_root_block_attrs"> </div>
<div style="font-size: 12pt; font-family: arial, helvetica, sans-serif; color: #000000;" data-attr="forced_root_block_attrs">Regards,</div>
<div style="font-size: 12pt; font-family: arial, helvetica, sans-serif; color: #000000;" data-attr="forced_root_block_attrs">Razvan</div>
<div id="signature-content-no-signature" data-marker="__SIG_PRE__"></div>
<div> </div>
<div>

<div id="OLK_SRC_BODY_SECTION">
<div id="OLK_SRC_BODY_SECTION">
<blockquote style="margin: 0 0 0 .8em; border-left: 1px #ccc solid; padding-left: 1em;"><hr id="MESSAGE_DATA_MARKER"><strong>From: </strong>Justin <kea-users@lists.isc.org><br><strong>To: </strong>Kea-users <Kea-users@lists.isc.org><br><strong>Cc: </strong>Justin <justin@emeraldbroadband.com><br><strong>Date: </strong>Saturday, 26 October 2024 1:23 AM EEST<br><strong>Subject: </strong>[Kea-users] kea-dhcp6-server not running hook scripts<br><br>
<div class="WordSection1">
<p class="MsoNormal">Hi folks,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I’m trying to get the libdhcp_run_script.so library to run a script on DHCPv6 address assignment and renewal, but I can’t seem to get any signs of life out of it. My configuration includes:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family: 'courier new';">"hooks-libraries": [</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">            "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_run_script.so",</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">            "parameters": {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">                "name": "/etc/kea/update-v6.sh",</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">                "sync": false</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">            }</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        }</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    ],</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">And my update-v6.sh script looks like:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family: 'courier new';">#!/bin/bash</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">unknown_handle() {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "Unhandled function call ${*}"</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 123</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">lease6_renew () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_renew" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">lease6_rebind () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_rebind" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">lease6_expire () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_expire" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">lease6_recover () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_recover" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">leases6_committed () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_committed" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">lease6_release () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_release" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">lease6_decline () {</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo "lease6_decline" >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    echo $(env) >> /tmp/ithappened.txt</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    curl <a href="http://23.x.x.x:8383" target="_blank" rel="noopener noreferrer"> http://23.x.x.x:8383</a></span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    exit 0</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">}</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';"> </span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">case "$1" in</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "lease6_renew")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        lease6_renew</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "lease6_rebind")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        lease6_rebind</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "lease6_expire")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        lease6_expire</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "lease6_recover")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        lease6_recover</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "leases6_committed")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        leases6_committed</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "lease6_release")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        lease6_release</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    "lease6_decline")</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        lease6_decline</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">    *)</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        unknown_handle "${@}"</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">        ;;</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">esac</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">As you can see, I’m just trying to get some kind of response out of it so that I can iterate on it – either as output to a file or even just a curl command showing that my server was touched (I was thinking maybe there’s some kind of extra file permissions layer that I’m overlooking so I added the curl command to see if I could get any kind of response out of it at all).</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I can see that the library is loaded:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family: 'courier new';">Oct 25 22:08:13 b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c kea-dhcp6[126798]: INFO  RUN_SCRIPT_LOAD Run Script hooks library has been loaded</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">Oct 25 22:08:13 b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c kea-dhcp6[126798]: INFO  HOOKS_LIBRARY_LOADED hooks library /usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_run_script.so successfully loaded</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">…but even when I receive messages like this in the journal:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family: 'courier new';">Oct 25 22:04:11 b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c kea-dhcp6[126689]: INFO  DHCP6_LEASE_RENEW duid=[00:04:00:00:00:00:00:00:00:00:00:00:ac:1f:6b:49:66:18], tid=0x734250: lease for address 2604:2940:f1b0:9e7:0:1:1:0 and iaid=0 has been allocated</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">Oct 25 22:04:12 b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c kea-dhcp6[126689]: INFO  DHCP6_PD_LEASE_RENEW duid=[00:04:00:00:00:00:00:00:00:00:00:00:ac:1f:6b:49:66:18], tid=0x75f834: lease for prefix 2604:2940:1::/56 and iaid=0 has been allocated</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">…I see no activity related to the script execution happening. I can run the script manually and it works fine. The permissions are explicitly set to the _kea user that is running the server:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family: 'courier new';">root@b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c:/etc/kea# ls -la</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">total 20</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">drwxr-xr-x  2 root root 4096 Oct 25 22:14 .</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">drwxr-xr-x 76 root root 4096 Oct 10 20:38 ..</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">-rw-r--r--  1 root root 1940 Oct 11 21:47 kea-dhcp4.conf</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">-rw-r--r--  1 root root 3022 Oct 25 21:51 kea-dhcp6.conf</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">-rwxr-xr-x  1 _kea root 1641 Oct 25 22:07 update-v6.sh</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">root@b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c:/etc/kea# ps aux | grep kea-dhcp6</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">_kea      126798  0.0  0.5  <a href="tel:67316 20948" target="_blank" rel="noopener noreferrer">67316 20948</a> ?        Ssl  22:08   0:00 /usr/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">root      126803  0.0  0.4 <a href="tel:154112 19760" target="_blank" rel="noopener noreferrer">154112 19760</a> pts/1    S+   22:08   0:00 journalctl -xeu kea-dhcp6-server -f</span></p>
<p class="MsoNormal"><span style="font-family: 'courier new';">root      126819  0.0  0.0   6652  2236 pts/0    S+   22:19   0:00 grep kea-dhcp6</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I’m at a loss. What am I missing?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">-Justin</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
</div>
</blockquote>
</div>
</div></div>
</div></body></html>