wireguard-说明和使用
简介
WireGuard 是一种及其简单但快速且现代的 VPN 协议.
安装
安装 wireguard-tools 包:
1 |
|
systemd-networkd 和 NetworkManager 都为 WireGuard 接口设置提供原生支持.
使用
使用 ip link
显示的 wg0
就是 wireguard.
在 peer 上生成公钥和私钥
peer 就是那两台建立了隧道的主机.
1 |
|
基本检查
不带任何参数使用 wg 命令可以快速查看当前的配置.
1 |
|
此时可以 ping 通隧道的另一端.
配置持久化
可以用 showconf
来保存:
1 |
|
示例
1 |
|
配置一个 VPN 服务器
WireGuard 自带一个快速创建和销毁 VPN 服务器的工具 – wg-quick
.
具体配置见 ArchWiki.
需要配置服务器端和客户端.
客户端的 IP 需要和 wg0server.conf
中的子网掩吗相同.
使用 wg-quick up wg0
来启用 Interface, 使用 wg-quick down wg0
来关闭.
使用 systemctl enable wg-quick@wg0
来自动启动.
如果使用 NetworkManager, 可能有必要启用 NetworkManager-wait-online.service.
查看网络连接
1 |
|
参考 B 站
VPN, Virtual Private Network 的作用是保证访问的私密. 对数据进行加密, 校验.
wireguard 是一种 VPN 技术. 其可以让连接的设备以为自己处于同一个内网中. 从上面的示意图可以看出, 这个虚拟的内网是由 wireguard 链路连接的.
wireguard 并不区分客户端和服务器端.
在任何设备上如果安装了 wireguard 都会被视为一个节点. 其既可以连接其他设备也可已被其他设备直接连接.
也就是说, 用一台拥有公网 IP 的服务器作为连接点, 使得所有连接到这台服务器的主机都可以通信.
Ubuntu 上的手动操作 (具体看文档, 已拉取到本地)
安装:
1 |
|
开启 ipv4 转发, 使该服务器能够成为一个转发的服务器:
1 |
|
可以通过 sysctl -p
查看是否设置成功.
wireguard 的配置文件位于 /etc/wireguard
生成服务器上的密钥对
每一个节点需要生成一对密钥.
1 |
|
最后一行是根据私钥来创建公钥.
生成客户端的密钥对
是在服务器上生成.
和上面同样的操作.
修改配置文件
[Interface]
配置的是虚拟网卡的信息.
监听端口用来判断 client 的连接.
每添加一个 peer 都要在 server 的配置文件中添加 [Peer]
块.
客户端的配置和服务器端的配置类似.
重新设置了配置文件, 需要重启 wireguard, 利用 down 和 up.
客户端的 IP 需要在 服务器端设置 (这里的 IP 是虚拟 IP).
Endpoint 是设置对端也就是服务器的 IP 和端口. 其实是我们被其他节点主动连接的时候所使用的 IP. 设置 server 是因为 server 是被主动连接的.
wireguard 使用的是 UDP 协议.
连接之后两台主机就可以通话了.
可以用 wg
命令来查看 wireguard 的连接状况.
keepalive 是尝试重连.
搭建了内网穿透就可以直接连接远端没有公网 IP 的服务器.
利用 Docker 搭建
github 相关页面
其生成的配置文件是 client 的.
在有公网的服务器创建一个 Docker, 然后用这个 Docker 访问控制页面.
手机连入
可以用手机客户端扫二维码.
自己尝试
手动配置
按照上面 司波图 的博客内容可以成功搭建.
docker
出了些小问题.
结果是我服务器的端口开放错误, 开放了另一个端口.
按照教程即可完成.