compose - docker openvpn client
Llamar al cliente OpenConnect VPN en el contenedor de la ventana acoplable muestra TUNSETIFF fallido: operaciĆ³n no permitida (3)
Estoy llamando a openconnect dentro de un contenedor docker basado en ubuntu. Se conecta con éxito al servidor y solicita mi contraseña, pero luego
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
TUNSETIFF failed: Operation not permitted
Busco la palabra TUNSETIFF y cada respuesta es sobre el comando que no se ejecuta en sudo, pero ya soy root dentro del contenedor. ¿Qué más puede salir mal?
Comenzando el contenedor con --privileged. (Gracias Adrian Mouat por la respuesta).
De forma predeterminada, los contenedores Docker se inician con un conjunto reducido de capacidades de linux (ver man capabilities
). El conjunto reducido no incluye algunas funciones relacionadas con la red (presumiblemente para que los contenedores no puedan detectar el tráfico del host u otros contenedores).
Para iniciar un contenedor con capacidades de red completas, agregue explícitamente la capacidad --cap-add
argumento --cap-add
por ejemplo:
docker run -d --cap-add SYS_NET_ADMIN myimage
O bien, --privileged
al contenedor el conjunto completo de privilegios con --privileged
por ejemplo:
docker run -d --privileged myimage
O bien ejecute el contenedor privilegiado a través de
docker run -d --privileged myimage
como Adrian lo señaló o lo ejecuta con la capacidad NET_ADMIN
agregada y pasa el dispositivo del túnel, por ejemplo:
docker run -d --cap-add NET_ADMIN --device /dev/net/tun myimage