-
关闭默认防火墙
-
systemctl stop firewalld.service systemctl disable firewalld.service
-
-
安装iptables(即便是centos7以上系统防火墙是fireword也同样需要安装设置iptables)
-
yum install -y iptables
-
-
升级iptables
-
yum update iptables
-
-
安装iptables-services
-
yum install -y iptables-services
-
-
设置开机启动
-
systemctl enable iptables
-
-
启动
-
systemctl start iptables
-
-
清空所有默认规则
-
iptables -F
-
-
清空所有自定义规则
-
iptables -X
-
-
配置openvpn的nat功能,将10.81.22.0网段(当前内网网段)(不加-s 10.81.22.0–>ip/16–>i子网掩码就表示所有网段)的包转发到ens32–>i网卡名称口
-
iptables -t nat -A POSTROUTING -s 10.81.22.0/16 -o ens32 -j MASQUERADE
-
-
添加FORWARD白名单
-
iptables -A FORWARD -i tun+ -j ACCEPT
-
-
保存iptables配置
-
service iptables save
-
-
重启iptables
-
service iptables restart
-
-
vim /etc/sysctl.conf
-
添加下列代码至文件末尾 net.ipv4.ip_forward = 1
-
-
vim /etc/sysctl.d/99-sysctl.conf
-
添加下列代码至文件末尾 net.ipv4.ip_forward = 1
-
-
sysctl -p
-
为vpn安装openvpn及所有所需软件
-
安装EPEL仓库
-
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
-
rpm -Uvh epel-release-6-8.noarch.rpm
-
-
安装openvpn
-
yum install openvpn
-
-
安装openvpn最新的easy-rsa,该包用来制作ca证书,服务端证书,客户端证书。最新的为easy-rsa3
-
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
-
unzip master.zip
-
-
将解压得到的文件夹easy-rsa-master重命名为easy-rsa
-
mv easy-rsa-mater/ easy-rsa/
-
然后将的到的easy-ras文件夹复制到/etc/openvpn/目录下
-
cp -R easy-rsa/ /etc/openvpn/
-
-
-
-
编辑vars文件,根据自己环境配置
-
先进入/etc/openvpn/easy-rsa/easyrsa3目录
-
cd /etc/openvpn/easy-rsa/easyrsa3/
-
-
复制vars.example 为vars
-
cp vars.example vars
-
-
修改下面字段,命令:vi vars,然后修改,最后wq保存
-
//根据自己情况更改 set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "BJ" set_var EASYRSA_REQ_CITY "BEIJING" set_var EASYRSA_REQ_ORG "HUANQIU" set_var EASYRSA_REQ_EMAIL "1274716901@qq.com" set_var EASYRSA_REQ_OU "My OpenVPN"
-
-
-
创建服务端证书及key
-
进入/etc/openvpn/easy-rsa/easyrsa3/目录初始化
-
./easyrsa init-pki
-
-
创建根证书
-
./easyrsa build-ca
-
- 注意:在上述部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置个独一无二的。
-
-
创建服务器端证书
-
./easyrsa gen-req server nopass
-
- 注:该过程中需要输入common name,随意但是不要跟之前的根证书的一样
-
-
签约服务端证书
-
./easyrsa sign server server
-
- 注:该命令中.需要你确认生成,要输入yes,还需要你提供我们当时创建CA时候的密码。如果你忘记了密码,那你就重头开始再来一次吧。
-
-
创建Diffie-Hellman,确保key穿越不安全网络的命令
-
./easyrsa gen-dh
-
-
-
-
创建客户端证书
-
进入root目录新建client文件夹,文件夹可随意命名,然后拷贝前面解压得到的easy-ras文件夹到client文件夹,进入下列目录
-
cd /root/ mkdir client && cd client cp -R easy-rsa/ ./ cd client/easy-rsa/easyrsa3/
-
-
初始化
-
./easyrsa init-pki
-
-
创建客户端key及生成证书(记住生成是自己输入的密码)
-
./easyrsa gen-req hywx //名字自己定义
-
-
-
将的到的hywx.req导入然后签约证书
-
进入到/etc/openvpn/easy-rsa/easyrsa3/
-
cd /etc/openvpn/easy-rsa/easyrsa3/
-
-
导入req
-
./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/hywx.req hywx
-
-
签约证书
-
./easyrsa sign client hywx
-
- 注:这里生成client所以必须为client,hywx要与之前导入名字一致
-
-
这步很重要,现在说一下我们上面都生成了什么东西(如果文件不全重新执行以上步骤)
-
服务端:(etc/openvpn/easy-rsa/文件夹)
-
/etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/hywx.req /etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn/easy-rsa/easyrsa3/pki/issued/hywx.crt /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
-
-
客户端:(root/client/easy-rsa文件夹)
-
/root/client/easy-rsa/easyrsa3/pki/private/hywx.key /root/client/easy-rsa/easyrsa3/pki/reqs/hywx.req //这个文件被我们导入到了服务端文件所以那里也有
-
-
拷贝这些文件放入到相应位置。将下列文件放到/etc/openvpn/ 目录执行命令
-
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn
-
-
将下列文件放到/root/client 目录下执行命令
-
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/hywx.crt /root/client cp /root/client/easy-rsa/easyrsa3/pki/private/hywx.key /root/client
-
-
-
-
-
为服务端编写配置文件
-
当你安装好了openvpn时候,他会提供一个server配置的文件例子,在/usr/share/doc/openvpn-2.4.6/sample/sample-config-files下会有一个server.conf文件,我们将这个文件复制到/etc/openvpn
cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn
然后修改配置vi server.conf如下
#保留以下内容,其他均注释即可 local 10.81.22.184 #本机ip port 1194 proto tcp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key # This file should be kept secret dh /etc/openvpn/dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 comp-lzo max-clients 100 persist-key persist-tun status openvpn-status.log verb 3
- 注:每个项目都会有一大堆介绍,上述修改,openvpn提供的server.conf已经全部提供,我们只需要去掉前面的注释#,然后修改我们自己的有关配置。
-
-
下载openvpn客户端,并进行配置
-
用sftp将我们在vps生成的客户端证书和key下载到客户端电脑
-
ca.crt hywx.crt hywx.key //这三个文件
-
-
去官网下载openvpn客户端进行安装,然后安装目录找到simple-config
-
D:\develop\OpenVPN\sample-config\sample.ovpn
-
将client.ovpn 复制到D:\develop\OpenVPN\config下,当然我把客户端装在了D盘你根据自己情况选择.
-
将下载到的三个文件放入D:\develop\OpenVPN\config下然后如下
-
-
编辑client.ovpn(可以自行创建该文件将下列内容放进文件中,或只保留下列文件也可以)
-
client dev tun proto tcp remote 101.254.175.100 18494 #对应openvpn的外网ip以及开放端口 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert hywx.crt key hywx.key comp-lzo ns-cert-type server route 10.81.22.0 255.255.0.0 verb 3
-
-
-
-
启动
- 服务端
-
systemctl start openvpn@server.service(启动)
-
systemctl status openvpn@server.service (查看状态)
-
systemctl restart openvpn@server.service (重启)
-
lsof -i:1194(查看启动是否成功)
-
- 客户端
- 打开openvpn gui启动,注意在启动后需要输入创建hywx.key时候的密码!我前面让你记住过的。然后进入如下界面
- 鉴于以上操作,你的openvpn已经应该可以争取运行了如下:
- 打开openvpn gui启动,注意在启动后需要输入创建hywx.key时候的密码!我前面让你记住过的。然后进入如下界面
- 服务端
-
设置使用password登录详解
-
修改服务器端配置
-
vim /etc/openvpn/server.conf 在配置文件最后面添加如下几行数据 script-security 3 #允许通过环境变量将密码传递给脚本 auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env #提供一个用户名密码对 client-cert-not-required #不使用客户端证书,使用密码对 username-as-common-name #使用认证用户名,不使用证书的common name
-
-
创建checkpsw.sh脚本,放在/etc/openvpn/路径下
-
#!/bin/sh ########################################################### # checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se> # # This script will authenticate OpenVPN users against # a plain text file. The passfile should simply contain # one row per user with the username first followed by # one or more space(s) or tab(s) and then the password. PASSFILE="/etc/openvpn/psw-file" LOG_FILE="/var/log/openvpn/openvpn-password.log" TIME_STAMP=`date "+%Y-%m-%d %T"` ########################################################### if [ ! -r "${PASSFILE}" ]; then echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE} exit 1 fi CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}` if [ "${CORRECT_PASSWORD}" = "" ]; then echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE} exit 1 fi if [ "${password}" = "${CORRECT_PASSWORD}" ]; then echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE} exit 0 fi echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE} exit 1
-
-
创建psw-file文件
-
cd /etc/openvpn echo "shenzhen password%1" > psw-file #创建账号密码,可以多行,每行一组
-
-
重启服务
-
客户端配置
-
client dev tun proto tcp remote 101.254.175.100 18494(对应你的openvpn服务端ip+端口) resolv-retry infinite nobind persist-key persist-tun ca ca.crt ;cert hywx.crt ;key hywx.key comp-lzo ns-cert-type server route 10.81.22.0 255.255.0.0 verb 3 auth-user-pass #客户端使用账号密码登录 reneg-sec 360000
-
-
-
连接成功
centos7.5安装openvpn2.4.6
于 2020-07-23 15:39:43 首次发布