环境
Ubuntu 2204
安装
配置
配置文件可以放在任何路径下,但必须通过绝对路径引用。默认路径是/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 SaveConfig = true PrivateKey = <你的服务器私钥> ListenPort = 51820
[Peer] PublicKey = <客户端公钥> AllowedIPs = 10.0.0.2/32
|
启动 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
|
参考