




















接上篇文章,继续折腾家庭网络:如何玩转智能家居 - 网络如何智能openwrt+v2ray。
本篇文章解决问题是:如何通过配置wireguard实现从世界任何地方优雅的访问家庭网络。我们在家庭网络使用场景汇总一定会遇到以下情况,人在外:
这些场景的基本需求是:安全性一定要有保障,能够在外网连接到家庭网络(不是简单的内网穿透,而是组成大局域网)。
答案不言而喻,组建vpn。那么问题来了,用什么vpn,如何连接到家庭网络:
本篇文章的目的是:通过vpn的形式使得在外网如同访问家庭内部局域网一样,让外部设备与家庭网络中的设备形成一个局域网。
那为什么选择wireguard:
网络架构:

博主目前设计的网络架构如上图,不过本篇文章只讲 光猫<->AC<->R2S 这样的链路:
光猫:192.168.1.1
AC(主路由):192.168.2.1
R2S(旁路由):192.168.2.100
这里的R2S我们作为旁路由来使用,什么是旁路由请自行搜索资料。简而言之,家庭内大多数网络均走AC主路由,部分走旁路由(翻墙),旁路由的(折腾)挂掉不会导致整个家里网络中断。
由于博主家庭网络没有公网IP,动态IP也没有,因此这里找了一台云服务器作为中转(非UDP打洞,中转方式会消耗云服务器流量,请悉知)。当然也可以用基于wireguard现成的方案,如tailscale,免费应该够用(有设备限制)。
这里假设你已经准备好已经准备好openwrt路由器。我们还需要准备:
一个公网IP:或是家里自带公网IP+DDNS,或是购买一台公网服务器VPS
一个域名:可选,如果你的公网IP是动态的,那就需要域名且必须通过DDNS
因为博主家里没有公网IP,那么只能通过这种内网穿透的方式实现,将wireguard的udp端口通过代理的方式暴露到外网,如果有公网IP跳至下一步。
1、在vps上安装frps服务端,请到 frp/releases 下载对应架构的最新版本即可,解压到服务器。
服务端配置:
[common]
bind_port = 7000
token = 768f72bc664ad2ad7c9edccf65523fd7
其中 token 是用来鉴权客户端的,请重新生成。bind_port 指定 frps 监听的端口,云服务器需要放开该端口的访问。
2、在openwrt安装frpc客户端,请到 System->Software 搜索 frpc 安装。

完成后进行配置:假设这里我们选择端口 51820/udp 作为wireguard的通信端口,IP 10.0.0.1作为wireguard的网关IP。

我这边的 /etc/config/frpc 配置如下,你可对应着在网页上进行修改:
config init
option stdout '1'
option stderr '1'
option respawn '1'
option user 'root'
option group 'root'
config conf 'common'
option server_port '7000'
option tls_enable 'false'
option server_addr '<server_ip>'
option token '768f72bc664ad2ad7c9edccf65523fd7'
config conf 'ssh'
option name 'wireguard'
option type 'udp'
option use_encryption 'false'
option use_compression 'false'
option local_ip '10.0.0.1'
option local_port '51820'
option remote_port '51820'
记得将 server_ip 替换成frps的地址,如果不出意外的,openwrt中的frpc已经跑起来了。
WireGuard是点对点的网络,每个节点既可以做服务器,又可以做客户端。我们这里将部署在openwrt中的wireguard节点称为服务端,在手机或电脑端部署的wireguard节点称为客户端。更多安装方式:https://www.wireguard.com/install/。
整体步骤如下:
1、编辑LAN口,设置上游网关信息:


2、配置DNS:

3、关闭SYN-flood保护,开启动态IP伪装

1、在openwrt中安装wireguard建议通过System->Software进行安装:

安装完成,重启路由器。同时你也会看到 Status->WireGuard:

需要了解细节的朋友可以参考官方 Quick Start,我们这里通过openwrt进行wireguard服务端配置。
1、点击 Network->Interface 中的 Add new interface 创建接口:

2、接口名称建议 wg0,协议选择 WireGuard VPN 进行创建:

3、一般设置:
Private Key 是WireGuard节点的私钥,可通过 Generate Key Pair 生成,也可手动生成:
# 通过ssh登录到openwrt,执行
$ wg genkey | tee privatekey | wg pubkey > publickey
$ cat privatekey publickey
Listen Port 监听的端口,这里设置为 51820 与 frpc 配置对应即可。
IP Addresses 是WireGuard接口的私有IP网段,这里设置为 10.0.0.1/24 与 frpc 配置对应,不要与其它内网IP段冲突。

4、防火墙设置,有 vpn 选 vpn,无则选 lan:

最后 Save,保存即可,后续再步骤添加 Peers。
首先,通过这里的安装方式进行客户端的安装:https://www.wireguard.com/install/,我这里以iOS举例。
1、点击 创建隧道->手动创建:

2、填写基本信息,主要填写下面三项,其它默认:
生成密钥对 随机生成即可。10.0.0.1/24。
3、通过 添加节点 添加服务器信息:
192.168.100.0/24,192.168.2.0/0,10.0.0.0/0。这样当开启wireguard vpn之后访问这些IP就会走vpn网络。
到了这一步,客户端已经完成配置了。但是服务端还没有,因为wireguard本质上是一个P2P通信的软件,我们还要将客户端公钥信息配置到服务端才行。
在openwrt配置wireguard peer信息。

填写刚才配置的客户端信息,Save 保存即可:

现在在手机上开启 vpn,尝试访问一下路由器地址 192.168.100.1 是否可行。

1、客户端如何访问openwrt的下一级路由的服务,如这里如何访问 192.168.2.x 服务:
因为路由器作为openwrt的下一级路由,openwrt是不知道如何到达 192.168.2.x 这个网段的。因此需要添加一条静态路由:

2、如何所有流量都走wireguard,并且可以通过之前设置的v2ray进行科学上网:
请参考:https://www.wireguard.com/netns/#routing-all-your-traffic。
3、不用开启端口吗,很多教程上面需要开启路由器端口?
开启端口,一般是指我们路由器有公网IP,通过ddns方式对外暴露端口的时候需要开启。
[1] https://github.com/WireGuard
[2] https://www.wireguardconfig.com/
本文链接:https://deepzz.com/post/openwrt-and-wireguard-connect-homenet-anywhere.html,参与评论 »
--EOF--
发表于 2022-11-20 23:45:00,并被添加「家庭网络、openwrt、wireguard、vpn」标签,最后修改于 2023-02-24 16:22:19。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。更多说明 »
提醒:本文最后更新于 1205 天前,文中所描述的信息可能已发生改变,请谨慎使用。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。