centos安装配置OPEN*PN

2023-11-13

安装程序

yum install -y epel-release && yum -y update && yum install -y easy-rsa openvpn 

生成证书密钥

创建PKI

mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/3.0.8/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa/
./easyrsa init-pki

生成CA证书

 ./easyrsa build-ca

生成过程中需要创建CA密码,密码要记住。
输出:

[root@izwz9idz1lgutvrfidg8inz easy-rsa]#  ./easyrsa build-ca
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Enter New CA Key Passphrase:                      	设置CA密码,下面有用
Re-Enter New CA Key Passphrase:                   	确认密码
Generating RSA private key, 2048 bit long modulus
...........................+++
..+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:openvpnCA    随便输入证书名
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt


为服务器生成证书密钥

server 为证书名称,可以自由替换
nopass 是免密码,避免启动openvpn服务需要输入证书密码

./easyrsa build-server-full  server nopass

输出:

[root@izwz9idz1lgutvrfidg8inz easy-rsa]# ./easyrsa build-server-full  server nopass
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Generating a 2048 bit RSA private key
.................................................+++
.............+++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-14878.omWrcN/tmp.bsrEu4'
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-14878.omWrcN/tmp.VTOMKj
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:      输入刚刚创建CA证书时设置的密码
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Sep 13 15:11:37 2024 GMT (825 days)

Write out database with 1 new entries
Data Base Updated


为客户端生成证书密钥

根据需要的客户端证书数量创建证书,client1为证书名,可自由替换

# 创建名为client1的证书密钥
./easyrsa build-client-full  client1 
#不想客户端需要输入密码可以使用下面命令,建议使用密码
# ./easyrsa build-client-full  client1 nopass

输出:

[root@izwz9idz1lgutvrfidg8inz easy-rsa]# ./easyrsa build-client-full  client1
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Generating a 2048 bit RSA private key
....................+++
........+++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-15014.QOzFN6/tmp.uQz8Xk'
Enter PEM pass phrase:                                      为客户端证书设置密码
Verifying - Enter PEM pass phrase:							确认密码
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-15014.QOzFN6/tmp.YgmEO6
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:  输入刚刚创建CA证书时设置的密码
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client1'
Certificate is to be certified until Sep 13 15:21:24 2024 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

生成Diffie hellman 参数

./easyrsa gen-dh

生成TLS认证密钥

openvpn --genkey --secret ta.key

编辑openvpn服务器配置文件

1.复制配置示例文件

cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf /etc/openvpn/server/server.conf

2.编辑配置文件

vim /etc/openvpn/server/server.conf

我使用的配置:

port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key  
dh /etc/openvpn/easy-rsa/pki/dh.pem
topology subnet
tls-auth  /etc/openvpn/easy-rsa/ta.key 0 
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 223.5.5.5"
push "dhcp-option DNS 223.6.6.6"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 3

部分配置解释:


# 监听那个IP
;local a.b.c.d

# 监听那个端口
port 1194

# 监听TCP协议还是udp协议?
proto tcp
;proto udp

# "dev tun"路由
# "dev tap" 桥接模式
;dev tap
dev tun

# 刚刚创建的ca证书的位置
ca /etc/openvpn/easy-rsa/pki/ca.crt
# 刚刚创建的服务器证书的位置
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
#刚刚创建的服务器证书密钥的位置
key /etc/openvpn/easy-rsa/pki/private/server.key  

# 刚刚生成的Diffie hellman 参数文件位置
dh /etc/openvpn/easy-rsa/pki/dh.pem

#客户端连接的服务器网络拓扑方式
#参考链接:https://community.openvpn.net/openvpn/wiki/Topology
;topology subnet

# VPN使用子网,
server 10.8.0.0 255.255.255.0

# 记录客户端使用的虚拟IP地址文件,重启可重新分配给客户端
ifconfig-pool-persist ipp.txt


#设置客户端那些ip段走openvpn通道
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

# 设置客户端所有流量都通过openvpn
push "redirect-gateway def1 bypass-dhcp"

# 配置客户端dns
;push "dhcp-option DNS 223.5.5.5"
;push "dhcp-option DNS 223.6.6.6"

#取消注释则客户端可以互相访问
;client-to-client

#取消注释则一个证书可以多个客户端使用
;duplicate-cn

# 每10秒Ping一次,如果在120秒的时间内没有收到Ping,则假设对端已经掉线
keepalive 10 120

# tls密钥 
tls-auth  /etc/openvpn/easy-rsa/ta.key 0 # This file is secret

# 加密方式,客户端配置需相同
cipher AES-256-CBC


#最大客户端数量
;max-clients 100

#减少openvpn系统权限
user nobody
group nobody

# 重启不重新读取或配置密钥、tun.
persist-key
persist-tun

#状态日志
status openvpn-status.log

# 日志,log每次重启截断,log-append追加
;log         openvpn.log
;log-append  openvpn.log

#日志等级
verb 3

设置NAT及防火墙

禁用防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

setenforce 0

开启ipv4转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

安装iptables

yum install iptables-services

设置网卡nat

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

启动openvpn

设置并启动openvpn

systemctl enable openvpn-server@server
systemctl start openvpn-server@server.service

检查状态

netstat -tlunp  
systemctl status openvpn-server@server

准备客户端文件

复制证书密钥到一个文件夹下

mkdir /etc/openvpn/client/client1
cp /etc/openvpn/easy-rsa/pki/ca.crt  /etc/openvpn/client/client1/
cp /etc/openvpn/easy-rsa/pki/issued/client1.crt /etc/openvpn/client/client1/
cp /etc/openvpn/easy-rsa/pki/private/client1.key  /etc/openvpn/client/client1/
cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/client/client1/

编辑客户端配置文件

#windows、macOS
vim /etc/openvpn/client/client1/client1.ovpn
#linux
vim /etc/openvpn/client/client1/client1.conf

client
dev tun
proto tcp
remote 111.111.111.111 1194   #修改111.111.111.111为服务器ip地址;1194为openvpn端口
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
remote-cert-tls server
cipher AES-256-CBC
verb 3

windos客户端使用

1.下载安装OpenVPN GUI :

2.将刚刚服务器上准备的客户端文件夹【/etc/openvpn/client/client1/】复制到客户端【C:\Program Files\OpenVPN\config】目录下面。
3.打开OpenVPN
在这里插入图片描述
4.输入client1证书生成时设置的密码即可连接成功
在这里插入图片描述

常见问题

连接成功但流量不走openvpn

检查服务器配置文件是否设置了那些流量经过openvpn

 #设置客户端那些ip段走openvpn通道
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

# 设置客户端所有流量都通过openvpn
push "redirect-gateway def1 bypass-dhcp"

TCP: connect to [AF_INET]111.111.111.111:1194 failed: Unknown error

检查端口是否可以访问

telnet 111.111.111.111 1194

检查防火墙设置,可能被iptables阻拦了

#清空iptables规则
iptables -F
#设置nat规则
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos安装配置OPEN*PN 的相关文章

  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • PKCS#11 引擎在 centos 6 上的 openssl 中不起作用

    我想向 OpenSSL 添加 PKCS 11 引擎 并且我使用 CentOS 6 2 我实际上加载引擎没有任何问题 如下所示 root localhost 05 06 18 openssl 1 0 1e openssl engine t d
  • 研究缓冲区溢出时应该使用哪些版本的 GCC 或标志?

    最近 作为计算机工程专业的本科生 我一直在研究缓冲区溢出 出于兴趣 我开始研究缓冲区溢出 但在尝试在我的计算机上用 GCC 4 9 1 在 Debian Jessie 中 编译的我自己的 C 程序中实现它们时遇到了困难 我听说较新的编译器中
  • 为什么 XRecordDisableContext() 不起作用?

    void Callback XPointer XRecordInterceptData pRecord std cout lt lt my logs n int main if auto const pDisplay XOpenDispla

随机推荐

  • HTTP-Tinyhttpd解析

    大家好 我是阿桃 一个想成为被点赞关注的程序员 工控行业 物联网行业 机器人行业软件开发可联系我 Tinyhttpd是一个微型的web服务器 浏览器与Web服务器之间的通信采用的是Http 所以一开始的切入点是HTTP协议 这里说一点如果有
  • 平滑处理

    平滑处理 smoothing 也称模糊处理 bluring 作用就是减少图像上的噪声或者失真 图像滤波 即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制 是图像预处理中不可缺少的操作 其处理效果的好坏将直接影响到后续图像处理和分析的
  • Metasploit(一)

    Metasploit木马 MSF模块介绍 auxiliary exploits payloads encoders nops post 木马管理 开启监听 连接多个木马 木马持久化 木马进程迁移 生成木马 生成木马 木马捆绑 木马混淆 劫持
  • C# 使用解构元组方式不用第三个变量交换值

    C 使用解构元组方式不用第三个变量交换值 C 7 0 新增了泛型ValueTuple 值元组类型 支持对元组的解构 通过解构可以将元组的字段依次赋值给每个变量 因此我们可以通过这种方式来实现不用第三个变量 交换两个变量的值 如下 strin
  • 解析MOS管的作用是什么-细说MOS管特性、性能参数、作用等

    MOS管概述 mos管是金属 metal 氧化物 oxide 半导体 semiconductor 场效应晶体管 或者称是金属 绝缘体 insulator 半导体 MOS管的source和drain是可以对调的 他们都是在P型backgate
  • 100天精通Python(数据分析篇)——第62天:pandas常用统计方法大全(含案例)

    文章目录 一 常用统计方法与案例 1 求和 sum 2 求平均值 mean 3 求最小值 min 4 求最大值 max 5 求中位数 median 6 求众数 mode 7 求方差 var 8 求标准差 std 9 求分布情况 descri
  • ROS机器人里程计模型

    1常用坐标系系统模型 在移动机器人技术研究中 最为常用的坐标系统是笛卡尔坐标系统 而在SLAM算法研究中 有如下几个比较常见的笛卡尔坐标系统 它们分别为机器人坐标系XR YR OR 传感器坐标系XS YS OS 世界坐标系XW YW OW
  • 【数据结构】双向链表

    博客主页 小王又困了 系列专栏 数据结构 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 双向链表 1 1带头双向循环链表的结构 二 链表的实现 2 1初始化 2 2尾插 2 3尾删 2 4头插 2 5头删 2 6在pos位置之
  • UBOOT命令总结(转)

    UBOOT命令总结 转 很好的UBOOT命令总结 我在起步时就是看的这篇东西 熟悉了以后就用 看自带帮助就行 Printenv 打印环境变量 Uboot gt printenvbaudrate 115200ipaddr 192 168 1
  • Xshell连接不上虚拟机的解决办法汇总

    一 关于ping的问题 1 虚拟机ping百度 2 windows下ping linux的ip地址 3 linux下ping windows 二 防火墙的问题 三 ssh服务 四 VM中的还原默认设置 还原后的更改设置 五 相关服务是否打开
  • C语言-蓝桥杯- 基础练习 高精度加法

    问题描述 输入两个整数a和b 输出这两个整数的和 a和b都不超过100位 算法描述 由于a和b都比较大 所以不能直接使用语言中的标准数据类型来存储 对于这种问题 一般使用数组来处理 定义一个数组A A 0 用于存储a的个位 A 1 用于存储
  • Android应用间跳转

    ClassName MainActivity Description 从一个应用跳转到另一个应用 author guoyizhe email gyzboy 126 com date 2015 6 9 下午3 49 07 public cla
  • 搭建pppoe server

    搭建PPPOE SERVER 搭建pppoe 成功了的话 就觉得TM超级简单 在centos更是5步左右就能搞定 1 yum install rp pppoe 安装pppoe 安装完成后 会有pppoe server命令 2 安装完成后 会
  • 华为的成功依靠的不是IPD

    几次聊天中 有人提到他们的公司在学习华为 贯彻IPD 这些企业都发展的比较大了 希望能用一套行之有效的管理方法来进行规范化管理 对于IPD我总是保持谨慎的态度 如果公司已经发展到一定阶段 内部形成了明确的部门分工 同时也出现了严重的部门墙
  • bind9+mysql搭建高可用DNS解析服务

    bind9 mysql搭建DNS解析服务 基本的架构图如下 安装步骤 安装依赖服务 yum install wget cmake ncurses boost zlib gcc libuv libuv devel libnghttp2 lib
  • FTP文件传输协议与部署,包括Linux系统、Windows系统和H3C路由交换设备部署

    1 FTP 1 1 定义 文件传输协议 File Transfer Protocol FTP 是用于在网络上进行文件传输的一套标准协议 它工作在 OSI 模型的第七层 TCP 模型的第四层 即应用层 使用 TCP 传输而不是 UDP 客户在
  • Linux环境下的Anaconda安装及使用

    Anaconda对于python就相当于Ubuntu对于Linux 即Anaconda是python的一个发行版 将python和许多常用的package打包 方便pythoners直接使用 像virtualenv pyenv等工具管理虚拟
  • 移动端适配多种方案详细分析

    目录 基本概念 1 像素 2 设备独立像素 3 设备像素比 device pixel ratio 4 分辨率 5 viewport 视口 适配方案 1 百分比 2 rem 3 vh vw 4 rem vw vh 5 媒体查询 media A
  • 小程序showLoading:网络请求前显示“加载中...”,请求完成时关闭加载中

    showLoading加载中提示框显示 以及消除提示框 wx showLoading title 加载中 wx request url success res fail 添加wx hideLoading 一定要添加到complete里 co
  • centos安装配置OPEN*PN

    centos安装配置OPENVPN 安装程序 生成证书密钥 创建PKI 生成CA证书 为服务器生成证书密钥 为客户端生成证书密钥 生成Diffie hellman 参数 生成TLS认证密钥 编辑openvpn服务器配置文件 1 复制配置示例