第一部分: 搭建
环境:Azure OpenLogic(CentOS) 7.2 64位
OpenVPN版本:
OpenVPN 2.3.12 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Aug 23 2016
主要参考教程:https://www.phpini.com/linux/centos-7-install-openvpn-server
安装过程中出现了一些问题,记录如下:
|
|
Please source the vars script first (i.e. “source ./vars”)
Make sure you have edited it to reflect your configuration.
前一步source ./vars成功执行,为何这里就说没有?
解决方法:
- 切换到root用户(非必需,保证权限即可)
[root@vast easy-rsa]# rm -rf keys#删除keys文件夹 [root@vast easy-rsa]# source ./vars*NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys*[root@vast easy-rsa]# ./clean-all#成功
最后搭建好后,按照教程创建本地配置文件后,发现死活连不上。去中科大那找了份能用的配置文件对比,发现……
user-1
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
第一行的user-1应该是文件名,不能出现在.ovpn文件中。当然文件名随便取都没关系。最后3行用相对路径,直接用ca.crt、Client.crt、client.key即可。当然也可以用如下格式插入到.ovpn文件中。
|
|
连上OpenVPN后,分配到的ip是10.8.0.6,发现无法访问外网。一琢磨,估计是通过OpenVPN只能连接服务器的私有子网。仔细想想,VPN应用场景很广泛,要是在商业机构、或者比较重要的组织里,搭好后自动就把转接给做了,很危险的(客户端可以访问服务端所在网络,直接就渗透进内网了)。所以应该是要自己动手设置。
|
|
这一步是开启核心的封包转递(IP forward) 功能。然后测试就能上外网了。
值得注意的是,这个只是临时配置,服务器重启后又失效了。
从http://linux.vbird.org/linux_server/0230router.php 知
鸟哥建议您直接修改系统设定档的内容,那就是 /etc/sysctl.conf来达成开机启动封包转递的功能
|
|
第二部分:用户控制系统
简易脚本
创建一个login.sh到openvpn目录下,加入以下内容。
|
|
|
|
值得注意的是,查资料会发现官方也有个login.sh ,不过不能正确读取账号密码。
使用Mysql建立用户体系
假设你已经装好了Mysql,用户名是root,密码是passwd。创建一个数据库名为ov,创建一个表为openvpn用来记录用户。表内有id、user、pass、 sent 、recv、all、max、endtime、active等字段。
类似上面。先配置server.conf,加入以下内容
|
|
login.sh
|
|
connect.sh
|
|
disconncet.sh
|
|
至于添加账号,如果需求小的话可以自己进数据库添加。需求大的话写个脚本也是很方便的。
以上