<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Aptos;
panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#467886;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:11.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi folks,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></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:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">"hooks-libraries": [<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_run_script.so",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "parameters": {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "name": "/etc/kea/update-v6.sh",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "sync": false<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ],<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">And my update-v6.sh script looks like:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">#!/bin/bash<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">unknown_handle() {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "Unhandled function call ${*}"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 123<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">lease6_renew () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_renew" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">lease6_rebind () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_rebind" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">lease6_expire () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_expire" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">lease6_recover () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_recover" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">leases6_committed () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_committed" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">lease6_release () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_release" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">lease6_decline () {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo "lease6_decline" >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> echo $(env) >> /tmp/ithappened.txt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> curl <a href="http://23.x.x.x:8383">
http://23.x.x.x:8383</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> exit 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">case "$1" in<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "lease6_renew")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> lease6_renew<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "lease6_rebind")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> lease6_rebind<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "lease6_expire")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> lease6_expire<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "lease6_recover")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> lease6_recover<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "leases6_committed")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> leases6_committed<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "lease6_release")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> lease6_release<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> "lease6_decline")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> lease6_decline<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> *)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> unknown_handle "${@}"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> ;;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">esac<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></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).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I can see that the library is loaded:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></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<o:p></o:p></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<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">…but even when I receive messages like this in the journal:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></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<o:p></o:p></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<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></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:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">root@b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c:/etc/kea# ls -la<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">total 20<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">drwxr-xr-x 2 root root 4096 Oct 25 22:14 .<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">drwxr-xr-x 76 root root 4096 Oct 10 20:38 ..<o:p></o:p></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<o:p></o:p></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<o:p></o:p></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<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">root@b1f18944-0de2-4ac0-8a3d-81c5d81c4a0c:/etc/kea# ps aux | grep kea-dhcp6<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">_kea 126798 0.0 0.5 67316 20948 ? Ssl 22:08 0:00 /usr/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">root 126803 0.0 0.4 154112 19760 pts/1 S+ 22:08 0:00 journalctl -xeu kea-dhcp6-server -f<o:p></o:p></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<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m at a loss. What am I missing?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-Justin<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>