在docker容器中调用OpenConnect VPN客户端显示TUNSETIFF失败:不允许操作

时间:2015-05-30 14:44:23

标签: docker vpn

我在基于ubuntu的docker容器中调用openconnect。它成功连接到服务器并提示输入我的密码,但随后

Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
TUNSETIFF failed: Operation not permitted

我搜索TUNSETIFF字,每个答案都是关于sudo中没有运行的命令,但我已经在容器内部进行了root操作。还有什么可能出错?

3 个答案:

答案 0 :(得分:23)

默认情况下,Docker容器以一组减少的linux功能启动(参见man capabilities)。减少的集合不包括一些与网络相关的功能(可能是因为容器无法嗅探来自主机或其他容器的流量)。

要启动具有完整网络功能的容器,请使用SYS_NET_ADMIN参数显式添加--cap-add功能,例如:

docker run -d --cap-add SYS_NET_ADMIN myimage

或者使用--privileged为容器提供完整的权限集,例如:

docker run -d --privileged myimage

答案 1 :(得分:0)

使用--privileged启动容器。 (感谢Adrian Mouat的回答)。

答案 2 :(得分:0)

通过

运行容器特权

docker run -d --privileged myimage

正如Adrian在添加NET_ADMIN功能时指出或运行它并通过隧道设备,例如:

docker run -d --cap-add NET_ADMIN --device /dev/net/tun myimage