VPN搭建秘籍:Ubuntu 22.04系统下OpenVPN服务器的完整配置流程

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需要管理员权限才能安装。

通过本篇文章您能学到的知识点

通过阅读本篇文章,您将能够获得以下知识和技能:

  1. 理解VPN的基本概念:了解虚拟专用网络(VPN)的基本原理和它如何帮助您在不安全的网络上安全地访问互联网。

  2. 安装OpenVPN:学习如何在Ubuntu 22.04服务器上安装OpenVPN软件,这是设置VPN服务器的第一步。

  3. 配置Easy-RSA:掌握如何安装和配置Easy-RSA,这是一个用于管理公钥基础设施(PKI)的工具,对于生成和管理OpenVPN所需的证书至关重要。

  4. 创建和管理PKI:了解如何在OpenVPN服务器上创建本地公钥基础结构目录,并生成服务器和客户端的密钥和证书请求。

  5. 签署证书请求:学习如何将证书请求从OpenVPN服务器传输到CA服务器,并在那里签署它们,这是确保通信安全的关键步骤。

  6. 配置OpenVPN服务器:掌握如何编辑OpenVPN的配置文件,包括加密设置和其他重要参数,以确保VPN服务器的正确运行。

  7. 网络配置:了解如何调整网络设置,包括启用IP转发,这对于VPN流量的正确路由至关重要。

  8. 防火墙规则设置:学习如何配置防火墙规则,以允许OpenVPN流量通过,同时保持服务器的安全。

  9. 启动和管理OpenVPN服务:了解如何启动OpenVPN服务,并将其设置为在系统启动时自动运行。

  10. 创建客户端配置文件:掌握如何为客户端设备创建配置文件,这是连接到VPN服务器所必需的。

  11. 在不同操作系统上安装客户端配置:学习如何在Windows、macOS、Linux、iOS和Android等不同操作系统上安装和使用OpenVPN客户端配置。

  12. 测试VPN连接:了解如何测试VPN连接的有效性,确保您的VPN配置正确无误。

  13. 撤销客户端证书:掌握如何在需要时撤销客户端证书,以防止未经授权的访问。

通过本篇文章,您不仅能够学会如何在Ubuntu 22.04上从零开始设置一个功能齐全的OpenVPN服务器,还能够掌握日常维护和故障排除的基本技能,确保您的VPN服务安全、稳定地运行。如果您需要帮助或有其他问题,请查阅官方OpenVPN文档

相关推荐
WPG大大通19 分钟前
基于ST STM32MP257FAK3的MP2控制器之工业PLC 方案
网络·人工智能·mcu·plc·方案·大大通
代码中の快捷键21 分钟前
MVCC了解
运维·服务器·数据库
初学者丶一起加油27 分钟前
C语言基础:数组(字符数组)
linux·c语言·开发语言·数据结构·vscode·算法·ubuntu
考试宝31 分钟前
道路运输企业安全生产管理人员安全考核试题
网络·人工智能·笔记·安全·职场和发展·学习方法·业界资讯
vvw&1 小时前
如何在 Ubuntu 22.04 服务器上安装 Jenkins
linux·运维·服务器·ubuntu·ci/cd·自动化·jenkins
我不会敲代码a1 小时前
常用网络协议简述
网络·网络协议
青灯文案11 小时前
Linux 显示系统活动进程状态命令 ps 详细介绍
linux·运维
aashuii1 小时前
linux上抓包RoCEv2
linux·运维·服务器