openvpn教程

1. 环境准备

主机名

功能

IP

openvpn

openvpn server服务端

10.0.0.5, 172.16.1.5

windows

windows 笔记本 openvpn 客户端

2. 安装证书创建工具easy-rsa和openvpn

因为OpenVPN 使用 easy-rsa 来管理PKI所需要的密钥和证书

10.0.0.5安装 yum -y install easy-rsa openvpn

mkdir -p /opt/easy-rsa
cp -a /usr/share/easy-rsa/3.0.8/* /opt/easy-rsa/
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /opt/easy-rsa/vars
#vars 文件里定义了后续生成密钥和证书所需要的环境变量
]# cat > /opt/easy-rsa/vars <<EOF
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "shenzhen"
set_var EASYRSA_REQ_CITY "shenzhen"
set_var EASYRSA_REQ_ORG "tom"
set_var EASYRSA_REQ_EMAIL "tom@qq.com"
set_var EASYRSA_NS_SUPPORT "yes"
EOF

3. 配置流程

  1. 创建dh-pem算法文件
  2. 创建CA证书密钥对
  3. 创建server密钥对,启动openvpn
  4. 创建用户密钥对,生成配置文件发给用户 (不同用户重复此步骤)
  5. 用户在windows下载openvpn客户端,把配置文件放在config目录下,连接即可

3.1. 创建dh-pem算法文件

#为了在Server和Client之间交换密钥,需要创建Diffie-Hellman文件
[root@openvpn easy-rsa]# ./easyrsa gen-dh
DH parameters of size 2048 created at /opt/easy-rsa/pki/dh.pem

3.2. 创建CA证书密钥对

首先, 我们需要生成CA根密钥和证书, 用来给VPN Server和Client的证书进行签名

###02 充当权威机构 创建ca证书  
######1.初始化,在当前目录创建PKI目录,用于存储证书
cd /opt/easy-rsa/
]# ./easyrsa init-pki
Your newly created PKI dir is: /opt/easy-rsa/pki
#初始化完成 显示你可以尝试创建 CA证书 ,初始化后的目录在 pki下面

######2.创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他可默认  
##温馨提示: 加上密码
[root@openvpn easy-rsa]# ./easyrsa build-ca
###创建后生成 ca证书和私钥
pki/ca.crt           #生成的CA证书
pki/private/ca.key   #生成的CA密钥

3.3. 创建server密钥对拷贝到openvn,启动openvpn

##01 创建server证书,nopass表示不加密私钥文件,其他可默认
./easyrsa gen-req myvpn nopass
##02 给server证书签名,首先是对一些信息的确认,可以输入yes,提示输入的密码是ca证书密码
./easyrsa sign-req server myvpn
#生成下面几个文件
#/opt/easy-rsa/pki/reqs/myvpn.req
#/opt/easy-rsa/pki/private/myvpn.key
#/opt/easy-rsa/pki/issued/myvpn.crt

#3 把ca.crt,dh.pem,myvpn.crt,myvpn.key拷贝到openvpn目录
cp pki/ca.crt pki/dh.pem pki/issued/myvpn.crt pki/private/myvpn.key /etc/openvpn/server/
#_________________________________________________________________
#4 创建openvpn的server配置文件
cat > /etc/openvpn/server/server.conf <<EOF
port 1194
proto udp
dev tun
ca server/ca.crt
dh server/dh.pem
cert server/myvpn.crt
key  server/myvpn.key
server 10.8.0.0 255.255.255.0
push "route 172.16.1.0 255.255.255.0"
#ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 100
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
client-to-client
persist-key
persist-tun
duplicate-cn
EOF
#_________________________________________________________________________________
#配置文件说明
port 1194 						#端口
proto udp						#协议
dev tun							#采用路由隧道模式tun
ca server/ca.crt				#ca证书文件位置   /etc/openvpn
dh server/dh.pem						#交换证书校验算法 /etc/openvpn
cert server/myvpn.crt			#服务端公钥名称 /etc/openvpn
key server/myvpn.key			#服务端私钥名称 /etc/openvpn
server 10.8.0.0 255.255.255.0   #给客户端分配地址池(ip地址范围),注意:不能和VPN服务器内网网段有相同
push "route 172.16.1.0 255.255.255.0"   #客户端连接后,推送给客户端的路由规则,客户端想访问172.16.1.0/24 网段联系openvpn服务端
#ifconfig-pool-persist ipp.txt           #地址池记录文件位置 未来让openvpn 客户端固定ip地址使用的.
keepalive 10 120                        #存活时间,10秒ping一次,120 如未收到响应则视为断线
max-clients 100                         #最多允许100个客户端连接
status /var/log/openvpn-status.log      #日志记录位置openvpn状态
log /var/log/openvpn.log                #openvpn日志记录位置
verb 3                                  #verbose 日志输出级别   数字越大越详细 最多11(debug)
client-to-client                        #客户端与客户端之间支持通信
persist-key     #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys 对私钥进行缓存.
persist-tun     #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
duplicate-cn    #客户端密钥(证书和私钥)是否可以重复
#_________________________________________________________________________________
#——————————————————————————————————————————————————————————————————
#5 openvpn@.service表示可以带参数启动, 这里只修改--config %i/%i.conf路径
[root@openvpn pki]# cat /usr/lib/systemd/system/openvpn@.service 
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=network.target

[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config %i/%i.conf

[Install]
WantedBy=multi-user.target
You have new mail in /var/spool/mail/root
#——————————————————————————————————————————————————————————————————
#启动openvpn服务
[root@openvpn pki]# systemctl enable --now openvpn@server
[root@openvpn pki]# ps -ef|grep openvpn
root      45031      1  0 13:04 ?        00:00:00 /usr/sbin/openvpn --cd /etc/openvpn/ --config server/server.conf
root      45421  26850  0 13:08 pts/1    00:00:00 grep --color=auto openvpn
[root@openvpn pki]# ss -tuanlp|grep openvpn
udp    UNCONN     0      0         *:1194                  *:*                   users:(("openvpn",pid=45031,fd=5))
#——————————————————————————————————————————————————————————————————

3.4. 创建用户密钥,生成配置文件发给用户 (不同用户重复此步骤)

#1.创建client端证书和私钥文件
./easyrsa gen-req jack nopass
#2.给client端证书签名,提示输入的密码是ca证书密码
./easyrsa sign-req client jack
#3 拷贝客户端密钥对到/etc/openvpn/client/jack目录,并创建客户端配置文件
mkdir -p /etc/openvpn/client/jack/
cp pki/ca.crt pki/issued/jack.crt pki/private/jack.key /etc/openvpn/client/jack/
#4 创建客户配置文件
cat >/etc/openvpn/client/jack/jack.ovpn<<EOF
client
dev tun
proto udp
remote 10.0.0.5 1194
resolv-retry infinite
nobind
ca ca.crt
cert jack.crt
key jack.key
verb 3
persist-key
EOF
#_配置文件说明________________________________________________________________________
client                  #指定当前VPN是客户端
dev tun                 #使用tun隧道传输协议
proto udp               #使用udp协议传输数据
remote 10.0.0.5 1194   #openvpn服务器IP地址端口号
resolv-retry infinite   #断线自动重新连接,在网络不稳定的情况下非常有用
nobind                  #不绑定本地特定的端口号
ca ca.crt               #指定CA证书的文件路径
cert jack.crt         #指定当前客户端的证书文件路径
key jack.key          #指定当前客户端的私钥文件路径
verb 3                  #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
persist-key             #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys

#创建多个用户密钥目录结构如下
[root@openvpn openvpn]# tree client/
client/
└── jack
    ├── ca.crt
    ├── jack.crt
    ├── jack.key
    └── jack.ovpn
└── sara
    ├── ca.crt
    ├── sara.crt
    ├── sara.key
    └── sara.ovpn

3.5. 用户在windows下载openvpn客户端,把配置文件放在config目录下,连接即可

客户端链接

#1. 用户下载安装客户端
#2. 把/etc/openvpn/client/下面的用户目录发给用户
#3. 用户把收到的文件放到C:\Program Files\OpenVPN\config\目录下即可
#4. 启动openvpn客户端,任务栏右击logo,在弹出的选项中点击连接,即可连接

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 OpenVPN 的使用教程,基本上可以分为两个部分,一是安装配置 OpenVPN 服务端,二是安装配置 OpenVPN 客户端。下面是简单的步骤: 1. 安装 OpenVPN 服务端 (1) 在 Linux 系统中,可以使用命令行下载安装 OpenVPN: sudo apt-get update sudo apt-get install openvpn (2) 下载 OpenVPN 安装程序并按照提示安装。 2. 配置 OpenVPN 服务端 (1) 生成 CA 和服务器证书和密钥: cd /etc/openvpn/easy-rsa source vars ./clean-all ./build-ca ./build-key-server server ./build-dh (2) 配置 OpenVPN: sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/ sudo vi /etc/openvpn/server.conf 修改以下参数: secret ta.key cipher AES-128-CBC auth SHA256 user nobody group nogroup push "redirect-gateway def1 bypass-dhcp" (3) 配置虚拟网络: sudo vi /etc/sysctl.conf 将以下行取消注释并保存: net.ipv4.ip_forward=1 使配置生效: sudo sysctl -p (4) 配置防火墙: sudo ufw allow 1194/udp (5) 重启服务: sudo systemctl restart openvpn 3. 安装 OpenVPN 客户端 (1) 在 Windows 上,可以下载 OpenVPN Connect 并按照提示安装。 (2) 在 Linux 上,可以使用命令行下载安装 OpenVPN: sudo apt-get update sudo apt-get install openvpn 4. 配置 OpenVPN 客户端 (1) 下载客户端证书和密钥: scp user@<server_ip>:/etc/openvpn/easy-rsa/keys/client.crt ~/ scp user@<server_ip>:/etc/openvpn/easy-rsa/keys/client.key ~/ scp user@<server_ip>:/etc/openvpn/ta.key ~/ (2) 在 Windows 上,打开 OpenVPN Connect 并导入证书和密钥。 (3) 在 Linux 上,可以使用命令行连接 OpenVPN: sudo openvpn --config /path/to/client.ovpn 其中 client.ovpn 需要根据实际情况进行修改。 以上就是使用 OpenVPN 的基本步骤,希望对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值