WireGuard
使用步骤
- 使用
wg genkey
和wg pubkey
在每个节点创建公钥和私钥 - 配置
- 主中继服务器(main relay server)
[Interface]
- 确保在定义服务器可接收的路由地址时,指定整个 VPN 网络的 CIDR 范围
Address = 192.0.2.1/24
- 确保在定义服务器可接收的路由地址时,指定整个 VPN 网络的 CIDR 范围
[Peer]
- 为每个需要加入到 VPN 网络的客户端创建一个
[Peer]
,使用对应的公钥(public key)
- 为每个需要加入到 VPN 网络的客户端创建一个
- 客户端节点(client node)
[Interface]
- 指定单个 IP,不中继流量
Address = 192.0.2.3/32
- 指定单个 IP,不中继流量
[Peer]
- 为每个可以公开访问的 Peer 创建一个
[Peer]
- 在定义作为跳板服务器(Bounce Server)的远程对等体时,确保为整个VPN子网指定一个CIDR范围
AllowedIPs = 192.0.2.1/24
- 确保为不中继流量且仅充当简单客户端的远程对等点指定单独的 IP
AllowedIPs = 192.0.2.3/32
- 为每个可以公开访问的 Peer 创建一个
- 启动中继节点
wg-quick up /full/path/to/wg0.conf
- 启动客户端节点
wg-quick up /full/path/to/wg0.conf
- 主中继服务器(main relay server)
准备
Ubuntu
1 | sudo vim /etc/sysctl.conf |
配置
字段
AllowedIPs
: 路由目的网络
1 | 安装 |
命令
跳板服务器开启中继和转发
1 | echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf |
生成公钥、私钥
1 | generate private key |
启停
1 | wg-quick up /full/path/to/wg0.conf |
注意
- 如果一个节点在 NAT 内,在配置远端 Peer 时需要配置
PersistentKeepalive
,这样远端 Peer 才能访问当前 Node
1 | [Peer] |
其他
预设
1 | vpn 网络 |
配置模板
1 | [Interface] |
1 | [Interface] |
服务
1 | systemctl start wg-quick@wg0 |
客户端配置
1 | 重新生成密钥和公钥 |
1 | 重新生成密钥和公钥 |
服务端添加 Peer
1 | wg set wg0 peer {client-public-key} allowed-ips 10.110.10.100 |
访问 Local Network
1 | PostUp = ufw route allow in on wg0 out on eth0 |
注意以下配置
1
2
3
4
5
6
7
8 sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
sudo sysctl -p
sudo ufw allow 51820/udp
重启 ufw
sudo ufw disable
sudo ufw enable
常见问题
无法访问远端内网
首先,客户端配置远端地址段。
1 | [Peer] |
其次,配置远端服务器网络 forward。
1 | sudo vim /etc/sysctl.conf |
参考
端口连通性判断
1 | nc -z -v -u 127.0.0.1 51820 |
Debug
1 | sudo wg show |