OpenWrt安装OpenVPN和OpenClash实现分流

Updated on in develop

在日常使用OpenWrt路由器时,很多用户会遇到一个核心需求:国内网站(如百度、淘宝)直接访问,保证速度;海外站点(如Google、Reddit)通过VPN访问,突破网络限制。OpenVPN负责搭建稳定的海外通信隧道,OpenClash负责智能分流,两者结合就能实现“无感切换、按需路由”的理想效果。
本文将从「准备工作」开始,一步步教你完成OpenVPN、OpenClash的安装与配置,全程图文化、步骤化,新手也能轻松上手。重点解决“安装后无法访问海外”“分流失效”“App无法联网”等常见问题,最终实现国内流量直连、海外流量走OpenVPN的精准分流。
⚠️ 重要声明:本文仅用于学习和研究目的,使用VPN访问海外网络需遵守国家相关法律法规,请勿用于非法用途。

一、前期准备(必看,避免踩坑)

1.1 硬件与系统要求

  • 路由器:支持OpenWrt系统(推荐X86软路由、小米AX3600、Netgear WNDR3800等适配机型,可在OpenWrt官网查询支持列表),建议内存≥256M,保证插件运行流畅。
  • OpenWrt系统:已刷入稳定版(如22.03.5),且已完成基础配置(WAN口联网、LAN口设置、LuCI Web管理界面安装),新手可参考OpenWrt官方初始配置教程。
  • 网络环境:路由器已正常连接互联网(PPPoE拨号或静态IP均可),可正常访问国内网站。

1.2 必备文件与工具

  • OpenVPN客户端配置文件:由你的VPN服务商提供(通常为.ovpn格式),包含服务器地址、端口、证书、账号密码等关键信息,用于搭建VPN隧道。
  • OpenClash插件包:根据自己的OpenWrt系统架构(如x86_64、arm64)下载,推荐从kenzo开源仓库获取(适配性更强)。
  • 工具:SSH工具(如Xshell、Putty,用于远程登录路由器)、FTP工具(如FileZilla,用于上传配置文件)、浏览器(用于LuCI Web管理)。
  • 辅助资源:chnroutes路由表(包含所有中国大陆IP段,用于实现国内流量直连,可自动更新)。

二、第一步:安装 OpenVPN(搭建海外通信隧道)

OpenVPN的核心作用是建立加密的虚拟网络通道,连接海外VPN服务器,为海外流量提供传输路径。我们重点配置OpenVPN客户端(连接服务商的VPN服务器),步骤如下:

2.1 安装OpenVPN相关组件

有两种安装方式,新手优先选择LuCI Web界面安装,便捷高效;进阶用户可使用SSH命令安装。

方式1:LuCI Web界面安装(推荐新手)

  1. 登录OpenWrt LuCI管理界面(默认地址:192.168.1.1,账号密码为你设置的root账号)。
  2. 进入「系统」→「软件包」,点击「更新列表」,等待软件源更新完成(若更新失败,可更换国内软件源,如阿里云、清华源)。
  3. 在搜索框中分别搜索并安装以下组件(勾选后点击「安装」,等待自动完成):
    • openvpn-openssl(OpenVPN核心组件,基于OpenSSL加密)
    • luci-app-openvpn(OpenVPN的LuCI管理插件,方便图形化配置)
    • luci-proto-ppp(可选,用于适配部分VPN协议)
  4. 安装完成后,重启路由器(「系统」→「重启」),使组件生效。

方式2:SSH命令安装(进阶用户)

通过SSH登录路由器(默认IP:192.168.1.1,账号root),执行以下命令:

更新软件源

opkg update

安装OpenVPN及管理插件

opkg install openvpn-openssl luci-app-openvpn luci-proto-ppp

重启路由器

reboot

2.2 配置OpenVPN客户端(关键步骤)

配置的核心是导入VPN服务商提供的.ovpn文件,确保能成功连接海外服务器,步骤如下:

  1. 上传.ovpn配置文件:通过FTP工具(如FileZilla)连接路由器,将服务商提供的.ovpn文件上传到路由器的「/etc/openvpn/」目录下(若目录不存在,手动创建)。
  2. 进入LuCI管理界面,「网络」→「VPN」→「OpenVPN」,点击「添加」,进入配置页面:
    • 名称:自定义(如“VPN-US”,便于区分)。
    • 配置文件:选择「使用已有的配置文件」,点击「浏览」,选择刚才上传的.ovpn文件。
    • 其他选项默认即可,若.ovpn文件中未包含账号密码,需在「认证」中填写VPN账号和密码。
  3. 关键配置(必做,否则无法正常转发流量):
    • 点击「高级设置」,勾选「重定向默认网关」(Redirect Gateway),作用是将所有海外流量引导至VPN隧道。
    • 勾选「使用对端推送的DNS」,避免DNS污染,确保海外域名能正常解析。
  4. 保存配置,点击「启动」,等待1-2分钟,查看「状态」是否为「运行中」。若显示运行中,说明OpenVPN已成功连接海外服务器;若失败,检查.ovpn文件是否正确,或联系VPN服务商排查。

2.3 验证OpenVPN连接

通过SSH登录路由器,执行以下命令,验证VPN隧道是否正常:

查看VPN网卡(tun0)是否存在

ifconfig tun0

测试海外IP连通性(ping Google DNS)

ping 8.8.8.8 -I tun0
若能看到tun0网卡的IP地址,且ping 8.8.8.8能通,说明OpenVPN连接正常;若不通,检查配置文件或VPN服务商线路。

三、第二步:安装 OpenClash(实现智能分流)

OpenVPN连接成功后,若直接使用,会导致所有流量(包括国内流量)都走VPN,造成国内网站访问速度变慢。OpenClash的核心作用是「智能分流」:识别国内/海外流量,国内流量直连,海外流量走OpenVPN隧道,实现速度与功能的兼顾。

3.1 安装OpenClash插件

OpenClash未收录在OpenWrt官方软件源中,需手动下载插件包安装,步骤如下:

  1. 根据自己的OpenWrt系统架构,下载对应的OpenClash插件包(.ipk格式)。推荐从kenzo开源仓库下载(国内访问稳定):
    • GitHub地址:https://github.com/kenzok8/openwrt-packages
    • 国内Gitee地址:https://gitee.com/kenzok8/openwrt-packages.git(访问更快)
      (注:经测试,Gitee地址目前存在网页解析失败问题,建议优先使用GitHub地址下载)
  2. 上传插件包:通过FTP工具,将下载的.ipk文件上传到路由器的「/tmp/」目录下。
  3. SSH登录路由器,执行以下命令安装(替换文件名为你下载的插件包名称):

进入tmp目录

cd /tmp

安装插件(替换文件名)

opkg install luci-app-openclash_xxx.ipk

安装依赖(若提示缺少依赖,执行以下命令)

opkg install luci-i18n-openclash-zh-cn # 中文语言包
opkg install coreutils-nohup # 后台运行依赖

重启路由器

reboot
重启后,LuCI管理界面会出现「OpenClash」选项,说明安装成功。

3.2 初始化OpenClash配置

OpenClash安装后,需进行基础配置,确保能正常识别流量并分流,步骤如下:

  1. 进入LuCI管理界面,「服务」→「OpenClash」,首次进入会提示「未找到配置文件」,点击「下载核心」。
  2. 选择与路由器架构匹配的核心(如x86_64选择「clash-linux-amd64」),点击「下载」,等待核心下载完成(若下载失败,手动下载核心上传到「/etc/openclash/core/」目录)。
  3. 下载分流规则:进入「规则设置」→「规则订阅」,添加以下规则订阅(二选一即可,均包含国内IP段和海外站点规则):
    • GFWList规则(适合日常使用):https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt(注:经测试,该地址目前无法获取有效内容,建议选择大陆白名单规则)
    • 大陆白名单规则(更精准,推荐):包含chnroutes路由表,可自动识别国内IP段。
  4. 点击「更新规则」,等待规则更新完成,此时OpenClash已具备基础的分流能力。

四、第三步:关键配置(实现国内直连+海外走VPN)

这一步是核心,需配置OpenClash的分流规则和OpenVPN的路由转发,确保国内流量直连、海外流量走VPN,步骤如下:

4.1 OpenClash 分流规则配置(核心中的核心)

分流规则的核心逻辑:「国内IP/域名 → 直连」「海外IP/域名 → 走OpenVPN」,配置如下:

  1. 进入「OpenClash」→「规则设置」→「规则分组」,确保已加载「大陆白名单」或「GFWList」规则。
  2. 添加自定义规则(补充默认规则遗漏的海外站点,如Reddit、Instagram),点击「添加规则」,输入以下内容(复制粘贴即可):

海外站点走VPN(OpenVPN的接口名称,默认tun0)

DOMAIN-SUFFIX,google.com,Proxy
DOMAIN-SUFF