type
status
date
slug
summary
tags
category
icon
password
之前介绍过一些关于内网穿透的内容,例如使用Tailscale、Zerotier等等,但是这些软件都有一个缺点,在外面需要使用特点的客户端才能实现内网穿透,需要频繁的切换VPN软件,很麻烦。今天介绍的Wireguard可以实现在使用大部分代理App的同时,还可以兼顾实现内网穿透回家,不必切换软件。
📝 Wireguard介绍
WireGuard是一个现代化的VPN协议,于2019年正式发布。它以极简设计和高性能著称,旨在提供更快速、更安全的VPN连接。WireGuard的代码库非常精简,仅有几千行代码,这不仅提高了审计和维护的效率,也减少了潜在的安全漏洞。
主要特性包括:
- 高效加密:WireGuard使用现代加密技术,如ChaCha20和Poly1305,确保数据传输的安全性和隐私性。
- 简洁配置:相比传统VPN,WireGuard的配置更加简单直观,易于部署和管理。
- 快速连接:由于其轻量级的设计,WireGuard能够提供快速的连接速度和低延迟。
- 跨平台支持:WireGuard可在多种操作系统上运行,包括Linux、Windows、macOS、iOS和Android,同时作为一种VPN协议,可以兼容大部分代理软件,包括Mihomo、Singbox等核心均已完成协议支持,例如FlClash、Surge、Stash、OpenClash等等。
业界对WireGuard的评价也很好,许多安全专家和技术社区成员称赞其简洁性和高效性,认为它是VPN技术的显著进步。Linus Torvalds(Linux内核的创始人)曾表示,WireGuard是“过去十年中最好的VPN”,并在2020年将其集成到Linux内核中,进一步提升了其可靠性和性能。
WireGuard首次在OpenWRT中得到支持是在OpenWRT 18.06版本。目前OpenWRT已经更新到22.05版本,对WireGuard的各种特性已经基本全部支持,同时得益于WireGuard的轻量设计,使其通过OpenWRT安装在嵌入式设备以及ARM设备上也可以具有非常高的网络性能,支持较高的网络吞吐量和不俗的低延迟体验,完全可以满足家庭网络实现内网穿透的需求。
📝 OpenWRT安装WireGuard指南
配置前提
需要一个域名,并已经配置DDNS指向当前OpenWRT机器。有关DDNS相关配置,可以参考之前的文章:OpenWRT中为局域网设备配置IPv6 DDNS | Dolingou
需要注意的是,在局域网下,可能会有两个具有公网特征的IPv6地址,
global deprecated dynamic noprefixroute
和global dynamic noprefixroute
,前者是在IPv6地址产生变动之前的地址,后面为新的地址,旧地址可能存在无法访问的情况,因为没有相对应的路由。我们需要将新地址提取出来。可以在DDNS-GO中指定使用@2
进行选择。OpenWRT版本需大于18.06版本,目前主流最新版本包括OpenWRT官方源、ImmoralWRT、LEDE、iStore等应该都可以。
WireGuard程序安装
默认的OpenWRT并没有直接集成WireGuard的安装程序,需要手动进行安装。
Luci界面方式安装
打开
系统 → 软件包
,点击更新列表
,并等待软件列表更新完成。在
过滤器
中搜索WireGuard
,并选择luci-proto-wireguard
,进行WireGuard协议的安装。同时需要安装qrencode
,用于显示WireGuard对端的二维码。SSH方式安装
在登入OpenWRT的SSH之后,执行以下命令:
返回以下内容,且没有Error报错即安装完成:
OpenWRT上WireGuard配置
常规设置
在WireGuard协议安装完成之后,需要重启一次路由器,否则在接口协议中看不到WireGuard协议。
在OpenWRT的管理网页点击
网络 → 接口 → 添加新接口
进行WireGuard接口的添加操作,接口名称随便填写,接口协议选择WireGuard VPN。点击
创建接口
:因为是新建的配置,所以没有私钥和公钥,可以通过点击生成新的密钥对进行创建,创建完成后会自动填充到对应的输入框内。
监听端口:建议配置特定高位端口,即1024以上端口,避免Qos和端口扫描,可以使用默认的
51820
端口。防火墙设置:选择LAN防火墙区域,允许主机间通讯。不要使用WAN区域,否则会导致无法连接家里主机。
IP地址:WireGuard接口所处于的IP地址,建议使用和LAN局域网不同的网段,例如我在平常家里的局域网使用网段为
10.0.0.0/24
, 这里我会使用10.0.10.1/32
, 从而让WireGuard使用在10.0.10.0/24
网段。对端(Peer)设置
对端(Peer)设置的意思就是配置客户端接入点。
已禁用对端:
取消勾选
描述:
随便填写
,主要用于记住当前对端配置是给哪些设备或者地址使用。公钥、私钥:点击下面的
生成新的密钥对
自动生成和填充。预共享密钥:
可选
,如果需要可点击生成预共享密钥
按钮自动填充。允许的IP:
填写IP地址
,如果你的设备处于固定网段内或具有固定IP地址,可以填写,相当于IP地址白名单,不在IP地址范围内的则无法连接。路由允许的IP:
可选
,勾选后允许连接到WireGuard的客户端访问所在设备的其他网段。端点主机:作为WireGuard服务器使用时不用填写
端点端口:作为WireGuard服务器使用时不用填写
持续Keep-Alive:作为WireGuard服务器使用时不用填写
配置文件导出:点击后完善对端信息,并生成配置文件及对应二维码,二维码需要安装qrencode才可以显示。
连接端点:
填写DDNS域名
允许的IP:如果无特殊白名单需求,可不用更改。
DNS服务器:为对端客户端下发的DNS服务器,作为解析DDNS域名使用,可以选择国内的
223.5.5.5
或者119.29.29.29
,需要注意的是此处不支持使用DOH或者DOT的DNS服务。地址:为客户端所分配的WireGuard局域网IPv4地址,需与上面WireGuard基本配置中的IP地址处于同一网段。
以上信息完善后,会自动更新下面的配置文件代码,可复制到客户端内使用。或者对于Android与iOS等移动设备,也可以直接进行扫码添加配置文件。
Windows系统使用WireGuard
点击
Add Tunnel
后面的下拉箭头,选择Add Empty Tunnel
,粘贴刚刚导出的内容进去,随便填写一个名称。然后点击
Active
即可正常连接,显示如下:其他系统基本也大同小异,Android和iOS系统可直接通过扫码方式创建配置文件,Linux、macOS等系统可通过和Windows类似的方式新建WireGuard配置文件。
防火墙配置
由于我们配置了51820端口作为WireGuard UDP通信端口,所以需要在主路由中添加对应的端口放行规则。例如在OpenWRT中,在
网络 → 防火墙 → 通信规则
中新建一条WireGuard通信规则:源区域:
WAN
源IP地址:不用填写
源端口:
51820
目标区域:如果WireGuard部署在当前路由上,则选择
输入
,如果WireGuard部署在局域网内其他设备上,例如旁路由上,则选择任意区域(转发)
目标地址:选择WireGuard设备的IP地址,如果使用IPv6,则需要选择对应IPv6的地址。IPv6地址放行可参考:OpenWRT IPv6防火墙规则:如何放行客户端地址及端口 | Dolingou
目标端口:
51820
操作:
接收
Mihomo使用WireGuard
Mihomo目前已经能够还好的支持WireGuard协议,可在配置文件中增加
type: wireguard
的配置项,同时可在规则中增加局域网网段的规则,从而自动分流局域网网段使用WireGuard。理论上目前的Flclash、Clash Meta均可以正常使用。个人测试Flclash是没有问题的。
🤗 总结归纳
已基本完结。
📎 参考文章
有关OpenWRT安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~