Ubuntu 搭建OpenVPN服务器

这篇具有很好参考价值的文章主要介绍了Ubuntu 搭建OpenVPN服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

VPN直译译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。

OpenVPN通过使用公开密钥(非对称密钥,加密解密使用不同的Key,一个称为Publice Key,另外一个是Private Key)对数据进行加密的。这种方式称为TLS加密

OpenVPN使用TLS加密的工作过程是,首先VPN Sevrver端和VPN Client端要有相同的CA证书,双方通过交换证书验证双方的合法性,用于决定是否建立VPN连接。

然后使用对方的CA证书,把自己目前使用的数据加密方法加密后发送给对方,由于使用的是对方CA证书加密,所以只有对方CA证书对应的Private Key才能解密该数据,这样就保证了此密钥的安全性,并且此密钥是定期改变的,对于窃听者来说,可能还没有破解出此密钥,VPN通信双方可能就已经更换密钥了。

二、条件

1.一台Ubuntu服务器用来搭建OpenVPN服务

2.一台本地计算机用来安装OpenVPN客户端

3.确保两台计算机能够互相ping通

三、搭建过程

1.安装 OpenVPN 和 Easy-RSA

第一步是安装 OpenVPN 和 Easy-RSA。 Easy-RSA 是一种公钥基础设施 (PKI) 管理工具,用于在OpenVPN 服务器上生成证书请求。然后在 CA 服务器上验证和签名。在这里我们的 OpenVPN 服务器和CA服务器为同一个 Ubuntu 服务器

首先,更新 OpenVPN 服务器的包索引并安装 OpenVPN 和 Easy-RSA。 这两个包都在 Ubuntu 的默认存储库中可用,可以使用 apt 进行安装:

sudo apt update
sudo apt install openvpn easy-rsa

ubuntu vpn服务器,服务器,运维

openvpn安装完毕后,我们来查看openvpn的版本:

openvpn --version

ubuntu vpn服务器,服务器,运维安装完 easy-rsa 之后我们就可以开始创建 OpenVPN 服务所需要的秘钥了。

2.制作相关证书

OpenVPN 的证书分为三部分:CA证书、Server端证书、Client端证书。下面我们通过easy-rsa分别对其进行制作。

2.1制作CA证书

进入 /usr/share/easy-rsa 目录

首先将 vars.example 拷贝一份出来

ubuntu vpn服务器,服务器,运维

然后编辑 vars 文件

修改下面部分的内容

ubuntu vpn服务器,服务器,运维

ubuntu vpn服务器,服务器,运维

在最后一行添加 KEY_NAME,可以是任何你喜欢的名字,但是请记住,后面制作服务端证书时会用到

ubuntu vpn服务器,服务器,运维

对于不同版本的easy-rsa,使用方法可能不一样,具体可以参考安装文档的描述

cat /usr/share/doc/easy-rsa/README.Debian

ubuntu vpn服务器,服务器,运维

然后使用以下命令:

sudo ./easyrsa init-pki

ubuntu vpn服务器,服务器,运维

会发现多了个pki目录出来

然后再执行第二条命令

ubuntu vpn服务器,服务器,运维

查看pki目录会发现有一个 ca.crt,这就是CA端证书,ca.crt 包含 CA 的公钥,用于验证服务器和客户端证书的有效性。客户端会使用此证书来验证服务器的身份。

ubuntu vpn服务器,服务器,运维

至此CA端证书制作好了

2.2制作服务端证书

然后用以下命令制作Server端证书(注意改命令中的server要换成前面vars文件中设置的KEY_NAME):

sudo ./easyrsa build-server-full server nopass

ubuntu vpn服务器,服务器,运维

修改pki目录权限并进入

ubuntu vpn服务器,服务器,运维

查看服务器的证书和私钥:

sudo ls issued 
sudo ls private

ubuntu vpn服务器,服务器,运维

至此服务端的证书制作完毕

2.3制作客户端证书

Server端证书制作完成后,开始制作Client端证书,步骤和制作服务端证书类似,注意命令中的client,是客户端的名称,可以换成任意你喜欢的,不要和服务端证书一样就行

sudo ./easyrsa build-client-full client nopass

先制作一个用于给我windows电脑用的

ubuntu vpn服务器,服务器,运维

再次查看 pki/issued/ 和 pki/private/ ,会发现多了windows11的证书和私钥出来

ubuntu vpn服务器,服务器,运维

至此客户端的证书制作完毕

2.4创建迪菲·赫尔曼密钥

使用以下命令创建,会生成dh.pem文件

sudo ./easyrsa gen-dh

ubuntu vpn服务器,服务器,运维 ubuntu vpn服务器,服务器,运维

3.配置服务器端配置文件

3.1拷贝相关文件

首先复制一份服务器端配置文件模板 server.conf/etc/openvpn/

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn/
sudo gzip -d server.conf.gz

ubuntu vpn服务器,服务器,运维

然后把刚刚创建好的CA证书、dh.pem、服务端证书/私钥、客户端证书/私钥复制过来,CA证书和dh.pem放在/etc/openvpn目录下,服务端证书/私钥放在server目录下,客户端证书/私钥放在client目录下。

ubuntu vpn服务器,服务器,运维

3.2编辑server.conf

sudo vim server.conf

配置文件详细说明可以参考这篇:

OpenVPN server端配置文件详细说明-腾讯云开发者社区-腾讯云

我主要做了如下修改:

端口号依然使用1194,传输协议用tcp,注释掉原本的udp

ubuntu vpn服务器,服务器,运维

修改证书和dh密钥路径

ubuntu vpn服务器,服务器,运维

修改VPN的IP地址段,也可以不修改,我没做修改

ubuntu vpn服务器,服务器,运维

打开下面选项,让VPN 重定向客户端所有流量

ubuntu vpn服务器,服务器,运维

修改下面选项可以使客户端在连接OpenVPN时DNS服务器按照以下设置

ubuntu vpn服务器,服务器,运维

开启后多个客户端可以同时使用一个证书和私钥

ubuntu vpn服务器,服务器,运维

关闭TLS认证

ubuntu vpn服务器,服务器,运维

启用 LZO 压缩算法,以减小通过OpenVPN通道传输的数据量,从而提高性能

ubuntu vpn服务器,服务器,运维

在之前的日志内容后进行追加

ubuntu vpn服务器,服务器,运维

关闭“服务器重启,客户端自动重新连接”

ubuntu vpn服务器,服务器,运维

至此服务端配置文件修改完成。

4.运行OpenVPN Server

使用以下命令运行并查看OpenVPN Server

sudo systemctl start openvpn@server
sudo systemctl status openvpn@server

ubuntu vpn服务器,服务器,运维

使用以下命令查看日志

sudo tail -f /var/log/openvpn/openvpn.log

ubuntu vpn服务器,服务器,运维

5.设置防火墙

开启1194和SSH端口并重启ufw防火墙

sudo ufw allow 1194
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable

6.Windows客户端配置

在openvpn官网下载客户端:OpenVPN Connect - Client Software For Windows | OpenVPN

下载好以后点击运行,然后在右下角状态栏里找到OpenVPN的图标,右键点击,选中选项,在高级里面修改配置文件文件夹路径为 C:\Program Files\OpenVPN\config

然后先在Ubuntu服务器上用chown命令将ca.crt, windows11.crt, windows11.key 的所有者权限改成自己

sudo chown wt ca.crt client/windows11{.crt,.key}

由于我在本地电脑上没有安装ssh服务端,所以无法直接在Ubuntu服务器上使用scp将这三个文件传输到本地电脑,所以在本地电脑执行以下命令将这三个文件远程传输到C:\Program Files\OpenVPN\config,该目录为openvpn客户端的配置文件所在目录

scp -r wt@114.212.122.48:/etc/openvpn/{ca.crt,client/windows11{.crt,.key}} ./

ubuntu vpn服务器,服务器,运维

然后在客户端机器上打开C:\Program Files\OpenVPN\config文件夹,新建一个windows11.ovpn文件,在里面添加如下内容

client
 
dev tun
 
proto tcp
 
remote 114.212.122.48 1194
 
resolv-retry infinite
 
nobind
 
persist-key
 
persist-tun

ca ca.crt
 
cert windows11.crt
 
key windows11.key
 
comp-lzo
 
verb 3

保存后关闭

然后连接VPN,显示成功

ubuntu vpn服务器,服务器,运维

ping OpenVPN服务器的IP,可以ping通

ubuntu vpn服务器,服务器,运维

7.调整 OpenVPN 服务器网络配置

此时已经能够使用OpenVPN的基本功能,但是由于之前我们设置过让VPN重定向客户端的所有流量,导致无法正常访问外部网络

ubuntu vpn服务器,服务器,运维

此时有几种解决办法

7.1.修改服务端的配置

关掉server.conf 里VPN重定向客户端全部流量的配置

ubuntu vpn服务器,服务器,运维

7.2.修改客户端配置

在客户端windows11.ovpn配置文件中,增加下面的内容,第一行表示取消从VPN服务器拉取路由,第二行表示手动指定访问10.8.0.*这个网段的IP才会走VPN

route-nopull #don't pull routes from the server
route 10.8.0.0 255.255.255.0 #direct all 192.168.0.* subnet traffic through the VPN

7.3配置路由转发和防火墙

7.3.1配置路由转发

要调整 OpenVPN 服务器的默认 转发设置,直接在终端输入命令或者修改/etc/sysctl.conf 文件

方式一:

sudo sysctl -w net.ipv4.ip_forward=1

ubuntu vpn服务器,服务器,运维

or

方式二:

sudo vim /etc/sysctl.conf,然后在末尾添加以下行

net.ipv4.ip_forward = 1

修改完后保存并关闭文件,然后输入以下命令为当前会话加载新值

sudo sysctl -p

ubuntu vpn服务器,服务器,运维

7.3.2修改防火墙配置

先输入以下命令查看服务器的公网接口

ip route list default

公网接口是输出中dev后面的字符串,在我的机器里为 eno1

ubuntu vpn服务器,服务器,运维

有了默认路由关联的接口后,我们打开 /etc/ufw/before.rules 文件添加相关配置:

 sudo vim /etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eno1 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

然后需要告诉 UFW 默认情况下也允许转发数据包, 打开并修改 /etc/default/ufw 文件:

sudo vim /etc/default/ufw

找到 DEFAULT_FORWARD_POLICY 指令并将值从 DROP 更改为 ACCEPT

ubuntu vpn服务器,服务器,运维

重启防火墙

然后重启服务器上的OpenVPN服务

sudo ufw disable
sudo ufw enable
sudo systemctl restart openvpn@server

此时客户端重新连接VPN,会发现可以正常上网了 

ubuntu vpn服务器,服务器,运维

跳转DNS leak test测试,发现IP已经变成OpenVPN服务器的IP

ubuntu vpn服务器,服务器,运维

8.手机端配置

由于之前开启了“一份证书可以多个客户端使用”,所以手机端上可以也用刚刚制作好的windows11证书和密钥,或者重新制作一份,制作过程和之前的一样,然后使用scp先传输到本地电脑进行编辑

ubuntu vpn服务器,服务器,运维

在本地电脑新建一个iphone.ovpn文件,内容和之前的windows11.ovpn大体一致,但是由于手机端只能上传.ovpn格式的文件,需要将ca.crt、iphone.crt、iphone.key这几个文件打包进iphone.ovpn


client
 
dev tun
 
proto tcp
 
remote 114.212.122.48 1194
 
resolv-retry infinite
 
nobind
 
persist-key
 
persist-tun

## 删除下面注释掉的内容
# ca ca.crt
 
# cert windows11.crt
 
# key windows11.key
 
comp-lzo
 
verb 3

## 增加下面的内容
<ca>
...  # 把ca.crt里的内容复制过来
</ca>

<cert>
...  # 把iphone.crt里的内容复制过来
</cert>

<key>
...  # 把iphone.key里的内容复制过来
</key>

然后将修改好的iphone.ovpn文件用邮箱发送到手机上,然后选择其他应用 → OpenVPN 打开(苹果的OpenVPN需要在美区苹果商店下载,国区没有,安卓的请同学们自行百度)

ubuntu vpn服务器,服务器,运维

然后跳转到OpenVPN APP,点击Add→Connect,显示以下界面即为连接成功

ubuntu vpn服务器,服务器,运维

搜索what is my ip检查,发现IP也变成了服务器IP,且可以正常上网

ubuntu vpn服务器,服务器,运维

9.卸载OpenVPN

(以下内容来自ChatGPT)

在Ubuntu上卸载OpenVPN服务器可以通过以下步骤进行。请注意,这将删除OpenVPN服务器及其相关组件,确保您不再需要它们。

9.1.停止OpenVPN服务:

打开终端,然后停止OpenVPN服务。可以使用以下命令:

sudo systemctl stop openvpn@<server-config-file>

<server-config-file> 是您实际使用的OpenVPN服务器配置文件的名称。

9.2.卸载OpenVPN软件包:

使用以下命令卸载OpenVPN软件包:

sudo apt-get remove openvpn

如果您还安装了easy-rsa(用于生成证书和密钥的工具),也可以卸载它:

sudo apt-get remove easy-rsa

9.3.删除配置文件和相关文件:

删除OpenVPN服务器的配置文件和其他相关文件。这包括您自定义的配置文件和证书文件。请小心,确保您不再需要这些文件。

9.4.清理配置目录:

如果您使用的是默认的OpenVPN配置目录,可以执行以下命令来清理相关文件:

sudo rm -r /etc/openvpn

9.5.清理Easy-RSA目录(如果安装了):

如果您安装了easy-rsa,清理相关的目录:

sudo rm -r /usr/share/easy-rsa/

9.6.重新加载系统服务:

在进行更改后,重新加载系统服务:

sudo systemctl daemon-reload

9.7.清理残留的依赖项:

为了确保删除了所有与OpenVPN相关的依赖项,您可以运行:

sudo apt-get autoremove

这将自动删除不再需要的依赖项。

请注意,在执行这些步骤之前,请确保您不再需要OpenVPN服务器,并且您备份了任何重要数据或配置文件。

10.参考

如何在Ubuntu22.04上设置和配置OpenVPN服务器 - 菜鸟教程

如何在Ubuntu 系统中搭建 OpenVPN 服务 | 五点半

ubuntu部署VPN中openvpn(上)-腾讯云开发者社区-腾讯云 (tencent.com)

ubuntu 22.04搭建OpenVPN服务器_ubuntu vpn-CSDN博客

烂泥:ubuntu 14.04搭建OpenVPN服务器-烂泥行天下 (ilanni.com)文章来源地址https://www.toymoban.com/news/detail-755138.html

到了这里,关于Ubuntu 搭建OpenVPN服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建frp+OpenVPN实现公网服务器对内网服务器的访问

    1.1实验需求 本实验需求一台公网服务器,两台内网服务器 公网服务器:作为frp服务端以及openvpn客户端 第一台内网服务器:作为frp客户端以及openvpn服务端 第二台内网服务器:需进行openvpn客户端配置(测试用) 1.2配置yum源 2.1服务端配置(公网服务器) 下载并解压frp数据包

    2024年02月04日
    浏览(51)
  • ubuntu搭建HTTP服务器

    1、首先安装apache2工具 apache2安装成功后,我们可以在/var/www/html/目录下看到一个index.html文件。/var文件夹在根目录下,cd到根目录下ls就可以看到 2、重启apache2 接下来,我们只需要重启apache2服务,使用同一局域网(就是连同一个WIFI)的设备登录ubuntu的ip地址就能访问到它的网

    2024年02月16日
    浏览(52)
  • Ubuntu搭建Nodejs服务器

    转自:https://www.8kiz.cn/archives/3228.html 在Ubuntu上搭建Node.js服务器,按照以下步骤进行: 打开终端。 使用包管理器安装Node.js。可以使用以下命令安装Node.js: 安装Node.js后,你可以使用以下命令来检查Node.js版本: 安装npm(Node.js包管理器)。使用以下命令安装npm: 检查npm版本:

    2024年01月25日
    浏览(46)
  • Ubuntu Server搭建个人服务器

    【参考资料】 Ubuntu官方地址:https://www.ubuntu.com/ Ubuntu论坛地址:https://ubuntuforums.org/ Ubuntu Wiki地址:https://wiki.ubuntu.com/ Ubuntu帮助地址:https://help.ubuntu.com/ Ubuntu邮件列表地址:https://discourse.ubuntu.com/t/mailing-lists/https://ubuntu.com/server/docs) 官网下载:https://releases.ubuntu.com/ 国内镜像

    2023年04月16日
    浏览(40)
  • ubuntu下DHCP服务器搭建

    1、 安装DHCP服务 安装isc-dhcp-server: sudo apt install isc-dhcp-server 2、配置DHCP服务 首先需要知道目标主机的网卡名称: $ ifconfig 由下图可见,网卡名为ens33 接下来配置 /etc/default/isc-dhcp-server 文件, $ sudo vi /etc/default/isc-dhcp-server 将INTERFACES的内容补充为目标主机的网卡名称enp33。 配置

    2024年02月06日
    浏览(44)
  • 教你用Ubuntu快速搭建饥荒服务器

    本文分享自华为云社区《Ubuntu快速搭建饥荒服务器》,作者: 云计算冲锋队。 《饥荒》是Klei第一次尝试生存题材。受到Minecraft 的影响,这个游戏也是将玩家放置到游戏世界中,并未给予玩家太多的指示以及特定的生存目标。该游戏在游戏评论家受普遍好评,包括其美术风

    2024年04月26日
    浏览(35)
  • ubuntu搭建chirpstack服务器详细教程

    目录 一、安装镜像 安装环境 切换镜像源 添加公钥 二、安装docker 1.检查并卸载已安装的docker 2.安装所需的库 3.添加Docker官方GPG密钥 4.写入软件源信息 5.安装 docker-ce 6.查看docker版本 7.docker的常用命令展示 三、安装docker-compose 1.安装 2.查看权限 3.验证是否下载成功 4.docker-compo

    2024年02月04日
    浏览(57)
  • Ubuntu server搭建dhcp服务器

    安装 直接使用一下命令进行安装 以下就是安装好的图片  然后进入dhcp目录  进入后用ls查看当前目录存在哪些文件  使用如下进入dhcp.conf 红:设置ip域和子网掩码 绿:设置ip池范围 黄:子网掩码 紫:路由 蓝:广播地址 改好之后保存 (设置的IP必须跟该虚拟机在同一网段,

    2024年02月01日
    浏览(51)
  • Ubuntu搭建pptp服务器(保姆级)

    一,关于pptp服务简单介绍 点对点隧道协议(PPTP)是VPN服务的一种最简单的实现协议,其它常见的VPN类型还有:使用IPsec的第2层隧道协议(L2TP/IPsec)、安全套接字隧道协议(SSL VPN)。本文主要讲述基于Ubuntu的PPTP服务安装与配置。 二,本次用到的环境 Windows11 虚拟机Ubuntu系统

    2024年02月13日
    浏览(52)
  • ubuntu服务器版本搭建Hadoop集群

    实验环境: 虚拟化软件:VMware® Workstation 16 Pro 镜像:ubuntu-22.04.2-live-server-amd64.iso Hadoop版本:hadoop-3.3.4.tar.gz ubuntu镜像链接 hadoop文件链接 配置虚拟机 (1)新建虚拟机,选择实验镜像【ubuntu-22.04.2-live-server-amd64.iso】 (2)调整硬件配置,配置如图 安装操作系统 (1)选择虚拟

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包