OpenConnect是Cisco AnyConnect SSL VPN的一个开源客户端,支持Cisco多个系列IOS 12.4(9)T及更高版本的Cisco SR500, 870, 880, 1800, 2800, 3800, 7200 Series 和 Cisco 7301,以及ASA 5500系列。
OpenConnnect也可以配合OpenConnect VPN Server - ocserv来实现便捷的翻墙。
- Gentoo安装
可以安装 openconnect
以及 networkmanager-openconnect
,然后就可以通过nm-applet
(network manager的托盘图标)来配置。注意,安装以后需要重启 NetworkManager.service
。
emerge --ask net-misc/openconnect
- Ubuntu安装
sudo apt-get install openconnect
openconnect vpnserver
然后输入帐号和密码就可以。
注意:VPN需要使用
tun
设备,内核需要支持,否则会报错Failed to open tun device: No such device Set up tun device failed
Device Drivers -> Network device support
<*> Universal TUN/TAP device driver support
通过homebrew安装OpenConnect
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install openconnect
要升级openconnect,则使用
brew upgrade openconnect
以前需要安装Mac OS X TUN/TAP ?:当前tuntap已经不支持最新macOS。不过,现在macOS包含了utun设备,所以你应该不需要再安装tun/tap设备,当前openconnect应该是直接使用macOS提供的原生utun设备。
请参考 []
如果已经安装了Mac OS X TUN/TAP,参考其安装文档可以卸载:
sudo rm -rf /Library/Extensions/tap.kext
sudo rm -rf /Library/Extensions/tun.kext
sudo rm -rf /Library/LaunchDaemons/net.sf.tuntaposx.tap.plist
sudo rm -rf /Library/LaunchDaemons/net.sf.tuntaposx.tun.plist
运行openconnect需要sudo,因为它需要修改DNS,可以通过以下方法加上无需密码的sudo权限
sudo visudo -f /etc/sudoers
添加
%admin ALL=(ALL) NOPASSWD: /usr/local/bin/openconnect
为避免访问自签名服务器出现的告警,可以通过将服务器证书导出存放到客户端~/.ssh/<certificate name>.pem
,然后通过命令访问
sudo openconnect --user=<VPN username> --cafile=<.pem file from step 4.3> <your vpn hostname>
- 连接成功,但是一会就显示操作无效
DTLS handshake failed: Resource temporarily unavailable, try again.
Failed to connect utun unit: Operation not permitted
Failed to open tun device: Operation not permitted
Set up tun device failed
Unknown error; exiting.
这个问题是因为访问 utun
设备需要root权限,虽然 sudo
可以执行,但是在后续应该还有访问 utun
设备,此时似乎后台没有使用root身份。最终我的解决方法是,先切换到root身份,然后再执行 openconnect
就不再报错:
# FIRST switch to root
sudo su -
# THEN create vpn as root
openconnect vpn.example.com
我把这个方法comment到了 OpenConnect VPN on Mac OS X