Eu quero usar o OpenVPN com uma interface de túnel persistente. Eu posso criar essa interface com o próprio OpenVPN e atribuí-lo ao usuário / grupo do OpenVPN
$ openvpn --mktun --dev tunOV20 --user openvpn --group openvpn
Neste momento, o tunOV20 não possui endereço IP atribuído. Eu começo o openvpn como root, alimento com o nome do dispositivo TUN preexistente e ele se conecta com o peer e o tunOV20 obtém um endereço IP. Assistindo o log do OpenVPN, ele faz isso executando
$ /sbin/ip addr add dev tunOV20 10.8.0.2/24 broadcast 10.8.0.255
Na configuração do OpenVPN especifiquei que o OpenVPN deveria rodar como usuário / grupo "openvpn". Quando eu paro o OpenVPN agora, ele tenta excluir o endereço do túnel:
$ /sbin/ip addr del dev tunOV20 10.8.0.2/24
RTNETLINK answers: Operation not permitted
Quando eu tento iniciá-lo novamente como root, ele não inicia porque
$ /sbin/ip addr add dev tunOV20 10.8.0.2/24 broadcast 10.8.0.255
RTNETLINK answers: File exists
Após algumas experiências, vejo que o OpenVPN pode manipular a atribuição e a exclusão de IP apenas quando executado como usuário root, mesmo que o usuário openvpn possua a propriedade da interface TUN.
Se eu quiser iniciar o OpenVPN novamente, primeiro tenho que excluir o endereço IP na interface tun com
$ ifconfig tunOV20 0.0.0.0
como root.
Existe uma maneira que o usuário do OpenVPN possa adicionar / apagar IP em sua interface?