a DNS (or DNS-like) service updated with the mapping {client-name => current ip address}
Entregar isso no (s) servidor (es) OpenVPN é relativamente fácil com um script --client-connect
nos servidores OpenVPN. O script de conexão do cliente recebe o endereço IP da nova conexão. Você pode usar isso para chamar o nsupdate para ajustar seus registros de DNS.
Aqui está um script antigo que registrei o endereço externo do cliente de conexão. Qual não é o que você quer, mas eu tenho certeza que você pode encontrar as variáveis certas se você revisar a seção Environmental Variables
da página man.
#!/bin/sh
# expects variables like from openvpn
#common_name=server1.example.org
#trusted_ip=192.168.47.1
dnssrv="192.168.0.1"
zone="vpn.example.org"
ttl="7200"
record='echo ${common_name} | sed -e 's/example.org/vpn.example.org/''
echo "client-connect.sh ${common_name} ${trusted_ip} ${record}" | logger
(
echo "server ${dnssrv}"
echo "zone ${zone}"
echo "update delete ${record} A"
echo "update add ${record} ${ttl} A ${trusted_ip}"
echo "send"
) | /usr/bin/nsupdate