1

我已经基于 Ubuntu 14.04 创建了自己的容器映像,并使用 apt-get 安装了 openconnect。我可以ping google,并访问我在我期望的端口上运行的应用程序。

现在我正在尝试从容器到本地数据库的 VPN 连接。我首先在我的 Ubuntu 14.04 虚拟机中尝试过,没有问题。详情见下文。我现在尝试在容器中做同样的事情,但得到以下错误(完整日志见下文):
TUNSETIFF failed: Inappropriate ioctl for device

我发现的东西:
来源:https
://serverfault.com/questions/379710/openvpn-setup-service-wont-start “你有什么类型的 VPS?你可能需要你的供应商在主机节点。”
-> 鉴于它在我的笔记本电脑上以完全相同的方式工作,我假设它已在主机上启用。
来源: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': Operation not允许
的 TUNSETIFF 失败:Bluemix 中不允许设备的不适当 ioctl 使用 --privileged 运行

任何人任何指针?是否还应提供其他信息?谢谢!

成功

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
4

1 回答 1

0

不幸的是,您可能必须能够使用--privilegedor--cap-add标志运行容器,IBM Containers 不支持这些标志

于 2016-05-16T19:21:19.683 回答