⛓️OpenWRT安装WireGuard实现内网穿透

2024-10-15|2025-1-1
Yawatasensei
Yawatasensei
type
status
date
slug
summary
tags
category
icon
password
😀
之前介绍过一些关于内网穿透的内容,例如使用Tailscale、Zerotier等等,但是这些软件都有一个缺点,在外面需要使用特点的客户端才能实现内网穿透,需要频繁的切换VPN软件,很麻烦。今天介绍的Wireguard可以实现在使用大部分代理App的同时,还可以兼顾实现内网穿透回家,不必切换软件。
 

📝 Wireguard介绍

WireGuard是一个现代化的VPN协议,于2019年正式发布。它以极简设计和高性能著称,旨在提供更快速、更安全的VPN连接。WireGuard的代码库非常精简,仅有几千行代码,这不仅提高了审计和维护的效率,也减少了潜在的安全漏洞。
主要特性包括:
  1. 高效加密:WireGuard使用现代加密技术,如ChaCha20和Poly1305,确保数据传输的安全性和隐私性。
  1. 简洁配置:相比传统VPN,WireGuard的配置更加简单直观,易于部署和管理。
  1. 快速连接:由于其轻量级的设计,WireGuard能够提供快速的连接速度和低延迟。
  1. 跨平台支持: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 noprefixrouteglobal dynamic noprefixroute ,前者是在IPv6地址产生变动之前的地址,后面为新的地址,旧地址可能存在无法访问的情况,因为没有相对应的路由。我们需要将新地址提取出来。可以在DDNS-GO中指定使用@2 进行选择。
OpenWRT版本需大于18.06版本,目前主流最新版本包括OpenWRT官方源、ImmoralWRT、LEDE、iStore等应该都可以。

WireGuard程序安装

默认的OpenWRT并没有直接集成WireGuard的安装程序,需要手动进行安装。

Luci界面方式安装

打开系统 → 软件包 ,点击更新列表 ,并等待软件列表更新完成。
notion image
过滤器中搜索WireGuard,并选择luci-proto-wireguard ,进行WireGuard协议的安装。同时需要安装qrencode,用于显示WireGuard对端的二维码。
notion image

SSH方式安装

在登入OpenWRT的SSH之后,执行以下命令:
返回以下内容,且没有Error报错即安装完成:

OpenWRT上WireGuard配置

常规设置

在WireGuard协议安装完成之后,需要重启一次路由器,否则在接口协议中看不到WireGuard协议。
在OpenWRT的管理网页点击网络 → 接口 → 添加新接口 进行WireGuard接口的添加操作,接口名称随便填写,接口协议选择WireGuard VPN。
notion image
点击创建接口
notion image
因为是新建的配置,所以没有私钥和公钥,可以通过点击生成新的密钥对进行创建,创建完成后会自动填充到对应的输入框内。
监听端口:建议配置特定高位端口,即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)设置的意思就是配置客户端接入点。
notion image
已禁用对端: 取消勾选
描述:随便填写主要用于记住当前对端配置是给哪些设备或者地址使用。
公钥、私钥:点击下面的生成新的密钥对自动生成和填充。
预共享密钥:可选,如果需要可点击生成预共享密钥按钮自动填充。
允许的IP:填写IP地址 ,如果你的设备处于固定网段内或具有固定IP地址,可以填写,相当于IP地址白名单,不在IP地址范围内的则无法连接。
路由允许的IP:可选 ,勾选后允许连接到WireGuard的客户端访问所在设备的其他网段。
端点主机:作为WireGuard服务器使用时不用填写
端点端口:作为WireGuard服务器使用时不用填写
持续Keep-Alive:作为WireGuard服务器使用时不用填写
 
配置文件导出:点击后完善对端信息,并生成配置文件及对应二维码,二维码需要安装qrencode才可以显示。
notion image
连接端点:填写DDNS域名
允许的IP:如果无特殊白名单需求,可不用更改。
DNS服务器:为对端客户端下发的DNS服务器,作为解析DDNS域名使用,可以选择国内的223.5.5.5或者119.29.29.29 ,需要注意的是此处不支持使用DOH或者DOT的DNS服务。
地址:为客户端所分配的WireGuard局域网IPv4地址,需与上面WireGuard基本配置中的IP地址处于同一网段。
 
以上信息完善后,会自动更新下面的配置文件代码,可复制到客户端内使用。或者对于Android与iOS等移动设备,也可以直接进行扫码添加配置文件。
 

Windows系统使用WireGuard

notion image
点击Add Tunnel 后面的下拉箭头,选择Add Empty Tunnel ,粘贴刚刚导出的内容进去,随便填写一个名称。
然后点击Active 即可正常连接,显示如下:
notion image
其他系统基本也大同小异,Android和iOS系统可直接通过扫码方式创建配置文件,Linux、macOS等系统可通过和Windows类似的方式新建WireGuard配置文件。

防火墙配置

由于我们配置了51820端口作为WireGuard UDP通信端口,所以需要在主路由中添加对应的端口放行规则。例如在OpenWRT中,在网络 → 防火墙 → 通信规则 中新建一条WireGuard通信规则:
notion image
源区域:WAN
源IP地址:不用填写
源端口:51820
目标区域:如果WireGuard部署在当前路由上,则选择输入,如果WireGuard部署在局域网内其他设备上,例如旁路由上,则选择任意区域(转发)
目标地址:选择WireGuard设备的IP地址,如果使用IPv6,则需要选择对应IPv6的地址。IPv6地址放行可参考:OpenWRT IPv6防火墙规则:如何放行客户端地址及端口 | Dolingou
目标端口:51820
操作:接收
 

Mihomo使用WireGuard

Mihomo目前已经能够还好的支持WireGuard协议,可在配置文件中增加type: wireguard 的配置项,同时可在规则中增加局域网网段的规则,从而自动分流局域网网段使用WireGuard。
理论上目前的FlclashClash Meta均可以正常使用。个人测试Flclash是没有问题的。

🤗 总结归纳

目前内容还没有完结,大部分主流的代理软件都已经集成了WireGuard协议,之后会进行这部分内容的补充,例如Mihomo等。
已基本完结。

📎 参考文章

 
💡
有关OpenWRT安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
小米15手机(澎湃OS2):如何关闭推荐广告OpenWRT 软件源整理
Loading...