OpenWRT+Wireguard打通异地局域网

2024-05-05 19:24:14 47点赞 453收藏 72评论

背景:

稿主自己家的宽带是上海电信129融合套餐,网龄升级到1000m下行100m上行的速度。早年申请了一个公网IP,配合DDNS可以做各种远程操作。
老爸家的宽带是上海电信的一个维系套餐,100m下行20m上行,价格太便宜了不好意思去申请公网IP。所以本文的目的就是把两个内网通过wireguard vpn打通,这样可以远程操作老爸家的设备。

题外话1:Wireguard速度是openvpn的3倍以上。
题外话2:freshtomato和ddwrt也可以配Wireguard,但是都没openwrt好用。因为openwrt可以直接把隧道接口拉到lan的防火墙区域里,而那两个都要命令行配置路由表和iptables转发。
题外话3:网上看到的教程都是早年wireguard刚集成的时候通过命令行配置的,现在openwrt 23的版本可以全部在luci里完成配置。


先上一张拓扑图。配置完成后图里的所有设备都可以通过内网IP直接互访

OpenWRT+Wireguard打通异地局域网

自己家的路由器是现在最火的RAX3000M,下面简称主路由器。上面还挂了一个500G usb ssd做bt下载用。
老爸家的路由器是小米R3G,下面简称副路由器。

刷机过程略过,网上教程很多。两个路由器现在都是openwrt/immortalwrt 23版本。
首先两个路由器都需要安装wireguard支持,在软件包页面更新列表,然后搜索wireguard,安装它的luci组件,其他需要的东西都会作为依赖自动安装。安装完需要重启路由器

OpenWRT+Wireguard打通异地局域网

主路由器配置:

首先设置DDNS,我用的是freedns。这不是本文重点,所以细节略过。

OpenWRT+Wireguard打通异地局域网

然后在网络->接口里面,点击添加新接口。给它取个名字,协议选wireguard vpn。

OpenWRT+Wireguard打通异地局域网

然后编辑这个新接口。在常规设置里点击"生成新的密钥对"来生成密钥,端口填一个非常规的数字,wireguard默认是51820。IP地址选一个私有网段,我填的是11.10.0.1/24。

OpenWRT+Wireguard打通异地局域网

高级设置和DHCP服务端都不需要动。在防火墙设置里,把这个接口放进lan区域

OpenWRT+Wireguard打通异地局域网

在对端里面,添加一个新的对端。点击"生成新的密钥对"和"生成预共享密钥"。
允许的IP第一行是副路由器的wireguard隧道IP,第二行是副路由器的内网网段。
路由允许的IP要勾上,否则主路由器的内网网段无法访问副路由器的内网网段。
因为副路由器没有公网IP,端点主机和端点端口都留空,keep-alive填25。

OpenWRT+Wireguard打通异地局域网

主路由器配置已完成,保存。然后再编辑进来,点击生成配置。
这个配置里面默认是全流量走隧道,我们只希望访问主路由器内网的时候走隧道,internet访问还是走原有的路由。所以把允许的IP改成wireguard隧道网段和主路由器内网网段。
把DNS服务器去掉。地址也只留副路由器的隧道IP。连接端点选最开始配的DDNS地址。
右下角会生成一段配置脚本,拷贝下来,等会儿副路由器配置用。

OpenWRT+Wireguard打通异地局域网

最后在防火墙的通信规则里,要添加一条,允许wireguard连接入站。

OpenWRT+Wireguard打通异地局域网

副路由器配置:

跟主路由器一样的添加一个wireguard接口,然后不需要配置,只需要点击这个加载配置

OpenWRT+Wireguard打通异地局域网

然后在这个窗口里,把前面拷贝下来的配置贴进去,导入

OpenWRT+Wireguard打通异地局域网

最后设一下防火墙区域,就ok了。

现在在主路由的器的wireguard状态里面,应该能看到副路由器过来的连接握手了。

OpenWRT+Wireguard打通异地局域网

现在两个内网已经完全打通,可以直接互访。在老爸家从主路由器上挂的ssd上拷贝东西,跑满了100m上行带宽。

OpenWRT+Wireguard打通异地局域网

老爸家的电视机,在kodi里面可以直接播放我自己家的nas里的内容

OpenWRT+Wireguard打通异地局域网

手机设置

我的手机是安卓机,需要翻墙去play store下载wireguard客户端。
果机的话,我看了一眼我同事的,中国appstore里面也没有wireguard,可能需要特殊手段上外面的appstore下载。

首先在主路由器里面再添加一个对端,为它生成新的密钥,分配一个新的ip地址。也把配置生成出来。

OpenWRT+Wireguard打通异地局域网

然后要在防火墙添加一条nat规则,所有从wireguard隧道访问副路由器内网的请求,都由主路由器做SNAT转发。

OpenWRT+Wireguard打通异地局域网

最后在手机客户端里导入这个配置,注意路由的IP段要把两个内网的网段都填上。

OpenWRT+Wireguard打通异地局域网

好了,现在随时随地都可以访问两个家庭的内网了。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
72评论

  • 精彩
  • 最新
  • 我直接在公网路由上面开v2ray服务器,然后客户机直接开启v2ray连接,也能实现内网访问。

    校验提示文案

    提交
    本文的重点是反过来,由公网路由中转去访问无公网地址的内网。。
    而且你看我一行命令行都没打

    校验提示文案

    提交
    赞你,前几天看命令教程已退堂,现在重新学你的方法 [欢呼]

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 速度能达到带宽的满载吗?我用OPENVPN在国内最快只能不到30M,现在就想用WireGuard,看能不能跑满带宽

    校验提示文案

    提交
    我之前路由器用的wndr3700v4,cpu是560mhz的ar9344,用openvpn速度是15mbps,用wireguard速度是70mbps

    校验提示文案

    提交
    收起所有回复
  • 我有一台公网服务器,有两个家庭路由器A和B,分属不同位置,我现在想让A通过B访问外网,即A显示的公网IP是B的,使用wireguard协议能搞定吗?

    校验提示文案

    提交
    好奇怪的需求。用frp加代理服务器吧

    校验提示文案

    提交
    我也是最近有这个需求 不太懂哈 像你这个位置说的:“这个配置里面默认是全流量走隧道”,后面的配置不动是不是就可以?

    校验提示文案

    提交
    收起所有回复
  • 防火墙的通信规则里,要添加一条,允许wireguard连接入站在我的路由上不起作用,要改成anyzone才行。

    校验提示文案

    提交
  • 家里ax86u两台,亲戚朋友家里75块钱的arris1900,zerotier完美组网,同时6个外网看我家里emby服务器上的美剧不卡,快进可以秒播,家里宽带上行20m带宽。

    校验提示文案

    提交
  • 组异地局域网我用tailscale 配置比较简单 wireguard我用来手机连路由器 路由器上用wg-easy的docker生成配置 比手动配置要方便多了

    校验提示文案

    提交
    要说简单的话,我还是觉得几十块钱一个的蒲公英异地组网旁路由更简单一点,毕竟也就几十块钱,用手机APP就能远程设置

    校验提示文案

    提交
    收起所有回复
  • 有亿点点高级 [口水] 夸市不跨省的电信能用不

    校验提示文案

    提交
    只要你有一端有公网ip,全世界任何地方都能用,无非是速度和延迟的问题。。

    校验提示文案

    提交
    收起所有回复
  • 和zerotier区别是啥

    校验提示文案

    提交
    zerotier是没有公网ip的解决方案之一,由有公网ip的moon服务器帮你协调双方udp打洞。有公网ip的时候,当然是wireguard更方便高效了。

    校验提示文案

    提交
    收起所有回复
  • 经常开始握手成功几十秒,然后就断了

    校验提示文案

    提交
    keep alive设了没?nat后面的设备一定要设这个参数,否则一段时间后udp通道会关闭的,然后就只能单向发起通讯了

    校验提示文案

    提交
    是的。设置过关闭,设置过25,也设置过0,而且是学校内网跨网段组网,能ping通,后面改用l2tp可以用,不知道是不是istore的wg问题,没试其他平台上的wg

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • istoreos死活装不上wg,又怕把家里网络给整趴下了,不敢大折腾,只能退而求其次用openvpn,感觉也还行。

    校验提示文案

    提交
    openvpn主要是太慢了。。我拿560mhz的ar9344跑openvpn,只能跑到15mbps,换成wg就是70mbps。然后淘了一个二手r3g,跑满100mbps,舒坦了。
    而且openvpn设置固定ip极其麻烦,还是openwrt+wg方便,全部在网页里点。

    校验提示文案

    提交
    刚折腾完openV,看看这个,回头试试去,收藏了,谢谢

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 只有ipv6公网可以用吗?你这国外100m的上行带宽有点猛啊 [赞一个]

    校验提示文案

    提交
    可以,ddns找一个支持ipv6的就行了

    校验提示文案

    提交
    哦另一端也得支持ipv6

    校验提示文案

    提交
    收起所有回复
  • 为什么你这个op有生成密匙功能。。。没有到要怎么搞

    校验提示文案

    提交
    我刷的最新的23.05就直接有啊,没有特殊操作

    校验提示文案

    提交
    命令行 wg genkey 和 wg pubkey

    校验提示文案

    提交
    收起所有回复
  • wg最大的问题是会被运营商流控,要配合udpspeeder和tcpraw才好用

    校验提示文案

    提交
    我用了几个月了,目前为止都是可以跑满100m上行。。

    校验提示文案

    提交
    你们运营商比较人道

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 3-4地方怎么配置呢?

    校验提示文案

    提交
    最后那个nat规则多加几条就行,哪里不通加哪里

    校验提示文案

    提交
    收起所有回复
  • 大佬,我的主副路由型号和你一模一样,路由器系统和你一模一样,严格按照你的操作,怎么副路由只有发包没有收包呢?你副路由的最后一步“配置一下防火墙区域”怎么配的?放在LAN区域还是WAN区域啊?副路由的防火墙里也要加通信规则吗?

    校验提示文案

    提交
    放在lan里。这一步只影响连接后的防火墙转发表。你现在是连不上,确认ddns是否正常,确认主路由的udp端口没有被防火墙屏蔽

    校验提示文案

    提交
    收起所有回复
  • 楼主你好 我折腾WG一个礼拜了,今天总算是看到曙光了,我A端电信公网,B端移动大内网(换了几处不同的网络),目前的状态是B端可以访问A端网段下的所有设备,但是A端却不能访问B端,实在找不到思路排查了,能否指点一下,感激不尽!

    校验提示文案

    提交
    你用的是openwrt吗?是的话防火墙区域设一下就可以了

    校验提示文案

    提交
    正如我的网络结构,B端是没有公网的,这种情况下A端也是能访问B端吗?我A端用的是openwrt,但是wg服务不在openwrt(192.168.10.1)里,是跑在unraid(192.168.10.2)里,这种结构是不是需要在路由下面做什么设置?如果实在不行只有把服务跑在openwrt里了。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 你好,我如果要和我HK办公室的路由器组网,是不是可以实现科学上网了?应该怎么样设置呢?

    校验提示文案

    提交
    组网完成之后,在外面的内网里开个代理服务器

    校验提示文案

    提交
    如果不组网的话,可以在外面的路由器里面直接设置VPN转发吗?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 副路由器中,导入文件,设置防火墙为LAN口后,接口创建成功,但是状态一直是:尚未成功握手,同一个文件用在PC上是没问题的,可以直接通过客户端导入使用,请问还需要有什么其他注意的内容吗?

    校验提示文案

    提交
    keepalive=25填了吗

    校验提示文案

    提交
    收起所有回复
  • 永远不考虑udp,运营商qos太不稳定了

    校验提示文案

    提交
  • 谢谢!之前看了其他不会弄

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
453
扫一下,分享更方便,购买更轻松