异地OpenWRT路由器+Wireguard组网


我做这件事情最主要的原因是在老家有一台服务器,上面有Plex服务器,有公网IP,想异地用Infuse内网观看视频。Infuse直接公网访问Plex我没有试成功。

为了不产生冲突,Wireguard VPN使用IP段10.0.0.1/24,跟服务端和客户端的网段都不一样。

通用部分

安装Wireguard

opkg update
opkg install luci-i18n-wireguard-zh-cn

重启路由器之后就能在添加网口的时候看到Wireguard VPN选项了。

如果不成功的话可能需要换源,过程类似下面这篇:

服务端

  • 这一端需要有公网IP
  • 我在这一端的IP段为10.0.1.1/24

我用的是iStoreOS,在侧边栏找到网络->接口->添加新接口。

名称可以随便取,协议选Wireguard。

创建成功之后在常规设置里面生成新的密钥对,然后把10.0.0.1/24添加到IP段里,这个会用作Wireguard VPN的网段。

在防火墙设置里新建一个防火墙区域,比如我这里网口叫wg_server,防火墙区域叫wg。

接下来去网络->防火墙->常规设置,在这里面设置成下图这样的。(特别注意wg是怎么设置的)

然后在网络->防火墙->通信规则里面加一条Allow-Wireguard的记录

接下来去网络->防火墙加一条端口转发

现在服务端已经正常运行了,可以添加Peer(对端)了。Wireguard必须得在服务端添加客户端的公钥,客户端才能正常连接上。

去网络->接口->wireguard网口的配置里,找到最后一个项目“对端”,点进去然后点添加对端。

里面最主要的是生成密钥对,然后在允许的IP地址里面加上比如10.0.0.32/32(只要在10.0.0.0/24网段内就可以),这是对端连接要用的IP地址。完成之后可以点生成配置,复制之后等会可以在客户端使用

[Interface]
PrivateKey = 6PcRVWhepbMg/+C96YU91ZMYNFxsE6HvkwAlOqIMa0o=
Address = 10.0.0.32/32
# ListenPort not defined
DNS = 10.0.1.1

[Peer]
PublicKey = OBsxuRxkw8RrCEza7QlCM4ssOTvZJbVGygSq0DLfmAU=
# PresharedKey not used
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = ip:51820
# PersistentKeepAlive not defined

客户端

  • 这一端公网IP可有可无
  • 我在这一段的内网IP端为192.168.101.1/24

TODO

跟服务端很像,可以参考这个和Reference中的2和3,在客户端添加对端的时候勾选“路由允许的IP“很重要。

References

  1. http://aizuda.com/article/1088753#head0.3.3
  2. https://www.cnblogs.com/milton/p/16124871.html
  3. https://www.youtube.com/watch?v=0_zQAp3V18c

Leave a Reply

Your email address will not be published. Required fields are marked *