通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网

2024-04-24 13:58:12 29点赞 296收藏 33评论

本文首发于只抄博客,欢迎点击原文链接了解更多内容。

前言

之前有介绍过 Tailscale 与 ZeroTier 组网的方案,但这两者都属于第三方提供的服务,在部分地区的网络环境下,容易打洞失败,无法直连。

当你有公网 IPv6 时,可以直接使用 WireGuard 连接到局域网,而无需通过第三方的服务器进行打洞,延迟低,并且可以跑满本地的带宽。在使用 WireGuard 前,需要确保 IPv6 可以正常的访问,并且已经配置好 DDNS

WireGuard 配置完成后,设备连接到 WireGuard,就相当于连接到家庭局域网中,可以直接使用内网 IP 访问内网部署的服务。

局域网部署

安装 WireGuard

在局域网的任意一台设备上部署 WireGuard,由于直接部署 WireGuard 较为复杂,本文使用 wg-easy 这个 Docker 镜像进行部署,以下是 README 中的 Docker 启动命令,我们需要对其中的几项进行修改:

  • LANG: 语言,默认为英语

  • WG_HOST: IP 地址,填写 DDNS 的域名

  • PASSWORD: Web UI 界面的密码

  • WG_PORT: WireGuard 端口,默认为 51820

  • PORT: Web UI 端口,默认为 51821

  • sysctl: 由于我们使用的是 IPv6,还需要添加 net.ipv6.conf.all.forwarding=1

docker run -d --name=wg-easy -e LANG=de -e WG_HOST=<🚨YOUR_SERVER_IP> -e PASSWORD=<🚨YOUR_ADMIN_PASSWORD> -e PORT=51821 -e WG_PORT=51820 -v ~/.wg-easy:/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl="net.ipv4.conf.all.src_valid_mark=1" --sysctl="net.ipv4.ip_forward=1" --restart unless-stopped ghcr.io/wg-easy/wg-easy

修改后的配置如下 (更多配置项,可以参考 Github 中的 README):

docker run -d --name=wg-easy -e WG_HOST=<🚨YOUR_SERVER_IP> -e PASSWORD=<🚨YOUR_ADMIN_PASSWORD> -v ~/.wg-easy:/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl="net.ipv4.conf.all.src_valid_mark=1" --sysctl="net.ipv4.ip_forward=1" --sysctl="net.ipv6.conf.all.forwarding=1" --restart unless-stopped ghcr.io/wg-easy/wg-easy

添加 Client

  1. Docker 容器成功运行后,打开 http://ip:51821 端口,即可进入 Web UI

  2. 点击右上角的 New 按钮,任意输入一个名称,点击 Create

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网
  1. 在 Web UI 中显示即可,稍微可以在手机或者电脑上进行连接

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网

开放端口

如果有开启 IPv6 防火墙的,还需要在防火墙中放行 51820 端口,协议选择 UDP,Web UI 的 51821 端口无需放行

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网

Android / iOS

  1. 在 Web UI 中,点击二维码按钮,会展示一个二维码

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网
  1. 在 Play Store 或 App Store 中下载 WireGuard,然后点击右下角的 + 号,选择扫描二维码,即可成功添加

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网

Windows

  1. 在 Web UI 中,点击下载按钮,会下载一个 conf 格式的配置文件

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网
  1. 官网下载 WireGuard 安装包,点击“从文件导入隧道”,将刚才的文件导入即可

通过 WireGuard 与 IPv6 异地组网 实现远程访问局域网


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

展开 收起
33评论

  • 精彩
  • 最新
  • docker 跑v6 还上wg,你得hostnetwork 模式吧,不太建议这么搞! 实在想轻量化,可以lxc跑, 主机上跑其实也很简单。

    校验提示文案

    提交
  • 群晖这样安装报错啊

    校验提示文案

    提交
    [皱眉] 命令后面的 “\” 被大妈编辑器吞了,可以去Github或者原文里复制

    校验提示文案

    提交
    收起所有回复
  • 请教一下,"开放端口"那儿本地ipv6地址怎么填,图中打码了?不胜感激

    校验提示文案

    提交
    如果是梅林系统的话 按 0::a:b:c:b/0::ffff:ffff:ffff:ffff 这种格式填
    不同的路由器系统写法可能会不太一样

    校验提示文案

    提交
    非常感谢,我用的也是华硕,非常感谢

    校验提示文案

    提交
    收起所有回复
  • 两台华硕路由器,一个wireguard服务器,一个客户端,是不是两台路由器下面的设备就可以内网互访了?

    校验提示文案

    提交
    可以的 华硕路由器可以直接看华硕的文档 写的很详细 [棒棒哒]

    校验提示文案

    提交
    谢谢,周末研究一下

    校验提示文案

    提交
    收起所有回复
  • 不是,两边都ipv6了,还整啥?

    校验提示文案

    提交
    不暴露那么多端口链接,我 NAS 上很多软件比如说 tr 和 qb 就用这个远程访问

    校验提示文案

    提交
    [高兴] 端口暴露并不可怕,对方登录5次直接封了对方ip,家庭网络搞强密码ip比啥都管用,没人会定向突破你家庭网络,都是扫端口+撞库罢了

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 双边都有ipv6用这个干啥

    校验提示文案

    提交
    安全,内部一些服务设置只能内网访问,用这个连上去就不用外部暴露太多服务了

    校验提示文案

    提交
    [高兴] 都这么讲究安全了,难道连个企业专线都没?还在用家宽?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 套件中心有没有?

    校验提示文案

    提交
  • 就想问,这样在局域网部署了之后,异地连接上能否访问局域网的其它机器。
    如A、B两地,A地局域网中有机器x、y,x安装上wg;B地的z机连接上wg后,能访问y吗?

    校验提示文案

    提交

    o_O2

    只抄

    作者
    好吧。下次研究下能不能转发实现这个功能,如果成功,用处好大呀

    校验提示文案

    提交
    主路由安装wg试试呢

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • openwrt路由里面装一个wireguard协议就可以了,对端配置设置下就可以访问本地局域网了

    校验提示文案

    提交
    能不能用对端做出口?

    校验提示文案

    提交
    这个我只有外面回家的需求,没试过。

    校验提示文案

    提交
    收起所有回复
  • 有没有遇到连上了几乎没有速度的情况,同一个节点换手机同网络跑飞起的情况 [大囧]

    校验提示文案

    提交
  • 遇到一个问题,wireguard连上之后,所有的ipv6网站都打不开了,怎么办

    校验提示文案

    提交
  • 一定要DDNS吗?IPV6网址不行吗?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

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