!bin/bash

hyde1011 10 2026-03-18 10:31:20

手把手教你用脚本自动化搭建OpenVPN服务——从零开始的网络工程师实战指南

作为一名网络工程师,我经常遇到需要快速部署安全远程访问服务的场景,无论是为小型企业搭建办公网接入通道,还是为远程开发团队提供加密隧道,OpenVPN 是一个成熟、稳定且开源的选择,手动配置 OpenVPN 通常涉及繁琐的证书生成、防火墙规则设置、配置文件编辑等步骤,容易出错且效率低下,我将分享一个完整的 Bash 脚本,帮助你一键自动化搭建 OpenVPN 服务,适用于 Ubuntu/Debian 系统。

确保你的服务器满足基本条件:一台运行 Ubuntu 20.04 或更高版本的 Linux 服务器(推荐使用云主机如阿里云、腾讯云或 AWS),具备公网 IP,以及 root 权限或 sudo 权限。

脚本的核心功能包括:

  1. 自动安装 OpenVPN 和 Easy-RSA(用于证书管理);
  2. 生成 CA 根证书、服务器证书和客户端证书;
  3. 配置 OpenVPN 服务端口(默认 1194)、协议(UDP)、加密方式(AES-256-CBC);
  4. 启用 IP 转发和 NAT(让客户端访问外网);
  5. 设置防火墙规则(ufw)开放 UDP 1194 端口;
  6. 生成客户端配置文件(.ovpn),供用户导入到 OpenVPN 客户端使用。

以下是完整脚本代码(保存为 setup_openvpn.sh):

echo "开始自动安装 OpenVPN 服务..."
# 更新系统包列表
apt update && apt upgrade -y
# 安装 OpenVPN 和 Easy-RSA
apt install -y openvpn easy-rsa
# 创建 PKI 目录
make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
# 初始化 PKI(根据提示输入密码)
./easyrsa init-pki
./easyrsa build-ca nopass
# 生成服务器证书
./easyrsa gen-req server nopass
./easyrsa sign-req server server
# 生成 Diffie-Hellman 参数
./easyrsa gen-dh
# 生成 TLS 密钥(增强安全性)
openvpn --genkey --secret ta.key
# 复制证书到 OpenVPN 目录
cp pki/ca.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/
# 创建服务端配置文件
cat > /etc/openvpn/server.conf <<EOF
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOF
# 启用 IP 转发
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
# 配置 iptables 规则(NAT)
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# 保存 iptables 规则(Ubuntu 20.04+ 使用 ufw)
ufw allow 1194/udp
ufw enable
# 启动并启用 OpenVPN 服务
systemctl start openvpn@server
systemctl enable openvpn@server
# 生成客户端证书(示例:client1)
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
# 创建客户端配置文件
cat > /etc/openvpn/client1.ovpn <<EOF
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
verb 3
EOF
echo "✅ OpenVPN 服务已成功部署!"
echo "客户端配置文件路径:/etc/openvpn/client1.ovpn"

执行脚本前,请将 YOUR_SERVER_IP 替换为你的服务器公网 IP,运行命令:chmod +x setup_openvpn.sh && ./setup_openvpn.sh

完成后,你可以通过 scp.ovpn 文件传输给客户端,并在 Windows/macOS/Linux 上使用 OpenVPN GUI 导入即可连接,此脚本极大简化了运维流程,特别适合批量部署或 DevOps 场景,是每个网络工程师必备的利器!

!bin/bash

上一篇:去掉VPN图标,网络管理中的权限控制与安全实践
下一篇:深入解析灯笼VPN下载与使用安全指南,网络自由背后的隐忧
相关文章
返回顶部小火箭