组网:WireGuard

tlin82大约 2 分钟networkingnetworkingvpn

什么是WireGuard

是一个易于配置、快速且安全的开源 VPN,它利用了最新的加密技术。

WireGuard的优势

相比IPSec VPN,WireGuard更快又不失安全,适合小公司或家庭等廉价实现方案。

部署

前提条件

需要至少一个公网IP地址。另外,如果只有一个节点具备公网 IP ,则所有组网流量都需要通过这个公网 IP 的节点进行中转1台云主机(有公网IP地址)作为WireGuard的Hub服务器实现联网

拓扑

  • 拓扑选项1:中心化。

云主机作为WireGuard Gateway,其他站点(子网)都在NAT后面,没有公网IP地址 home(eth0,wg0) <--> ECS(eth0,wg0) <---> Office(wg0,eth0)

部署注意事项

  • 配置文件中的allowed IPs 是指允许路由的目标子网。添加后自动添加相应路由项的路由表.

  • 如果hub服务器是部署在云主机,注意云主机上需要放行WG的默认UDP端口51820

常用命令

  • 启动和停止wg tun网卡wg0
wg-quick down wg0
wg-quick up wg0
  • 启动和停止wg 的systemd服务
sudo systemctl stop wg-quick@wg0.service
sudo systemctl start wg-quick@wg0.service

示例配置

  • 1、中心WireGuard服务器配置
cat /etc/wireguard/wg0.conf

[Interface]
Address = 192.0.2.254/32
SaveConfig = false
DNS = 223.5.5.5
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <private-key-Hub-server>

[Peer]
PublicKey = <public-key-A>
AllowedIPs = 192.0.2.1/32,192.168.6.0/24,192.168.0.0/24,192.168.11.0/24
    1. WireGuard客户端配置示例
[Interface]
PrivateKey = <private-key-A>
Address = 192.0.2.1 #隧道IP地址
DNS = 192.168.0.24      #dns可以配置为内网dns服务器
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

#WireGuard Server/Gateway (tencent ecs with Public IP address)
[Peer]
PublicKey = <Public-key-Hub-server>
AllowedIPs = 192.0.2.0/24,10.0.20.6/22,10.188.0.0/24  
Endpoint = 1.2.3.4:51820   # ECS公网IP地址         
PersistentKeepalive = 10

进阶:使用Web GUI管理WireGuard配置

使用一些Web工具方便管理WirGuard的配置和公钥,自动生成配置。 具体参考配置参考open in new window