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 的相关文章

  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 路由是否会影响具有绑定源地址的套接字?

    假设我有两个网络接口 eth0有地址10 0 0 1 eth1有地址192 168 0 1 Using route or ip route add我已将其设置为路由 所有地址至eth0 1 2 3 4只为了eth1 所以数据包到1 2 3
  • 在bash中用其他文件过滤一个文件

    我有一个带有数字的文件 例如 cat file 31038467 32048169 33058564 34088662 35093964 31018168 31138061 31208369 31538163 31798862 和其他例如
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • VSCODE 在 Linux 上不适用于我

    刚刚了解 VSCODE 很高兴尝试一下 我下载 解压并运行可执行文件 我得到 Code 2183 0429 201254 ERROR browser main loop cc 170 Running without the SUID san
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 为什么 proc/ID/maps 有多个共享库条目

    我正在查看嵌入式Linux下的proc ID maps 我注意到一些共享库在进程的内存映射中出现了几次 为什么会这样呢 40094000 400d9000 r xp 00000000 b3 09 723 system lib libc so
  • 从sourceforge下载最新版本

    我正在尝试在 bash 脚本中从 Sourceforge 下载最新版本的graphicsmagick wget q https sourceforge net projects graphicsmagick files latest dow
  • 为什么 RHEL 上的 bash 中 `read -t` 没有超时?

    Why read t在 RHEL5 或 RHEL6 上从管道读取时不会超时 这是我的示例 在从管道读取数据时 我的 RHEL 盒子不会超时 tail f logfile log grep something read t 3 variabl
  • 在哪里可以找到所有 C 标准库的源代码?

    我正在寻找所有 C 标准库的完整源代码 也就是说 我正在寻找 stdio h stdlib h string h math h 等的源代码 我想看看它们是如何创建的 我认为这取决于不同的平台 但 Linux 或 Windows 都会受到欢迎
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • Tk 初始化失败:无显示名称且无 $DISPLAY 环境变量

    我试图从 Ubuntu 终端调用 Centos 服务器上的工具 我收到以下错误 Tk 初始化失败 没有显示名称 也没有 DISPLAY 环境变量 请帮我解决这个问题 提前致谢 连接到你的 CentOS 机器ssh Y其中 每man ssh
  • 有没有办法改变vim的默认模式

    有谁知道如何更改vim的默认模式 它的默认模式是命令模式 但是我可以将其更改为插入模式吗 只需将以下行添加到您的 vimrc 中 start Vim s default mode will be changed to Insert mode
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • mod_perl 无法看到 /tmp 中的文件

    我有一些 mod perl 代码试图访问 tmp 下的文件 但它抛出 没有这样的文件或目录 错误 我在代码中添加了一个 ls al tmp 来查看 Perl 在目录中看到的内容 它只给了我 和 drwxrwxrwt 2 root root
  • C 标准库函数与系统调用。哪个是“open()”?

    I know fopen 在C标准库中 所以我绝对可以调用fopen C 程序中的函数 我感到困惑的是为什么我可以打电话给open 功能也一样 open 应该是系统调用 所以它不是标准库中的C函数 因为我能够成功地调用open 函数 我调用
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下

随机推荐

  • 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 复制配置示例