1. 前言:
wireguard是新型的异地组网工具,在此之前,又已经被抛弃的pptp,l2tp,有配置复杂的openvpn,wireguard被linux作者linus赞叹优雅,于linux 5.6合并至linux内核主线。
2. 安装过程:
也就是说,linux内核的版本最好大于5.6,如果自己有能力的话,可以尝试编译安装到低版本的linux,不过可能有难度,这里不予展示。
用群晖6.1.7(内核3)装了很久,折腾不太成功,还是装个虚拟机吧。
准备:
- 一个linux发行版主机或虚拟机(推荐最新版的)
我这里用的是sever版的乌班图22.04.
1. 更新软件包列表
sudo apt update
2. 安装wireguard软件包。
sudo apt install wireguard
嘎嘎回车就完了
3. 生成server端秘钥对
实际上,wireguard并不严格分服务端和客户端,这里我们为了清晰明了,一步步说明。
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
在 /etc/wireguard上生成公私钥。
4. 配置wireguard。
[Interface]
# 自己拿到的私钥,用于server
PrivateKey = OJgEAHoM/rtEFymO+Hd4M3gWu0KEL2AwpWeNiH+gllI=
# <选择您的VPN服务器IP地址和子网掩码,例如:10.0.0.1/24>
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
[Peer]
# 监听端口
PublicKey = Ue37eCIGJRLe1+ykp25LZIwXa3A3rxn4UnBrOrJxkWc=
#哪些IP地址或IP子网流量会通过WireGuard接口进行路由
AllowedIPs = 10.0.0.2/32
在wireguard新建隧道,把客户端公钥复制到,乌班图wg0中的peer中
PublicKey = Ue37eCIGJRLe1+ykp25LZIwXa3A3rxn4UnBrOrJxkWc=
客户端配置:
[Interface]
#客户端私钥
PrivateKey = CPBgcYmbJFQ7qV9TPQD8X3QIwbRsvtqaJnd39WvLU0c=
客户端地址
Address = 10.0.0.2/32
[Peer]
# 服务端地址
PublicKey = Xmuc5J54v7xShTqY4SVIcB5kBVZDEeLHyvOrQV6qyHo=
#哪些IP地址或IP子网流量会通过WireGuard接口进行路由
AllowedIPs = 0.0.0.0/0, ::/0
# 链接主机,一般填的话算做客户端
Endpoint = 172.28.61.92:51820
PersistentKeepalive = 25
5. 启动wireguard
#手动加载内核模块
sudo modprobe wireguard
#查看内核是否运行
lsmod | grep wireguard
6. 链接成功
7. 开启内核转发
如果你发现访问不了局域网设备,可能是没开启内核转发。
内核转发是计算机网络中非常重要的功能,它使得数据包能够在不同的网络接口之间正确传递,从而实现网络通信和数据交换
在安装和配置WireGuard时,有时需要启用内核转发(Kernel IP
Forwarding),以便正确地将流量从一个接口转发到另一个接口,从而实现VPN的正常工作。
3. 总结:
虚拟机可以通过路由开启端口转发,把51820映射一下,就可以通过外网访问家里的局域网了,不过感觉还是开个虚拟机太浪费了,再折腾一下,看看能不能直接装进低版本群晖里。