OpenVPN是不同于PPTP、L2TP的另一种VPN软件包,基于SSL的VPN。OpenVPN使用需要客户端支持。这里系统为CentOS6.4。
一、检查OpenVPN所需环境
OpenVPN需要TUN设备支持,还需要iptables的nat模块支持。
1、检查TUN模块:
modinfo tun
显示如下:
如果报错则不支持TUN设备。 2、在OpenVZ虚拟化的VPS上,需要管理员在母鸡上打开TUN/TAP设备。
cat /dev/net/tun
如果返回:
cat: /dev/net/tun: File descriptor in bad state
VPS的TUN/TAP已经可以使用。
如果返回:
cat: /dev/net/tun: No such device
或者其它,说明TUN/TAP设备没有被正确配置,需要与客服沟通开通TUN/TAP。
3、检查OpenVZ的VPS上iptables是否支持:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
如果返回:
iptables: Unknown error 4294967295
说明支持。
二、编译安装OpenVPN
1、安装依赖环境
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
2、安装OpenVPN
wget -c http://swupdate.openvpn.org/community/releases/openvpn-2.3.0.tar.gz tar zxvf openvpn-2.3.0.tar.gz cd openvpn-2.3.0 ./configure make make install mkdir –p /etc/openvpn cp -Rf sample /etc/openvpn/ cd ..
单独下载easy-rsa,制作ca证书,服务端证书,客户端证书
#openvpn-2.3.0.tar.gz 该版本源码不包含easy-rsa,所以需要单独下载安装 easy-rsa wget -c https://github.com/OpenVPN/easy-rsa/archive/master.zip unzip master mv easy-rsa-master easy-rsa cp -Rf easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa/easy-rsa/2.0
三、生成密钥和证书
vim vars #调到最后找到一下代码 export KEY_COUNTRY="CN" export KEY_PROVINCE="JN" export KEY_CITY="DZ" export KEY_ORG="lvtao" export KEY_EMAIL="admin@lvtao.net" export KEY_OU="lvtao" #x!保存退出 ln -s openssl-1.0.0.cnf openssl.cnf chmod +x vars source ./vars ./clean-all #制作ca证书 ./build-ca #制作服务端证书 ./build-key-server server #制作客户端证书 ./build-key client1 ./build-dh #打包keys tar zcvf keys.tar.gz keys/ #终端发送到客户端备用 sz keys.tar.gz
#keys中的文件说明
Filename |
Needed By |
Purpose |
Secret |
ca.crt |
server + all clients |
Root CA certificate |
NO |
ca.key |
key signing machine only |
Root CA key |
YES |
dh{n}.pem |
server only |
Diffie Hellman parameters |
NO |
server.crt |
server only |
Server Certificate |
NO |
server.key |
server only |
Server Key |
YES |
client1.crt |
client1 only |
Client1 Certificate |
NO |
client1.key |
client1 only |
Client1 Key |
YES |
cd /etc/openvpn/sample/sample-config-files/ cp server.conf ../../ #配置server.conf,具体参数不再累述 vi ../../server.conf #复制keys cd /etc/openvpn/easy-rsa/easy-rsa/2.0/keys cp -Rf ca.crt server.crt server.key dh2048.pem /etc/openvpn/ # 编辑/etc/sysctl.conf,找到net.ipv4.ip_forward = 0改成net.ipv4.ip_forward = 1保存。然后执行: sysctl –p #设置nat转发.注意最后192.168.122.180改成你的服务器的IP地址。 iptables -t nat -A POSTROUTING -s 10.8.8.0/24 -j SNAT --to-source 192.168.122.180 /etc/init.d/iptables save /etc/init.d/iptables restart
PS:如果iptables save报错
iptables: Saving firewall rules to /etc/sysconfig/iptables: /etc/init.d/iptables: line 268: restorecon: command not found
要安装一个软件包:
yum install policycoreutils 设置OpenVPN开机自启动
echo "/usr/local/sbin/openvpn --config /etc/openvpn/easy-rsa/2.0/conf/server.conf &" >> /etc/rc.local
启动OpenVPN
/usr/local/sbin/openvpn --config /etc/openvpn/easy-rsa/2.0/conf/server.conf >/dev/null 2>&1 &
使用密码登录配置
修改openvpn服务主配置文件,添加如下内容;如果加上client-cert-not-required则代表只使用用户名密码方式验证登录,如果不加,则代表需要证书和用户名密码双重验证登录!
tail -3 /etc/openvpn/server.conf auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env client-cert-not-required username-as-common-name
验证用户登录脚本并进行相应的修改,主要改PASSFILE和LOG_FILE两个变量
#!/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-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
准备用户名和密码认证文件,用户名和密码用空格隔开,同时确保openvpn启动用户可读取该文件
vi psw-file lvtao 954270
配置权限
chmod 400 psw-file chown nobody.nobody psw-file
修改客户端配置文件
注释掉
;cert lvtao.crt ;key lvtao.key
增加询问用户名和密码
auth-user-pass
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索net
, 密码
, 文件
配置
centos7 openvpn 配置、centos openvpn 配置、openvpn配置证书文件、openvpn 证书配置、centos 证书登录,以便于您获取更多的相关知识。