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
nscache 65536
nserver 8.8.8.8
nserver 8.8.4.4
config /conf/3proxy.cfg
monitor /conf/3proxy.cfg
log /logs/3proxy-%y%m%d.log D
rotate 60
counter /count/3proxy.3cf
include /conf/counters
include /conf/bandlimiters
auth none
allow *
socks -i127.0.0.1
admin -p8080 -i127.0.0.1
利用FRP将端口穿透至局域网
frp 进行内网穿透,将上述代理端口映射出去。理论上可以映射给一个公网服务器,这样相当于有了随时可以连接的代理服务器,但不建议,因为存在安全隐患。
frps 服务端
在openwrt/istoreos中安装,当前测试的版本是0.65.0
frpc 客户端
在wsl中安装,我用的是GitHub自动安装脚本https://github.com/stilleshan/frpc 然后根据提示信息修改端口
serverAddr = "10.0.0.1"
serverPort = 7000
auth.method = "token"
auth.token = ""
[[proxies|proxies]]
name = "cisco_vpn"
type = "tcp"
localIP = "127.0.0.1"
localPort = 1080
remotePort = 1080
然后sudo systemctl restart frpc重启服务
用sudo systemctl status frpc查看运行情况
lines 1-16/16 (END)
● frpc.service - Frp Server Service
Loaded: loaded (/usr/lib/systemd/system/frpc.service; enabled; preset: enabled)
Active: active (running) since Fri 2025-10-24 12:35:14 HKT; 23min ago
Main PID: 193 (frpc)
Tasks: 10 (limit: 18963)
Memory: 22.8M (peak: 36.3M)
CPU: 3.804s
CGroup: /system.slice/frpc.service
└─193 /usr/local/frp/frpc -c /usr/local/frp/frpc.toml
如果有错误,就用journalctl -u frpc.service -b 查看具体信息用gpt去修改对应的语法。
保持WSL持续运行
最后,要保持wsl保持开启状态,不然关掉命令窗口后,代理就没了
- WIN+R 运行
shell:startup打开启动目录 - 在此目录中创建文件 wsl-startup.vbs
- 在 wsl-startup.vbs 中填充如下内容,Arch需替换为你使用的发行版名称。
set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Arch", 0
这样当你系统启动,登录系统后,Windows会开启 WSL 实例,它会永久等待输入,不会关闭。所以当你下次再使用WSL命令时,就不会遇到需要重新唤醒 WSL 的耗时。
参考知乎文章https://zhuanlan.zhihu.com/p/612755941
用 wsl -l -v 可以查看wsl运行状态,running就是在运行了
NAME STATE VERSION
* Ubuntu Running 2
后续
本文给出了把cisco代理共享给局域网的方法,同时给出在wsl的chrom中访问局域网网页的方法,但windows宿主机仍无法直接访问局域网或者不用代理,之后会分享如何通过端口转发的方式进行访问,且无需切断cisco连接。
