cisco默认split tunnel功能是关闭的,所以开启后默认拦截所有路由且包括本地局域网,导致无法访问路由器管理页面、打印机、部署在本地的其他其他服务等,这就很不方便。
ios端的anyconnect支持connect on demand可以手动把局域网或者特定ip/域名加入白名单,其中在mac端可以下载ipad上的anyconnect同样可以实现对应功能,不要用mac端的cisco(这个也是拦截所有的)。所以一种曲线救国的方式就是在mac平台开启一个本地代理server连接让局域网使用,这个就比较简单了,但是本人现在的主力设备是window,经过探索发现下面的方式。
所需软件
- WSL
- 3proxy
- frp
WSL配置
wsl,并设置为mirror网络模式,这样wsl中可以访问局域网,跳过cisco阻断所有网络,同时也可以实现在wsl中访问局域网设备,比如 安装chrom后,用google-chrome启动浏览器,可以访问本地网络。
WSL中安装3Proxy并开启Socks代理
使用3proxy进行安装, 直接在局域网启动就行,安全性没问题。默认开启1080 sock端口
配置文件在`/etc/3proxy/conf/3proxy.cfg
1 | nscache 65536 |
利用FRP将端口穿透至局域网
frp 进行内网穿透,将上述代理端口映射出去。理论上可以映射给一个公网服务器,这样相当于有了随时可以连接的代理服务器,但不建议,因为存在安全隐患。
frps 服务端
在openwrt/istoreos中安装,当前测试的版本是0.65.0
frpc 客户端
在wsl中安装,我用的是GitHub自动安装脚本https://github.com/stilleshan/frpc 然后根据提示信息修改端口
1 | serverAddr = "10.0.0.1" |
然后sudo systemctl restart frpc重启服务
用sudo systemctl status frpc查看运行情况
1 | lines 1-16/16 (END) |
如果有错误,就用journalctl -u frpc.service -b 查看具体信息用gpt去修改对应的语法。
保持WSL持续运行
最后,要保持wsl保持开启状态,不然关掉命令窗口后,代理就没了
- WIN+R 运行
shell:startup打开启动目录 - 在此目录中创建文件 wsl-startup.vbs
- 在 wsl-startup.vbs 中填充如下内容,Arch需替换为你使用的发行版名称。
1 | set ws=wscript.CreateObject("wscript.shell") |
这样当你系统启动,登录系统后,Windows会开启 WSL 实例,它会永久等待输入,不会关闭。所以当你下次再使用WSL命令时,就不会遇到需要重新唤醒 WSL 的耗时。
用 wsl -l -v 可以查看wsl运行状态,running就是在运行了
1 | NAME STATE VERSION |
后续
本文给出了把cisco代理共享给局域网的方法,同时给出在wsl的chrom中访问局域网网页的方法,但windows宿主机仍无法直接访问局域网或者不用代理,之后会分享如何通过端口转发的方式进行访问,且无需切断cisco连接。