前言
最近做一个项目,需要通过 VPN 连结到对方的服务器,对方用的是 Cisco AnyConnect。
我们装上给的 AnyConnect 客户端,可以连上。
问题
后来,我们的系统跑不起来,发现了问题:我们的系统需要连接我们内网的服务 X,而这个服务 X 的 IP 地址被 AnyConnect 的路由表包含在其中了。查看路由表可以发现这个情况,把 VPN 一断开,服务 X 又能访问了,一连上马上又不行了。我们连 VPN 只需要访问对方的仅仅一个 IP,但是这 VPN 把一堆内网网段都路由了。
我直接删了对应的路由表,再刷新路由表一看,那个条目怎么还在??
后来找了好久,总算找到了元凶,就是 AnyConnect 本身。它就是会故意监视路由表,一旦发现被篡改就给你改回去。
解决
在刚才的链接中,有人就提出了办法:不用 AnyConnect,改用开源的 OpenConnect。安装很简单,Linux/Mac OS 都有现成的包可以通过命令行安装,Windows 也有对应的 GUI 版本。
安装完成后,使用以下命令连接 VPN:
# echo password | openconnect --background -u vpnuser \ --servercert pin-sha256:xxxxxxxxxxxxxxxxxxxx \ vpn.your.com
连接建立后,可以查看路由表,发现路由表确实又被加了许多。
但是没关系,sudo ip del xxxxxxxxxx
,直接就能删掉。这样问题就解决了。
发表评论