相关文章推荐
逆袭的菠萝  ·  python调用powershell - ...·  2 年前    · 
沉稳的草稿本  ·  HttpContent.ReadAsStri ...·  2 年前    · 
体贴的柿子  ·  安装apt-utils-掘金·  3 年前    · 

前言

博主早年一直认为在家中部署 VPN 并没有实际意义,使用体验也不佳.随着宽带和网络技术的进步,家用 NAS 等设备的普及,加上对不可描述的网络需求,使用 OpenWRT 软路由作为网络核心,使得整个家庭网络变得非常的重要和丰富.让大家从外网通过 VPN 连接到家里变得更加有意义了.

选择 VPN

博主并没有深入研究各种 VPN 的协议和使用区别,对于用户体验,安全性,便捷性没有概念.好在有一位对网络知识非常了解的朋友强烈推荐和指导,最终选择了在 OpenWRT 路由器上配置了 OpenConnect VPN 服务的方案. 经过简单尝试,体验超乎想象.

在配置过程中,网上找到的一些技术参考文章大多都不太详细和完整.所以博主重新整理了服务端和客户端的配置流程,并详细讲述利用最安全和方便的 证书模式 来登录 VPN.由于图文略长,将分为 基础配置 证书配置 两篇文章讲解.

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

服务端

前提需求

  • OpenWRT 路由器或其他能够部署 OpenConnect VPN 的设备
  • 建议 上行 30M 的宽带以保证使用体验
  • 拥有 公网 IP 并配置端口映射

本文以 OpenWRT 路由器内网网段 192.168.1.0 为例.

基本设置

登录 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

注意下图中,如果和我一样有两条 53 结尾的记录,需注释掉,否则可能会导致连接 VPN 成功,却无法访问网站.此两条记录应该是 L 大的固件默认禁用 DNS 转发的规则,如果需要用到 AdGuard,OpenConnect 等插件则需要注释掉.

端口映射

默认端口为 4443 ,添加 端口映射 路由器IP 完成所有配置.

完成配置

服务端的基础配置完成,现在可以下载客户端,使用账号和密码登录连接 VPN.


客户端

下载客户端,使用 DDNS 域名,端口加上账号密码登录.

客户端推荐使用安全,稳定,高效的 Cisco AnyConnect .
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 根证书和用户证书来实现更安全和方便的登录需求,可以参考下篇:

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

本文链接 https://www.ioiox.com/archives/89.html 晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。

我的也是旁路由,把路由表全部删除可以访问家里设备,但是上不了网。我的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
以上是我的防火墙自定义规则,其余的全部注释掉了
望博主或大佬帮忙解答,感谢!

OpenWRT 路由器 OpenConnect VPN 详细图文教程 - 基础配置篇