目标:实现将一个拥有固定 IP 的 VPS 和一个内网环境下的 OpenWrt 路由器 通过 WireGuard 建立隧道而相连,从而起到内网穿透的作用。
首先肯定得在路由器和 VPS 上分别安装 WireGuard:
# 在路由器上,安装后记得重启路由器:
opkg update
opkg install luci-app-wireguard
# 在 VPS 上:
# 参考 https://wiki.debian.org/Wireguard 找到适合你的操作系统的说明。
安装过后就是配置使用的阶段了。WireGuard 是对称加密的,所以应该为路由器和 VPS 分别生成各自的公钥和私钥,WireGuard在建立隧道的时候需要彼此的公钥才能工作。
# 在路由器端什么都不用管,将来 Luci 会自动生成
# 在 VPS 端执行:
cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey > publickey
正式配置:
进入路由器的 Web 管理页面,点击网络选项卡并点击接口,然后在找到下面的添加接口,点击进入。 新接口的协议应该选中 WireGuard VPN。如果这一步看不到 WireGuard 那就先重启下路由器;
设置的时候接口的名称可以随意,然后新建即可。
下一步开始修改这个接口的选项,点击生成密钥来生成刚刚提到的密钥对,然后设置一下期望的 IP 地址,路由器端的监听端口可以空下来不填:
然后点击保存,保存并应用。此时就可以在状态选项卡中的 WireGuard 看到现在的接口公钥了。把这行复制下来:
在 VPS 上编辑这个文件并保存修改:sudo nano /etc/wireguard/wg.conf
[Interface]
Address = 10.0.1.1/24
PrivateKey = <在 VPS 使用 cat /etc/wireguard/privatekey 获得 >
ListenPort = 12580
[Peer]
PublicKey = <把刚刚复制下来的那行粘贴进去>
AllowedIPs = 10.0.1.2/24
然后就可以用 wg-quick up wg
来启动 wg 了,如果是 Debian8 的话,要在启动之前执行一条:apt-get install linux-headers-uname -r
在路由器上,回到 WireGuard 的接口设置,选择 Peers (对端)选项卡:
点击添加对端并按照下图配置即可
填写完成后,保存并应用,两边的连接会立即建立。
建议把路由器上面创建好的 WireGuard 接口添加到防火墙的 lan 一侧。
在路由器上可以通过 Luci 的状态选项卡中的 WireGuard 来查看连接情况
在 VPS 上则可以通过 wg show
查看连接情况。