前提
1. 教程基于Debian 11制作。
2. 使用root用户执行命令。
3. Wireguard是点对点的,没有客户端服务端之分。教程的服务端指等待连接的设备,客户端指主动连接设备。
Wireguard安装
## 安装wireguard软件
apt install wireguard resolvconf -y
## 安装iptables软件
apt-get install iptables -y
## 安装openresolv软件包
apt-get install openresolv -y
#开启IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
权限设置
cd /etc/wireguard/
chmod 0777 /etc/wireguard
#调整目录默认权限
umask 077
密钥生成
服务端密钥
#生成私钥
wg genkey > server.key
#通过私钥生成公钥
wg pubkey < server.key > server.key.pub
客户端密钥
#生成私钥
wg genkey > client1.key
#通过私钥生成公钥
wg pubkey < client1.key > client1.key.pub
服务器配置文件(wg0)
在WireGuard配置文件中,常见的选项包括:
1. [Interface] 部分的选项:
- Address:本地接口的IP地址和子网掩码。
- PrivateKey:本地接口的私钥。
- ListenPort:本地接口监听的端口号。
- PostUp:在接口启动时执行的命令或脚本。
- PostDown:在接口关闭时执行的命令或脚本。
2. [Peer] 部分的选项:
- PublicKey:对等方的公钥。
- Endpoint:对等方的IP地址和端口号。
- AllowedIPs:允许通过该连接的IP地址范围。
- PersistentKeepalive:持续的保持活动性检测间隔。
3. 其他通用选项:
- DNS:用于域名解析的DNS服务器的IP地址。
- MTU:数据包的最大传输单元大小。
实例wg0.conf:
[Interface]
## 填写本机的privatekey 内容
PrivateKey = <本地私钥>
#本机wg虚拟局域网IP
Address = 10.0.0.254/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT;
PostUp = iptables -A FORWARD -o wg0 -j ACCEPT;
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT;
PostDown = iptables -D FORWARD -o wg0 -j ACCEPT;
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
## 添加iptables规则:允许通过wg0接口的输入和输出流量。
## 添加iptables规则:对通过eth0接口出去的流量进行源地址转换(MASQUERADE)。
## UDP监听端口
ListenPort = 59527
DNS = 223.5.5.5
## 默认1280
MTU = 1420
[Peer]
## 对端公钥
PublicKey = <对等方公钥>
## 对端wg虚拟局域网IP和监听端口
Endpoint = <对等方IP地址>:<对等方端口号>
## 允许访问的ip地址范围
AllowedIPs = 10.0.0.1/24,172.16.18.0/24
## 保持活动性检测间隔时间,单位秒
PersistentKeepalive = 15
设置wg开机启动
systemctl enable wg-quick@wg0
启动/关闭 wg
#启动wg0
wg-quick up wg0
#关闭wg0
wg-quick down wg0
客户端
下载
https://www.wireguard.com/install/
配置文件
[Interface]
PrivateKey = <本地私钥>
Address = 10.0.8.10
[Peer]
## 对端公钥
PublicKey = <对等方公钥>
## 对端wg虚拟局域网IP和监听端口
Endpoint = <对等方IP地址>:<对等方端口号>
## 允许访问的ip地址范围
AllowedIPs = 10.0.8.10/24,192.18.10.1/24
## 保持活动性检测间隔时间,单位秒
PersistentKeepalive = 15