Você precisa usar aspas duplas para o comando sed :
$ sed -i.bak "s/^opennic=\".*\"/opennic=\"${u}\"/g" /absolute/path/to/script.sh
Sem aspas, o sed será executado com vários argumentos. Dividindo a variável $u em vários argumentos por seus espaços.
Algo como o seguinte (cada linha é um argumento diferente):
$ sed \
's/^opennic=".*"/opennic="nameserver' \
'104.238.153.178\nnameserver' \
[...]'
E aí, o primeiro comando s/^[...] não será completado.