简易搭建OpenVPN服务端及创建客户端

OpenVPN是一款开源的VPN解决方案,以其高安全性和跨平台兼容性广受好评。无论是远程办公、安全访问内网资源,还是保护公共Wi-Fi下的数据传输,OpenVPN都能提供可靠支持。本教程将详解如何在Linux服务器上部署OpenVPN服务端,并生成客户端配置文件。建议使用较新的Linux系统,比如Ubuntu 22,Debian 11 及以上系统。




一、服务端搭建


1.1 安装OpenVPN与EasyRSA

# Ubuntu/Debian
sudo apt update
sudo apt install openvpn easy-rsa

# CentOS/RHEL
sudo dnf install openvpn easy-rsa

1.2 生成证书与密钥

初始化PKI目录

make-cadir ~/openvpn-ca cd ~/openvpn-ca

编辑变量配置

修改vars文件中的证书信息:

export KEY_COUNTRY="US" 
export KEY_PROVINCE="California"
export KEY_CITY="SanFrancisco"
export KEY_ORG="YourOrg"
export KEY_EMAIL="[email protected]"

生成CA与证书

source vars 
./easyrsa init-pki
./easyrsa build-ca # 生成CA证书(连续回车使用默认值),存储在 ~/easy-rsa/pki/ 目录下。
./easyrsa build-server-full server nopass # 生成服务端证书
./easyrsa gen-dh # 生成Diffie-Hellman参数(耗时较长)
openvpn --genkey --secret ta.key # 生成TLS-auth密钥

1.3 配置OpenVPN服务端

将生成的证书密钥文件移动到/etc/openvpn/server下。

创建服务端配置文件

sudo nano /etc/openvpn/server/server.conf

添加以下内容:

port 1194 
proto udp #可改成tcp,一些固定要求需要tcp传输
dev tun

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh2048.pem
tls-auth /etc/openvpn/server/ta.key 0
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
auth SHA256

server 10.0.0.0 255.255.255.0
client-config-dir /etc/openvpn/server/ccd #启动客户端配置,分配静态ip
push "route 10.0.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 10 120
persist-key
persist-tun

status /var/log/openvpn-status.log
verb 3

1.4 启用IP转发与防火墙

# 启用IP转发
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf

# 配置防火墙(UFW示例)
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw disable && sudo ufw enable

1.5 启动服务

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server



二、创建客户端配置


2.1 生成客户端证书

cd ~/openvpn-ca
source vars
./easyrsa build-client-full client1 nopass # client1替换为客户端名称

2.2 创建客户端配置文件

新建client1.ovpn,内容如下:

client
dev tun
proto udp # 与服务器上的传输模式对应
remote your_server_ip 1194 # 替换为服务器公网IP
resolv-retry infinite
persist-key
persist-tun

ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
tls-auth ta.key 1
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
auth SHA256
verb 3

同时将以下文件发送给客户端设备,放入任意位置

  • client1.ovpn
  • ca.crt
  • client1.crt
  • client1.key
  • ta.key

注:假如客户端要使用静态ip,只需要在/etc/openvpn/server/ccd目录下新建client1,填入如下配置:

ifconfig-push 10.0.0.2 255.255.255.0             #给客户端1分配ip:10.0.0.2

2.3 客户端创建服务

创建 systemd 服务文件:

sudo nano /etc/systemd/system/openvpn-client1.service
[Unit]
Description=OpenVPN service for client1
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --config /path/to/client1.ovpn
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload           # 重载

启用服务以便每次启动时自动连接 OpenVPN 客户端:

sudo systemctl enable openvpn-client1.service

启动 OpenVPN 客户端服务:

sudo systemctl start openvpn-client1.service

你可以通过以下命令检查服务的状态,确保它运行正常:

sudo systemctl status openvpn-client1.service



三、客户端连接


各平台客户端

  • Windows:使用官方OpenVPN GUI,导入.ovpn文件。
  • macOS/Linux:命令行运行 openvpn --config client1.ovpn
  • Android/iOS:使用OpenVPN Connect应用导入配置文件。

连接测试

  • 客户端导入所有文件后通过服务启动连接。
  • 服务端检查日志:
sudo tail -f /var/log/openvpn-status.log 
  • 客户端验证:
sudo systemctl status openvpn-client1.service

常见问题排查

  • 无法连接:检查防火墙规则、确认证书路径正确。
  • TLS错误:确保ta.key在服务端与客户端一致。
  • 速度慢:尝试切换TCP协议。



结语

通过上述步骤,可以成功搭建安全的OpenVPN私有网络。定期更新证书(建议每年一次)并关注安全公告,可进一步提升网络安全性。

延伸阅读

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注