解决Linux下连接Cisco VPN后局域网不能访问
在Linux下使用Cisco Anyconnect客户端连接VPN后,局域网无法访问,无论如何设置路由,路由表始终无法改变网上搜了一下,原因是Anyconnect客户端监听路由表,一旦改变,通过一个回调再改回去
解决办法:Anyconnect监听路由表的回调代码位于一个so共享库,可以通过LD_PRELOAD阻止Anyconnect加载原来的监听回调
创建hack.c
#include <sys/socket.h>
#include <linux/netlink.h>
int _ZN27CInterfaceRouteMonitorLinux20routeCallbackHandlerEv()
{
int fd=50; // max fd to try
char buf[8192];
struct sockaddr_nl sa;
socklen_t len = sizeof(sa);
while (fd) {
if (!getsockname(fd, (struct sockaddr *)&sa, &len))
...