Ubuntu 22.04系统下OpenVPN服务器的完整配置流程
虚拟专用网络(VPN)提供了一种安全的方式来穿越不受信任的网络,如同在专用网络上操作一样。OpenVPN是一个功能齐全的开源传输层安全(TLS)VPN解决方案,适用于多种配置。本文将详细指导您在Ubuntu 22.04服务器上设置OpenVPN,并配置它以便客户端计算机可以连接。
先决条件
在开始之前,请确保您具备以下条件:
- 一台Ubuntu 22.04服务器,具有sudo权限的非root用户,并启用了防火墙。
- 一个单独的Ubuntu 22.04服务器作为私有证书颁发机构(CA)。
- 一台客户端计算机,用于连接到OpenVPN服务器。
第1步:安装OpenVPN和Easy-RSA
首先,更新您的包索引并安装OpenVPN和Easy-RSA:
bash
sudo apt update
sudo apt install openvpn easy-rsa
创建一个名为~/easy-rsa
的新目录,并创建一个符号链接到easy-rsa
脚本:
bash
mkdir ~/easy-rsa
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
确保目录的所有者是您的非root sudo用户,并限制访问:
bash
sudo chown sammy ~/easy-rsa
chmod 700 ~/easy-rsa
第2步:为OpenVPN创建PKI
在OpenVPN服务器上创建一个本地公钥基础结构目录:
bash
cd ~/easy-rsa
nano vars
在vars
文件中添加以下两行:
bash
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
这将配置您的私钥和证书请求使用现代椭圆曲线密码术(ECC)。
接下来,创建PKI目录:
bash
./easyrsa init-pki
第3步:创建OpenVPN服务器证书请求和私钥
生成私钥和证书签名请求(CSR):
bash
./easyrsa gen-req server nopass
将生成的私钥复制到/etc/openvpn/server
目录:
bash
sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/
第4步:签署OpenVPN服务器的证书请求
将server.req
证书请求复制到CA服务器进行签名:
bash
scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp
在CA服务器上,导入证书请求并签署它:
bash
cd ~/easy-rsa
./easyrsa import-req /tmp/server.req server
./easyrsa sign-req server server
将签署的证书和CA证书复制回OpenVPN服务器:
bash
scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
scp pki/ca.crt sammy@your_vpn_server_ip:/tmp
在OpenVPN服务器上,将文件复制到/etc/openvpn/server
:
bash
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server
第5步:配置OpenVPN加密材料
生成tls-crypt
预共享密钥:
bash
openvpn --genkey secret ta.key
将ta.key
复制到/etc/openvpn/server
:
bash
sudo cp ta.key /etc/openvpn/server
第6步:生成客户端证书和密钥对
在OpenVPN服务器上为客户端生成密钥和证书请求:
bash
cd ~/easy-rsa
./easyrsa gen-req client1 nopass
将client1.key
复制到~/client-configs/keys/
目录:
bash
cp pki/private/client1.key ~/client-configs/keys/
将client1.req
传输到CA服务器:
bash
scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp
在CA服务器上,导入请求并签署它:
bash
cd ~/easy-rsa
./easyrsa import-req /tmp/client1.req client1
./easyrsa sign-req client client1
将客户端证书复制回OpenVPN服务器:
bash
scp pki/issued/client1.crt sammy@your_server_ip:/tmp
在OpenVPN服务器上,将客户端证书复制到~/client-configs/keys/
:
bash
cp /tmp/client1.crt ~/client-configs/keys/
第7步:配置OpenVPN
复制示例server.conf
文件:
bash
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
编辑/etc/openvpn/server/server.conf
文件,更新加密设置和其他配置。
第8步:调整OpenVPN服务器网络配置
编辑/etc/sysctl.conf
文件以启用IP转发:
bash
sudo nano /etc/sysctl.conf
添加以下行:
bash
net.ipv4.ip_forward = 1
加载新值:
bash
sudo sysctl -p
第9步:防火墙配置
配置防火墙规则以允许OpenVPN流量。编辑/etc/ufw/before.rules
文件:
bash
sudo nano /etc/ufw/before.rules
添加伪装规则:
bash
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
调整/etc/default/ufw
文件以允许数据包转发:
bash
sudo nano /etc/default/ufw
将DEFAULT_FORWARD_POLICY
设置为ACCEPT
:
bash
DEFAULT_FORWARD_POLICY="ACCEPT"
允许OpenVPN端口和SSH:
bash
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
重新启动UFW:
bash
sudo ufw disable
sudo ufw enable
第10步:启动OpenVPN
启用并启动OpenVPN服务:
bash
sudo systemctl -f enable openvpn-server@server.service
sudo systemctl start openvpn-server@server.service
检查状态:
bash
sudo systemctl status openvpn-server@server.service
第11步:安装客户端配置
从 OpenVPN 的下载页面 下载适用于 Windows 的 OpenVPN 客户端应用程序。 为您的 Windows 版本选择适当的安装程序版本。
注意:OpenVPN需要管理员权限才能安装。
通过本篇文章您能学到的知识点
通过阅读本篇文章,您将能够获得以下知识和技能:
-
理解VPN的基本概念:了解虚拟专用网络(VPN)的基本原理和它如何帮助您在不安全的网络上安全地访问互联网。
-
安装OpenVPN:学习如何在Ubuntu 22.04服务器上安装OpenVPN软件,这是设置VPN服务器的第一步。
-
配置Easy-RSA:掌握如何安装和配置Easy-RSA,这是一个用于管理公钥基础设施(PKI)的工具,对于生成和管理OpenVPN所需的证书至关重要。
-
创建和管理PKI:了解如何在OpenVPN服务器上创建本地公钥基础结构目录,并生成服务器和客户端的密钥和证书请求。
-
签署证书请求:学习如何将证书请求从OpenVPN服务器传输到CA服务器,并在那里签署它们,这是确保通信安全的关键步骤。
-
配置OpenVPN服务器:掌握如何编辑OpenVPN的配置文件,包括加密设置和其他重要参数,以确保VPN服务器的正确运行。
-
网络配置:了解如何调整网络设置,包括启用IP转发,这对于VPN流量的正确路由至关重要。
-
防火墙规则设置:学习如何配置防火墙规则,以允许OpenVPN流量通过,同时保持服务器的安全。
-
启动和管理OpenVPN服务:了解如何启动OpenVPN服务,并将其设置为在系统启动时自动运行。
-
创建客户端配置文件:掌握如何为客户端设备创建配置文件,这是连接到VPN服务器所必需的。
-
在不同操作系统上安装客户端配置:学习如何在Windows、macOS、Linux、iOS和Android等不同操作系统上安装和使用OpenVPN客户端配置。
-
测试VPN连接:了解如何测试VPN连接的有效性,确保您的VPN配置正确无误。
-
撤销客户端证书:掌握如何在需要时撤销客户端证书,以防止未经授权的访问。
通过本篇文章,您不仅能够学会如何在Ubuntu 22.04上从零开始设置一个功能齐全的OpenVPN服务器,还能够掌握日常维护和故障排除的基本技能,确保您的VPN服务安全、稳定地运行。如果您需要帮助或有其他问题,请查阅官方OpenVPN文档。