第一步:创建并编辑脚本文件#
在 Ubuntu 终端中执行以下命令,创建一个名为 setup_vpn.sh 的文件:
第二步:复制完整脚本代码#
在打开的编辑器中,粘贴以下全自动脚本代码(代码中已自动处理交互确认,无需手动按回车或输入 yes):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| #!/bin/bash
set -e
echo "=== 1. 更新软件源并安装 OpenVPN ==="
sudo apt update
sudo apt install -y openvpn easy-rsa iptables curl
echo "=== 2. 配置 PKI 并生成证书 ==="
rm -rf ~/openvpn-ca
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
# 初始化 PKI 并自动签发 CA
./easyrsa init-pki
./easyrsa --batch build-ca nopass
# 生成并自动签发服务端证书
./easyrsa --batch gen-req server nopass
./easyrsa --batch sign-req server server
# 生成 Diffie-Hellman 参数和 TLS 密钥
./easyrsa gen-dh
openvpn --genkey secret ta.key
# 复制证书到 OpenVPN 目录
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/server/
echo "=== 3. 写入服务端配置文件 ==="
sudo bash -c 'cat <<EOF > /etc/openvpn/server/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
tls-auth /etc/openvpn/server/ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 223.5.5.5"
push "dhcp-option DNS 119.29.29.29"
keepalive 10 120
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOF'
echo "=== 4. 配置网络与防火墙路由 ==="
# 开启 IPv4 转发
grep -qF 'net.ipv4.ip_forward = 1' /etc/sysctl.conf || echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 获取网卡名称并配置 NAT
NIC=$(ip route get 8.8.8.8 | awk '{print $5; exit}')
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $NIC -j MASQUERADE
# 如果开了 ufw 防火墙则放行端口
if command -v ufw > /dev/null; then
sudo ufw allow 1194/udp
fi
echo "=== 5. 生成客户端证书与 phone.ovpn 配置文件 ==="
cd ~/openvpn-ca
./easyrsa --batch gen-req phone nopass
./easyrsa --batch sign-req client phone
PUBLIC_IP=$(curl -s ifconfig.me)
cat <<EOF > ~/phone.ovpn
client
dev tun
proto udp
remote $PUBLIC_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
key-direction 1
<ca>
$(cat pki/ca.crt)
</ca>
<cert>
$(cat pki/issued/phone.crt)
</cert>
<key>
$(cat pki/private/phone.key)
</key>
<tls-auth>
$(cat ta.key)
</tls-auth>
EOF
echo "=== 6. 启动 OpenVPN 服务 ==="
sudo systemctl restart openvpn-server@server
sudo systemctl enable openvpn-server@server
echo ""
echo "=================================================="
echo " OpenVPN 服务端安装完成!"
echo " 客户端配置文件已保存在: ~/phone.ovpn"
echo " 服务器外网 IP 为: $PUBLIC_IP"
echo " 注意:请务必在云服务器控制台安全组中放行 UDP 1194 端口!"
echo "=================================================="
|
保存退出方法:
按 Ctrl + O,然后按 Enter(保存)
按 Ctrl + X(退出编辑器)
第三步:给脚本赋予执行权限#
在终端中运行:
第四步:一键运行脚本#
执行以下命令开始搭建:
手机端连接方式:#
将生成在主目录下的 ~/phone.ovpn 文件传输到手机(通过 SCP、微信文件传输助手或 FTP)。
手机下载安装 OpenVPN Connect App。
在 App 中选择 Import Profile -> File,导入 phone.ovpn 即可一键开启连接。