OPENVPN在使用用户名密码做认证时,可以使用linux系统创建的账号密码进行认证。并且配置方法很简单,算是比较方便配置的认证方式。
具体配置步骤:
一、安装配置openvpn,具体步骤可参考之前的博文内容。
http://www.jb51.cc/article/p-hzrzmgoy-qr.html
二、在服务器配置文件中
# 编辑server.conf
vim /etc/openvpn/server.conf
port 1194 #openvpn监听端口
proto tcp # 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议。如果服务器在国外(通信质量不佳),建立使用udp,tcp的面向连接可能造成丢包。
dev tun
ca keys/ca.crt # 根证书,路径前面加keys,全路径为/etc/openvpn/keys/ca.crt
cert keys/server.crt #服务器证书
key keys/server.key # 服务器私钥
dh keys/dh2048.pem #dh公钥算法
server 10.8.0.0 255.255.255.0 # 默认虚拟局域网网段,不要和实际的局域网冲突即可
ifconfig-pool-persist ipp.txt #防止openvpn重启后忘记client端曾经使用过的ip地址
push "route 10.0.0.0 255.0.0.0" #为客户端推送一条路由
client-to-client # 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
duplicate-cn # 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
keepalive 10 120 #Nat后面使用vpn,如果长时间不通信,NAT session可能会失效,导致vpn连接丢失。所以keepalive提供类似ping的机制,每10秒通过vpn的control通道ping对方。如果120秒内无法ping通,则认为丢失,并重启vpn,重新连接。
tls-auth keys/ta.key 0 # This file is secret
comp-lzo #对数据进行压缩,注意和client端一致
persist-key #通过keeplive检测超时后,重启vpn,不重新读取key,保留第一次使用的key
persist-tun #通过keeplive检测超时后,重启vpn,一致保持tun或者tap设备是linkup的,否则网络连接会linkdown然后linkup
status openvpn-status.log # OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log
log-append openvpn.log # OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log
verb 5 # 日志记录级别,改成verb 5可以多查看一些调试信息
cipher AES-256-CBC #指定数据对称加密算法
#下面的三行意思是使用Linux系统自身的身份验证机制
plugin /usr/lib/openvpn/plugin/lib/openvpn-auth-pam.so login# login为指定使用linux本身认证
client-cert-not-required#取消证书认证
username-as-common-name #使用客户提供的UserName作为Common Name
二、重启服务以及配置开启启动
service openvpn start
chkconfig --level 345 openvpn on
三、创建用户名密码,用于openvpn 的认证。
useradd vpn -M -s /sbin/nologin #创建用户名vpn,设置不可以用于系统ssh登录
passwd vpn #配置用户名对应的密码vpn
四、客户端配置文件
# 复制一份client.conf模板命名为client.ovpn
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf client.ovpn
# 编辑client.ovpn
vim client.ovpn
client
dev tun
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote 203.195.xxx.xxx 1194
resolv-retry infinite #持续解析服务器IP地址,如果用IP地址连接,255);" xml:lang="ar-sa">则不需要此项nobind
persist-key #客户端重启程序时,255);" xml:lang="ar-sa">尽量保持之前的状态,255);" xml:lang="ar-sa">如不重新读key.
ca ca.crt #根证书
# client1的证书
cert client1.crt #客户端证书
# client1的密钥
key client1.key #客户端证书私钥
ns-cert-type server # 验证服务端证书的可靠性.需要服务器端在生成证书时指定nsCertType类型.
tls-auth ta.key 1
comp-lzo #数据压缩
verb 3 #日志级别
cipher AES-256-CBC #数据加密算法,和服务器的加密算法必须匹配。
auth-user-pass #激活用户名密码登陆认证方式