Ubuntu搭建openvpn服务器

news2024/11/24 11:28:06

文章目录

      • 一、基于ubuntu搭建openvpn服务器
      • 二、制作相关证书
        • 2.1 制作ca证书 ./build-ca
        • 2.2 制作Server端证书
        • 2.3 制作Client端证书
      • 三、配置服务器
        • 3.1 配置Server端
        • 3.2. 配置Client端
      • 四、安装openvpn客户端:http://build.openvpn.net/downloads/releases/

一、基于ubuntu搭建openvpn服务器

  1. 确保网络连通,使用ifconfig查看本机ip以及ping通外网(将虚拟机网络设置为NAT模式)
  • 找不到命令
    在这里插入图片描述
  • 网络可用
    在这里插入图片描述
  1. 安装openvpn
// 安装openvpn
machine:~$ sudo apt-get -y install openvpn libssl-dev openssl
//查看openvpn版本
machine:~$ sudo apt-get -y install openvpn libssl-dev openssl
//查看安装时产生的文件
machine:~$ dpkg --list openvpn
machine:~$ dpkg -L  openvpn | more

在这里插入图片描述
3. 安装easy-rsa,用来生成证书

sudo apt-get -y install easy-rsa

在这里插入图片描述

二、制作相关证书

  1. 在/etc/openvpn/目录下创建easy-rsa文件夹
sudo mkdir /etc/openvpn/easy-rsa/ cd /etc/openvpn/easy-rsa/

在这里插入图片描述
2. 把/usr/share/easy-rsa/目录下的所有文件全部复制到/etc/openvpn/easy-rsa/下

  • 这一步是为了后续的管理证书的方便,所以把easy-rsa放在了openvpn的启动目录下
sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

在这里插入图片描述

  • 由于我们现在使用的是ubuntu系统,所以我们必须切换到root用户下才能制作相关证书,否则easy-rsa会报错。如果是centos系统,则不存在此问题
  • 制作CA证书之前,我们还需要编辑vars文件,按自己实际修改:
    在这里插入图片描述
  • 使用source vars命令使其生效(在这之前先sudo su切换管理员权限)
    在这里插入图片描述
2.1 制作ca证书 ./build-ca

报错,因为我安装的easy-rsa版本关系,可以创建一个软链接:
在这里插入图片描述
在这里插入图片描述

  • 然后一路回车即可,查看keys目录可见生成的证书文件ca.crt
    在这里插入图片描述
  • 把该CA证书的ca.crt文件复制到openvpn的启动目录/etc/openvpn下
cp keys/ca.crt /etc/openvpn/
ll /etc/openvpn/

在这里插入图片描述

2.2 制作Server端证书
// 制作server端证书,也是一路回车确认
//pao: 前面vars文件中设置的KEY_NAME
./build-key-server pao

在这里插入图片描述

// 为服务器生成加密交换时的Diffie-Hellman文件
./build-dh

在这里插入图片描述

  • 查看keys文件夹,可以看到生成了三个证书文件,其中pao.crtpao.key是我们要使用的
    在这里插入图片描述
  • 把vpnilanni.crt、vpnilanni.key、dh2048.pem复制到/etc/openvpn/目录下
cp keys/pao.crt keys/pao.key keys/dh2048.pem /etc/openvpn/
2.3 制作Client端证书
//paoclient: 客户端的名称。这个是可以进行自定义
./build-key paoclient
//其中paoclient.crt和paoclient.key是我们需要的
  • 这里客户端名称不要和pao重复,否则会报错,因为keys文件夹中已经有pao命名的证书,会冲突
    在这里插入图片描述

三、配置服务器

3.1 配置Server端
  • Server端的配置文件,我们可以从openvpn自带的模版中进行复制
root@.../easy-rsa# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
root@.../easy-rsa# cd /etc/openvpn/
root@.../easy-rsa# ll

// 解压server.conf.gz文件后,然后删除原文件
gzip -d server.conf.gz

在这里插入图片描述

  • 修改server.conf文件
    因为server.conf和证书文件都放在/etc/openvpn路径下,不需要绝对路径,如果server.conf文件不在同一目录,则路径要更改为:ca /etc/openvpn/ca.crt
    在这里插入图片描述
    :
    在这里插入图片描述
  • 启动openvpn服务
/etc/init.d/openvpn start
netstat -tunlp |grep 1194

在这里插入图片描述
注意:可能会出现启动服务后,查看1194端口却发现服务未运行的状态,可以试试关闭防火墙

sudo systemctl stop ufw.service
sudo systemctl disable ufw.service
//查看防火墙状态
sudo ufw status
状态:不活动
3.2. 配置Client端
  1. 实现虚拟和window文件共享
  • 之前可能安装VMtool有问题,没办法把文件从window直接拖入虚拟机
//创建共享文件夹目录 
cd /mnt/hgfs/
mkdir -p Vm_share
//挂载共享文件夹
/usr/bin/vmhgfs-fuse .host:/Vm_share /mnt/hgfs/Vm_share -o subtype=vmhgfs-fuse,allow_other
//检查是否设置成功
cd /mnt/hgfs/Vm_share//进入共享文件夹
ls //查看当前文件夹中的文件是否为主机上的文件

在这里插入图片描述
2. 无论是在Windows OS还是在Linux OS上Client端的配置,我们都需要把Client证书、CA证书以及Client配置文件下载下来
在这里插入图片描述

  • 先把这几个文件复制到/home/ilanni/目录下,然后再把openvpn客户端的配置文件模版也复制到/home/ilanni/目录下
cp ca.crt pao.key pao.crt /home/hxm/
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /home/hxm/
  • 修改以上几个文件的用户属性
chown hxm:hxm pao.*
chown hxm:hxm ca.crt

在这里插入图片描述

  • 然后我们可以使用共享文件夹把这几个文件放到window本机
    在这里插入图片描述
  1. 把client.conf文件重命名为client.ovpn,然后进行编辑
client
dev tun
//使用tcp协议,与server端保持一致
proto tcp
//这是我部署openvpn服务的server地址(虚拟机 ifconfig)
remote 192.168.67.128 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
//clicent证书也要修改为自己的
cert pao.crt
key pao.key
ns-cert-type server
comp-lzo
verb 3

四、安装openvpn客户端:http://build.openvpn.net/downloads/releases/

这里我打不开地址,所以直接百度一个下载了,可以使用openvpn --version查看openvpn版本
注意:下载的客户端版本号一定要与服务器端openvpn的版本一直,否则可能会出现无法连接服务器的现象
5. 双击桌面OpenVPNGUI快捷方式运行openvpn客户端程序
记得确保server端的openvpn服务正在运行
window在窗口右下角找到openvpn窗口进行登录,当openvpn图标变成绿色,说明连接成功!可以右键查看连接状态、配置文件、日志信息
在这里插入图片描述

在这里插入图片描述

  • 可以在本机下查看,已经连接到Server端,获得的IP地址为10.8.0.6
    在这里插入图片描述
  • 参考:
    这个博主的配置相对比较好,适合学习,不过缺少密码验证和tls验证,以及其他的一些加密方式,在以后可以继续了解
    烂泥:ubuntu 14.04搭建OpenVPN服务器
    OPENVPN 配置方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1214304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑技巧:U盘装系统跟光盘装系统有什么区别,看完你就懂了!

目录 一、制作方法 二、优点比较 2.1 U盘 2.2 光盘 三、缺点比较 一、制作方法 U盘:是通过制作U盘系统盘,插在电脑上启动U盘,然后从U盘上启动PE系统,在PE系统里加载预先下载好的镜像,然后开始安装系统。 光盘&am…

算法实战:亲自写红黑树之二 完整代码

此文承接:算法实战:亲自写红黑树之一-CSDN博客 目录 一、项目结构 二、辅助代码a.h 三、红黑树代码rbtree.h 四、测试代码main.cpp 五、运行效果 六、代码详解 一、项目结构 这里给出的代码是实际可以运行的代码。 运行环境:VS2022&am…

Python 如何实现适配器设计模式?什么是适配器(Adapter)设计模式?

什么是适配器设计模式? 适配器(Adapter)设计模式是一种结构型设计模式,它允许接口不兼容的类之间进行合作。适配器模式充当两个不兼容接口之间的桥梁,使得它们可以一起工作,而无需修改它们的源代码。 主要…

Hive入门--学习笔记

1,Apache Hive概述 定义: Hive是由Facebook开源用于解决海量结构化日志的数据统计,它是基于大数据生态圈Hadoop的一个数据仓库工具。 作用: Hive可以用于将结构化的数据文件【映射】为一张表,并提供类SQL查询功能。 H…

什么是原生IP与广播IP?如何区分?为什么需要用原生IP?

在代理IP中,我们常常听到原生IP与广播IP,二者有何区别?如何区分呢?下面为大家详细讲解。 一、什么是原生IP 原生IP地址是互联网服务提供商(ISP)直接分配给用户的真实IP地址,无需代理或转发。此…

OpenGL_Learn12(光照)

续OpenGL_Learn11(光照)-CSDN博客 1. 镜面高光 和漫反射光照一样,镜面光照也决定于光的方向向量和物体的法向量,但是它也决定于观察方向,例如玩家是从什么方向看向这个片段的。镜面光照决定于表面的反射特性。 我们通…

Redis:详解5大数据类型及其常用命令

目录 Redis键(key)字符串(String)简介常用命令数据结构简介常用命令 列表(List)简介常用命令数据结构 集合(Set)简介常用命令数据结构 哈希(Hash)简介常用命令…

Java排序算法之希尔排序

希尔排序(Shell Sort)又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。它的基本思想是:首先将整个数组按照一定的间隔分成若干个子序列,然后对每个子序列分别进行插入排序,减小间隔&#…

异步注解@Async失效的原因

在方法上加上Async注解,然后去启动类加上EnableAsync启动注解开启异步Async失效的原因 1、注解Async的方法不是public方法 2、注解Async的返回值只能为void或者Future 3、注解Async方法使用static修饰也会失效 4、spring无法扫描到异步类,没加注解Async …

AI大模型低成本快速定制法宝:RAG和向量数据库

文章目录 1. 前言2. RAG和向量数据库3. 论坛日程4. 购票方式 1. 前言 当今人工智能领域,最受关注的毋庸置疑是大模型。然而,高昂的训练成本、漫长的训练时间等都成为了制约大多数企业入局大模型的关键瓶颈。 这种背景下,向量数据库凭借其独特…

【yolov5报错解决】ModuleNotFoundError: No module named‘ultralytics.yolo‘

今天跑yolov5遇见一个报错,具体内容如下: 上面显示我没有ultralytics.yolo这个模块,但是我已经安装了ultralytics,同时,我也尝试了网上的方法pip install ultralytics.yolo,但是仍然得不到解决&#xff0c…

ai语音电销机器人电销行业要怎么降低封号率?

工信部对电话营销电话的管控越来越严格,企业电销行业的发展受到了很多限制,因为电话销售人员在进行销售工作的时候,经常会因为各种原因触发封号机制,导致手机卡号被封,那企业电销行业要怎么降低封号率? 很多…

图像格式导致halcon读取失败

图像格式: JPEG (jpg),文件头:FF D8 FF PNG (png),文件头:89 50 4E 47 GIF (gif),文件头:47 49 46 38 Windows Bitmap (bmp),文件头:42 4D 打开软件“notepad”使用16进…

win11无损关闭系统更新

1、窗口键R,打开运行窗口,输入regedit。 2、打开地址:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 3、新建DWORD(32位)值(D),重命名“FlightSettingsMaxPauseDays” 4、…

正则匹配去除HTMl标签

正则匹配去除HTMl标签 案例&#xff1a;如在textarea中去除标签 操作方法 val.replace(/<[^>]>/g, ‘’))

基于SSM的校园停车场管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Mysql执行报错:[Err] 1292 - Truncated incorrect DOUBLE value:***

MySQL执行语句抛出异常&#xff1a; 上面错误提示概是下面几种情况&#xff1a; 数据类型不匹配&#xff1a;在进行数值比较或运算时&#xff0c;数据类型可能不匹配。例如&#xff0c;将一个字符串值与一个 DOUBLE 类型的列进行比较或运算&#xff0c;或者将一个非数字字符串…

Qt QWebSocket实现JS调用C++

目录 前言1、QWebChannel如何与网页通信2、QWebSocketQWebChannel与网页通信2.1 WebSocketTransport2.2 WebSocketClientWrapper2.3 初始化WebSocket服务器2.4 前端网页代码修改 总结 前言 本篇主要介绍实现JS调用C的另一种方式&#xff0c;即QWebSocketQWebChannel。与之前的…

论文阅读:YOLOV: Making Still Image Object Detectors Great at Video Object Detection

发表时间&#xff1a;2023年3月5日 论文地址&#xff1a;https://arxiv.org/abs/2208.09686 项目地址&#xff1a;https://github.com/YuHengsss/YOLOV 视频物体检测&#xff08;VID&#xff09;具有挑战性&#xff0c;因为物体外观的高度变化以及一些帧的不同恶化。有利的信息…

韦东山linux驱动开发学习【常更】

1.linux目录简单介绍 2.直接运行需要在$path路径下