openconnect in dockers/IBM bluemix (Error: TUNSETIFF failed: Inappropriate ioctl for device)
openconnect in dockers/IBM bluemix (Error: TUNSETIFF failed: Inappropriate ioctl for device)
我已经基于 Ubuntu 14.04 创建了自己的容器镜像,并使用 apt-get 安装了 openconnect。我可以 ping google,并在我期望的端口上访问我拥有 运行 的应用程序。
现在我正在尝试建立从容器到本地数据库的 VPN 连接。我先在我的 Ubuntu 14.04 虚拟盒子中试过了,没有问题。详情见下文。我现在正尝试在容器中执行相同操作,但出现以下错误(完整日志见下文):
TUNSETIFF 失败:设备的 ioctl 不合适
我发现的东西:
资料来源:https://serverfault.com/questions/379710/openvpn-setup-service-wont-start
"What type of VPS do you have? You may need your provider to enable TUN/TAP devices on the host node."
-> 鉴于它以完全相同的方式在我的笔记本电脑上工作,我假设它已在主机上启用。
资料来源:https://groups.google.com/forum/#!topic/docker-user/2jFeDGJj36E
我有 tun 设备吗?
-> 它具有所有适当的权利
资料来源:https://serverfault.com/questions/680721/how-to-create-dev-tun-device-inside-unprivileged-lxc-container
和
资料来源:https://hub.docker.com/r/dperson/openvpn-client/
也许我应该添加一些标志?
cf ic run --device /dev/net/tun --cap-drop ALL --cap-add MKNOD --name <containerName> -p 11821:11821 -d <namespace>/<containerName python /<some pythong script>&
我也尝试过不使用 cap-drop,不使用 --device,使用 --cap-add ALL,使用 cap-add SYS_NET_ADMIN,结果相同,1 个额外的错误行:
mknod: '/dev/net/tun': 不允许操作
TUNSETIFF 失败:设备的 ioctl 不合适
运行 --Bluemix 中不允许特权
有人指点吗?还有其他需要提供的信息吗?谢谢!
成功
enter code here
$ sudo openconnect -u <username> <vpn IP>
POST <vpn IP>
Attempting to connect to server <IP>
SSL negotiation with <vpn IP>
Connected to HTTPS on <vpn IP>
XML POST enabled
Please enter your username and password.
Password:
POST <vpn IP>
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
Connected tun0 as 10.x.x.x, using SSL
Established DTLS connection (using OpenSSL)
来自容器
$openconnect -u <username> <vpn IP>
POST <vpn IP>
Attempting to connect to server <ip>
SSL negotiation with <vpn IP>
Connected to HTTPS on <vpn IP>
XML POST enabled
Pleas e enter your username and password.
Password:
POST <vpn IP>
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
TUNSETIFF failed: Inappropriate ioctl for device
不幸的是,您可能必须能够 运行 带有 --privileged
或 --cap-add
标志的容器,这在 IBM Containers
上不受支持
我已经基于 Ubuntu 14.04 创建了自己的容器镜像,并使用 apt-get 安装了 openconnect。我可以 ping google,并在我期望的端口上访问我拥有 运行 的应用程序。
现在我正在尝试建立从容器到本地数据库的 VPN 连接。我先在我的 Ubuntu 14.04 虚拟盒子中试过了,没有问题。详情见下文。我现在正尝试在容器中执行相同操作,但出现以下错误(完整日志见下文):
TUNSETIFF 失败:设备的 ioctl 不合适
我发现的东西:
资料来源:https://serverfault.com/questions/379710/openvpn-setup-service-wont-start
"What type of VPS do you have? You may need your provider to enable TUN/TAP devices on the host node."
-> 鉴于它以完全相同的方式在我的笔记本电脑上工作,我假设它已在主机上启用。
资料来源:https://groups.google.com/forum/#!topic/docker-user/2jFeDGJj36E
我有 tun 设备吗?
-> 它具有所有适当的权利
资料来源:https://serverfault.com/questions/680721/how-to-create-dev-tun-device-inside-unprivileged-lxc-container
和
资料来源:https://hub.docker.com/r/dperson/openvpn-client/
也许我应该添加一些标志?
cf ic run --device /dev/net/tun --cap-drop ALL --cap-add MKNOD --name <containerName> -p 11821:11821 -d <namespace>/<containerName python /<some pythong script>&
我也尝试过不使用 cap-drop,不使用 --device,使用 --cap-add ALL,使用 cap-add SYS_NET_ADMIN,结果相同,1 个额外的错误行:
mknod: '/dev/net/tun': 不允许操作
TUNSETIFF 失败:设备的 ioctl 不合适
运行 --Bluemix 中不允许特权
有人指点吗?还有其他需要提供的信息吗?谢谢!
成功
enter code here
$ sudo openconnect -u <username> <vpn IP>
POST <vpn IP>
Attempting to connect to server <IP>
SSL negotiation with <vpn IP>
Connected to HTTPS on <vpn IP>
XML POST enabled
Please enter your username and password.
Password:
POST <vpn IP>
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
Connected tun0 as 10.x.x.x, using SSL
Established DTLS connection (using OpenSSL)
来自容器
$openconnect -u <username> <vpn IP>
POST <vpn IP>
Attempting to connect to server <ip>
SSL negotiation with <vpn IP>
Connected to HTTPS on <vpn IP>
XML POST enabled
Pleas e enter your username and password.
Password:
POST <vpn IP>
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
TUNSETIFF failed: Inappropriate ioctl for device
不幸的是,您可能必须能够 运行 带有 --privileged
或 --cap-add
标志的容器,这在 IBM Containers