前言
博主早年一直认为在家中部署VPN
并没有实际意义,使用体验也不佳.随着宽带和网络技术的进步,家用 NAS 等设备的普及,加上对不可描述的网络需求,使用OpenWRT
软路由作为网络核心,使得整个家庭网络变得非常的重要和丰富.让大家从外网通过 VPN 连接到家里变得更加有意义了.
选择 VPN
博主并没有深入研究各种 VPN 的协议和使用区别,对于用户体验,安全性,便捷性没有概念.好在有一位对网络知识非常了解的朋友强烈推荐和指导,最终选择了在OpenWRT
路由器上配置了OpenConnect VPN
服务的方案.经过简单尝试,体验超乎想象.
服务端
前提需求
- OpenWRT 路由器或其他能够部署 OpenConnect VPN 的设备
- 建议
上行 30M
的宽带以保证使用体验 - 拥有
公网 IP
并配置端口映射
基本设置
登录OpenWRT
路由器,打开服务
- OpenConnect VPN
.
勾选 Enable server 启动服务
默认端口为4443
,默认 VPN 网段为192.168.100.0
,根据情况自行更改.
DNS server 填写当前内网网段的DNS.
Routing table
全局代理 - 当客户端连接 VPN 后,客户端所有内外网
访问都将通过 VPN 所在的局域网代理.如下图删除
所有Routing table
即可.
内网代理 - 当客户端连接 VPN 后,客户端所有内网
访问通过 VPN 所在的局域网代理,而外网
访问则保持使用客户端当前网络.如下图添加内网
和VPN
两个网段即可.
编辑模版
默认模版并不影响使用,只是如下图在通过DDNS域名
连接 VPN 时会提示服务器或证书不受信任
,可以点击Connect Anyway
或者更改设置
继续登录.
可以参考以下步骤部署 DDNS 域名证书.
模版中查找以下字段:
server-cert = /etc/ocserv/server-cert.pem
server-key = /etc/ocserv/server-key.pem
将DDNS域名证书
上传并修改路径.例如:
server-cert = /etc/uhttpd.crt
server-key = /etc/uhttpd.key
用户设置
在用户设置中创建用于 VPN 连接的账号和密码.Active users
会显示当前连接的用户状态.
防火墙设置
OpenWRT - 网络 - 防火墙 - 自定义规则
添加以下三条记录,允许客户端使用路由器转发流量,重启防火墙生效.
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
iptables -I FORWARD -i vpns+ -s 192.168.100.0/24 -j ACCEPT
iptables -I INPUT -i vpns+ -s 192.168.100.0/24 -j ACCEPT
端口映射
默认端口为4443
,添加端口映射到路由器IP
完成所有配置.
完成配置
服务端的基础配置完成,现在可以下载客户端,使用账号和密码登录连接 VPN.
客户端
下载客户端,使用 DDNS 域名,端口加上账号密码登录.
OpenConnect VPN 通过实现 Cisco 的 AnyConnect 协议,用 DTLS 作为主要的加密传输协议.
AnyConnect 的 VPN 协议默认使用 UDP DTLS 作为数据传输,如果因网络问题导致 UDP 传输出现问题,它会利用最初建立的 TCP TLS 通道作为备份通道,降低 VPN 断开的概率.使用了 TLS over UDP 技术,少了 TCP 握手和稳定的要求,这也是使用体验大幅提升的原因.
下载地址
https://pan.ioiox.com/shared/FOAgYXjTiVHqnMUN
iOS 客户端可以直接早 App Store 下载
Windows 10 操作系统
AnyConnect Mobile 4.8.02045
点击下载
Windows 7/8 操作系统
AnyConnect Mobile 4.7.04056
点击下载
macOS 11 Big Sur
anyconnect-macos-4.9.04043-predeploy-k9
点击下载
macOS 10.15 Catalina
AnyConnect Mobile 4.8.02045
点击下载
macOS Maverick/Yosemite
AnyConnect Mobile 4.7.04056
点击下载
iOS 客户端
Cisco AnyConnect
AppStore 免费下载
Android 客户端
AnyConnect
Google Play 免费下载
点击下载
Linux 系统
AnyConnect-Linux64-4.8.02045
点击下载
安装说明
macOS 客户端仅需安装VPN
,取消勾选
其他组件.
iOS 客户端
结语
本文详细介绍了 OpenWRT 路由器 OpenConnect VPN 的基础配置,目前已经可以正常使用账号密码连接.如果希望通过部署自签 CA 根证书和用户证书来实现更安全和方便的登录需求,可以参考下篇:
83 条评论
[...]客户端的详情及下载,可以参考 OpenWRT 路由器 OpenConnect VPN 详细图文教程 – 基础配置篇 中的客户端部分下载.[...]
win 10 连接成功,但是无法访问内网,但是可以访问百度等,同样的账号,用手机登陆成功就可以访问镍网。
你可能是没有设置Routing table规则。
谢谢博主的文章,很实用。我已经连接成功,但有个小问题,我是在公司连接家里的openconnect,需要通过连接家里的路由器翻墙,我删除了Routing table的规则不能翻墙,而且删除了Routing table规则后就只能访问家里的openwrt,其他所有的设备都不能通过192的ip地址连接了。请问我是哪里设置错误了吗?试用版本ssrpOpenWrt ssrpOpenWrt v2021.09.05
ocserv.conf,修改这个配置文件,端口TCP和UDP,设置不一样的端口,在访问的时候端口写TCP端口,这个只能走TCP端口,或者,TCP和UDP都改为443,一般网络都封了443端口,在端口映射里面,用其他端口转换到443端口,这样可以用DTLS,也就是基于UDP协议的TCP数据。有其他问题可以问我。ocserv.conf,需要SSH去修改。DDNS的域名可以申请一年免费的SSL证书,上传到路由器,修改OCSERV.conf, server=证书地址,用证书登陆,不会出现红色警告,比较安全。
的确由于443被封,我用的是4443端口,我应经映射了4443端口,我尝试看看ocserv.conf,看能不能找出需要的参数。非常感谢博主。
大部分教程没有提到TCP和UDP端口的用途和作用,也没有提到证书的问题,以及客户端登陆的方式用户名或者证书,只是提到能连接就好。
请问你的问题解决了吗?我跟你一样的情况
楼主OpenWrt用的哪个固件,求链接
https://drive.google.com/drive/folders/1uRXg_krKHPrQneI3F2GNcSVRoCgkqESr
我用的是 eSir 的两年前的版本,现在新版的没测试过,不知道是否有区别
Openwrt旁路铀方案,如果DNS servers指向旁路由就无法梯子和打开视频网站,但是taobao 微信正常很奇怪。梯子工具用的SSR。研究了很久也没找到方法。有能帮帮的大哥吗
我的也是旁路由,把路由表全部删除可以访问家里设备,但是上不了网。我的OPENWRT网络接口里只有一个LAN口。
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
iptables -I FORWARD -i vpns+ -s 192.168.100.0/24 -j ACCEPT
iptables -I INPUT -i vpns+ -s 192.168.100.0/24 -j ACCEPT
以上是我的防火墙自定义规则,其余的全部注释掉了
望博主或大佬帮忙解答,感谢!
嗯,这个问题我碰到过,解决办法有两个,1:两个端口设置不一样,这样可以走一个端口,DTLS,这个就费了,走TLS,2:两个端口都设置成443,这样的可以DTLS,你也可以用其他端口转换到宿主机下。最好是SSH,直接修改oscerv.conf。
没太看明白,我的TCP和UDP都走的4443。路由设置成0.0.0.0无法通过家里的旁路有上梯子。
吧route table 里面的路由删除,全局流量,应该可以,你用的是list模式吧。如果在ocserv.conf里面改的话,route = default,其他route全部前面加#。
旁路由的话,DN S修改成旁路由的LAN IP