ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenVPN 搭建部署--实现外网访问内网

2021-07-12 13:34:33  阅读:6122  来源: 互联网

标签:key -- OpenVPN rsa server client easy openvpn 搭建


环境准备:

openvpn client 10.0.0.1 外网服务器
openvpn server 外网IP 10.0.0.201
			   内网IP 172.16.1.201
jumpserver 172.16.1.41 内网服务器

OpenVPN服务端搭建(10.0.0.201)

10.0.0.201安装easy-rsa工具,用来生成证书

[root@ovpn ~]# yum -y install easy-rsa

新建目录,复制easy-rsa安装后相关文件到新目录,准备制作ca证书

mkdir /opt/easy-rsa
cp -a  /usr/share/easy-rsa/3.0.8/* .
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars

修改easy-rsa配置文件,设置制作证书时需要填入的相关信息

[root@ovpn easy-rsa]# > vars
[root@ovpn easy-rsa]# cat vars 
if [ -z "$EASYRSA_CALLER" ]; then
        echo "You appear to be sourcing an Easy-RSA 
'vars' file." >&2
        echo "This is no longer necessary and is 
disallowed. See the section called" >&2
        echo "'How to use this file' near the top 
comments for more details." >&2
       return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "oldboy"
set_var EASYRSA_REQ_EMAIL "oldboy@qq.comm"
set_var EASYRSA_NS_SUPPORT "yes"

easyrsa初始化后,自动在当前目录创建PKI目录,主要用于存储证书

[root@ovpn easy-rsa]# ./easyrsa init-pki

创建根证书,会提示设置密码,密码用于之后生成的openvpn server和openvpn client证书签名时使用,创建过程中还有其他提示,默认即可

[root@ovpn easy-rsa]# ./easyrsa build-ca
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/easy-rsa/pki/ca.crt

创建openvpn server端证书和私钥文件,nopass表示不加密私钥文件,其他可默认

[root@ovpn easy-rsa]# ./easyrsa gen-req server nopass
Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa/pki/reqs/server.req
key: /opt/easy-rsa/pki/private/server.key

给openvpn server端证书签名,提示Confirm request details:时,输入yes,然后提示 Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:时,输入创建ca根证书时所设置的密码

生成server端证书及私钥文件

[root@ovpn easy-rsa]# ./easyrsa sign server server
Certificate created at: /opt/easy-rsa/pki/issued/server.crt
key: /opt/easy-rsa/pki/private/server.key

创建Diffie-Hellman文件,秘钥交换算法

[root@ovpn easy-rsa]# ./easyrsa gen-dh
DH parameters of size 2048 created at /opt/easy-rsa/pki/dh.pem

创建openvpn client端证书和私钥文件,nopass表示不加密私钥文件,其他可默认

[root@ovpn easy-rsa]# ./easyrsa gen-req client nopass
Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa/pki/reqs/client.req
key: /opt/easy-rsa/pki/private/client.key

给openvpn client端证书签名,提示Confirm request details:时,输入yes,然后提示 Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:时,输入创建ca根证书时所设置的密码

生成client端证书及私钥文件

[root@ovpn easy-rsa]# ./easyrsa sign client client
Certificate created at: /opt/easy-rsa/pki/issued/client.crt
key: /opt/easy-rsa/pki/private/client.key

至此,server,client证书与私钥文件生成完毕,生成的目录结构如下:

[root@m01 /opt/easy-rsa]# tree  
.
├── easyrsa   #管理命令
├── pki
│   ├── ca.crt  #ca证书 服务端与客户端创建证书和私钥需要使用
│   ├── dh.pem  #认证算法 秘钥交换算法
│   ├── issued
│   │   ├── client.crt   #客户端证书
│   │   └── server.crt   #服务端证书
│   ├── private
│   │   ├── ca.key    
│   │   ├── client.key   #客户端私钥
│   │   └── server.key   #服务端私钥

10.0.0.201安装Openvpn软件包

[root@ovpn easy-rsa]# yum -y install openvpn

openvpn server端添加配置文件

[root@ovpn easy-rsa]# cat /etc/openvpn/server.conf 
port 1194                               #绑定的端口
proto udp                               #指定传输协议
dev tun                                 #采用路由隧道模式(指定虚拟网卡设备名)
ca ca.crt                               #ca证书文件位置/etc/openvpn   /etc/opnevpn/server  
cert server.crt                         #服务端公钥名称/etc/openvpn 
key server.key                          #服务端私钥名称/etc/openvpn 
dh dh.pem                               #交换证书 校验算法/etc/openvpn 
server 10.8.0.0 255.255.255.0           #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同
push "route 172.16.1.0 255.255.255.0"   #给客户端设置允许客户端访问内网172.16.1.0网段
ifconfig-pool-persist ipp.txt           #地址池记录文件位置 未来让openvpn 客户端固定ip地址使用的
keepalive 10 120                        #存活时间,10秒ping一次,超过120秒如未收到响应则视为断线
max-clients 100                         #最多允许100个客户端连接
status openvpn-status.log               #日志记录位置 openvpn状态
log /var/log/openvpn.log                #openvpn日志记录位置
verb 3                                  #openvpn版本
client-to-client                        #客户端与客户端之间支持通信
persist-key     #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。
persist-tun     #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
duplicate-cn    #客户端密钥(证书和私钥)是否可以重复

复制server证书及密钥至openvpn

cp /opt/easy-rsa/pki/ca.crt /etc/openvpn/
cp /opt/easy-rsa/pki/issued/server.crt /etc/openvpn/
cp /opt/easy-rsa/pki/private/server.key /etc/openvpn/
cp /opt/easy-rsa/pki/dh.pem /etc/openvpn/

启动openvpn server服务

[root@ovpn ~]# systemctl start openvpn@server
[root@ovpn ~]# systemctl enable openvpn@server

检查是否启动

[root@ovpn ~]# ss -antul|grep 1194
udp    UNCONN     0      0         *:1194                  *:*                  
[root@ovpn ~]# 

查看创建的虚拟网卡

[root@ovpn ~]# ip a |grep tun0
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0

开启内核数据包转发功能

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

10.0.0.1安装windows openvpn客户端,并配置

将刚生成的client证书及密钥等相关文件复制至windows openvpn客户端安装目录D:\Program Files\OpenVPN\config下面

ca.crt 
client.crt
client.key 

新建客户端配置文件 D:\Program Files\OpenVPN\config\client.ovpn

client                  #指定当前VPN是客户端
dev tun                 #使用tun隧道传输协议
proto udp               #使用udp协议传输数据
remote 10.0.0.201 1194   #openvpn服务器IP地址端口号
resolv-retry infinite   #断线自动重新连接,在网络不稳定的情况下非常有用
nobind                  #不绑定本地特定的端口号
ca ca.crt               #指定CA证书的文件路径
cert client.crt         #指定当前客户端的证书文件路径
key client.key          #指定当前客户端的私钥文件路径
verb 3                  #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
persist-key             #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys

至此openvpn服务端与客户端配置完毕,运行windows客户端exe文件,直连服务端即可。
openvpn客户端与服务端已建立连接,已建立专用网络隧道,通过客户端去访问openvpn服务器所在的内网其他服务器172.16.1.41

当外网访问172.16.1.41内网服务器时,请求数据包通过openvpn server能够进来,但是没有响应数据回应,是因为内网服务器找不到外网服务器IP,需要给内网服务器指明一条路去寻找。

二种方法:

1、内网服务器设置添加一条路由,凡是访问10.8.0.0节点找网关服务器172.16.1.201(openvpn server的内网IP)
[root@backup ~]# route add -net 10.8.0.0/24 gw 172.16.1.201

2、将内网服务器的eth1网关设置为172.16.1.201

测试

从10.0.0.1windows命令行ping 172.16.1.41内网服务器

标签:key,--,OpenVPN,rsa,server,client,easy,openvpn,搭建
来源: https://blog.csdn.net/oyangyufu/article/details/118672836

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有