Linux之Wireguard使用指南

环境

Ubuntu 2204

安装

1
$ apt install wireguard

配置

配置文件可以放在任何路径下,但必须通过绝对路径引用。默认路径是/etc/wireguard/wg0.conf

操作

  • 启动:sudo wg-quick up wg0
  • 停止:sudo wg-quick down wg0
  • 状态:sudo wg show

使用

在中继服务器上开启 IP 地址转发:

1
2
3
4
$ echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
$ echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
$ echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
$ sysctl -p /etc/sysctl.conf

wireguard目录权限

1
2
3
4
5
6
# 给 WireGuard 足够的权限
$ cd /etc/wireguard/
$ chmod 0777 /etc/wireguard

$ # 调整目录默认权限
$ umask 077

生成密钥

1
2
3
4
#生成私钥
$ wg genkey > example.key
# 生成公钥
$ wg pubkey < example.key > example.key.pub

配置 WireGuard[服务端]

1
$ sudo nano /etc/wireguard/wg0.conf
1
2
3
4
5
6
7
8
9
[Interface]
Address = 10.0.0.1/24 # VPN内部的IP地址
SaveConfig = true
PrivateKey = <你的服务器私钥>
ListenPort = 51820

[Peer]
PublicKey = <客户端公钥>
AllowedIPs = 10.0.0.2/32 # 客户端的VPN IP地址

启动 WireGuard

1
2
3
4
5
6
7
8
#设置开机自启:
$ sudo systemctl enable wg-quick@wg0
#激活wg0的接口:
$ sudo wg-quick up wg0

# 自定义配置,启动与停止命令:
$ wg-quick up /full/path/to/wg0.conf
$ wg-quick down /full/path/to/wg0.conf
配置防火墙

WireGuard 默认是 (51820/UDP)端口,所以需要在防火墙中放行。

1
sudo ufw allow 51820/udp

配置 WireGuar[客户端]

每个客户端都需要其自己的配置文件,客户端配置类似服务器的配置。

  • [Interface] 部分包含客户端的私钥和分配给客户端的IP地址。
  • [Peer] 部分包含服务器的公钥、服务器的外部IP地址以及要路由到VPN到IP范围。

其他操作

VPN接口操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 启动/停止 VPN 网络接口
$ ip link set wg0 up
$ ip link set wg0 down

# 注册/注销 VPN 网络接口
$ ip link add dev wg0 type wireguard
$ ip link delete dev wg0

# 注册/注销 本地 VPN 地址
$ ip address add dev wg0 192.0.2.3/32
$ ip address delete dev wg0 192.0.2.3/32

# 添加/删除 VPN 路由
$ ip route add 192.0.2.3/32 dev wg0
$ ip route delete 192.0.2.3/32 dev wg0

添加 iptables 规则,允许本机的 NAT 转换

1
2
3
4
$ iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NEW -j ACCEPT
$ iptables -t nat -A POSTROUTING -s 192.0.2.0/24 -o eth0 -j MASQUERADE

参考