### WireGuard 要比OpenVPN、IPSec、ZeroTier、Ngrok等更优秀可靠
#### 第一步:准备工作
1. **阿里云 ECS 配置**:
- 确保 ECS 实例有一个**公网 IP**(无论是固定弹性IP还是临时分配的)。
- 在 ECS 的**安全组**中,放行 UDP 协议,端口号为 `51820`(WireGuard 默认端口,可自定义)。这是最关键的一步。
- (可选但推荐)为 ECS 实例设置一个**弹性公网 IP (EIP)**,避免重启后公网IP变化。
2. **软件安装**:
- **在阿里云 ECS (Linux) 上**:
bash
```
# Ubuntu/Debian
sudo apt update && sudo apt install wireguard
# CentOS/Rocky/AlmaLinux
sudo yum install epel-release
sudo yum install wireguard-tools
# 或者使用官方最新版本脚本
curl -o- https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh | sudo bash
```
- **在本地计算机上**:
- **Linux**:安装方式同 ECS。
- **Windows**:从 [官网](https://www.wireguard.com/install/) 下载并安装 WireGuard 图形化客户端。
- **macOS**:`brew install wireguard-tools` 或在 App Store 安装图形化客户端。
------
#### 第二步:生成密钥对
**在阿里云 ECS 和本地计算机上分别执行以下命令**,生成公钥和私钥:
bash
```
# 生成私钥
umask 077
wg genkey > privatekey
# 从私钥生成公钥
wg pubkey < privatekey > publickey
```
你会得到两个文件:`privatekey` 和 `publickey`。**私钥必须严格保密**,公钥则用于配置对端。
------
#### 第三步:配置 WireGuard
**1. 阿里云 ECS(服务端)配置**
创建配置文件:`sudo nano /etc/wireguard/wg0.conf`
ini
```
# /etc/wireguard/wg0.conf
[Interface]
# ECS 在 WireGuard 网络中的地址
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
# 本机的私钥 (ECS 的私钥)
PrivateKey =
[Peer]
# 本地计算机的公钥 (Peer_Public_Key_Here)
PublicKey =
# 允许来自这个 Peer 的流量访问本机
AllowedIPs = 10.0.0.2/32
# 如果本地计算机有固定公网IP,可以写在这里,否则留空(使用心跳保持连接)
# PersistentKeepalive = 25
```
**2. 本地计算机(客户端)配置**
- **Linux**:创建配置文件 `/etc/wireguard/wg0.conf`
- **Windows/macOS**:通过图形界面添加隧道,新建空隧道并编辑配置。
配置内容:
ini
```
# 本地计算机的 wg0.conf
[Interface]
# 本地计算机在 WireGuard 网络中的地址
Address = 10.0.0.2/24
# 本机的私钥 (本地计算机的私钥)
PrivateKey =
[Peer]
# ECS 的公钥 (ECS_Public_Key_Here)
PublicKey =
# 允许访问的网段:指向 ECS 的 WireGuard IP,以及希望通过 ECS 访问的其他 VPC 网段(例如 172.16.0.0/16)
AllowedIPs = 10.0.0.1/32, 172.16.0.0/16
# ECS 的公网 IP 和端口
Endpoint = :51820
# 非常重要!本地在 NAT 后,需要持续发送心跳包保持连接
PersistentKeepalive = 25
```
------
#### 第四步:启动并测试连接
1. **在阿里云 ECS 上启动 WireGuard**:
bash
```
# 启动隧道
sudo wg-quick up wg0
# 设置开机自启
sudo systemctl enable wg-quick@wg0
```
2. **在本地计算机上启动 WireGuard**:
- **Linux**:`sudo wg-quick up wg0`
- **Windows/macOS**:在图形化客户端中激活刚刚创建的隧道。
3. **测试连通性**:
- 在本地计算机上 ping ECS 的 WireGuard IP:
bash
```
ping 10.0.0.1
```
- 在 ECS 上 ping 本地计算机的 WireGuard IP:
bash
```
ping 10.0.0.2
```
- 检查 WireGuard 状态,查看是否握手成功:
bash
```
sudo wg show
# 如果输出中有 `latest handshake` 时间,说明连接成功!
```
------
#### 第五步:配置路由(访问 VPC 内其他资源)
如果你想让本地计算机能访问 ECS 所在 VPC 的其他机器(如内网 RDS、Redis 等),需做额外配置:
1. **在 ECS 上启用 IP 转发**:
bash
```
# 编辑 sysctl 配置
sudo nano /etc/sysctl.conf
# 取消注释或添加以下行
net.ipv4.ip_forward=1
# 使配置生效
sudo sysctl -p
```
2. **修改 ECS 的 WireGuard 配置**:
在 `[Peer]` 部分,修改 `AllowedIPs`,添加你希望本地能访问的 VPC 网段。
ini
```
# /etc/wireguard/wg0.conf (ECS 上)
[Peer]
PublicKey =
AllowedIPs = 10.0.0.2/32, 192.168.1.0/24 # 添加你的本地局域网网段(如果需要)
```
3. **修改本地计算机的 WireGuard 配置**:
在 `[Peer]` 部分,修改 `AllowedIPs`,添加 VPC 的网段。
ini
```
# 本地计算机的 wg0.conf
[Peer]
...
AllowedIPs = 10.0.0.0/24, 172.16.0.0/16 # ECS 的 VPC 网段
```
4. **添加 VPC 路由**(可选):
如果你希望 VPC 内的其他机器也能回包到你的本地计算机,需要在 VPC 的路由表中添加一条规则:目标网段为你本地局域网网段(如 `192.168.1.0/24`),下一跳指向你的 ECS 实例。
Comments | NOTHING