中国领先的IT技术网站
|
|
创建专栏

史上坑最少的openVPN搭建

看了上面的对比之后,选择了OpenVPN做为首选的vpn协议,还有一个最主要的原因是安装方法比较简单。

作者:人人网FED|2017-09-27 14:26

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


为什么要搭建vpn

  • 单独购买vpn服务器的成本比较高,可以在公司现有的服务器上搭建vpn服务
  • 可以在任何有网络的地方访问到公司资源,比使用跳板机和高端口访问要安全
  • 爱折腾的小伙伴可以搭建vpn来满足自己的技术需求

选择

vpn种类有这么多,有PPTP协议,有L2TP协议, 有OpenVPN 如何进行选择?

首先先看下对比:https://cn.giganews.com/vyprvpn/compare-vpn-protocols.html

看了上面的对比之后,选择了OpenVPN做为首选的vpn协议,还有一个最主要的原因是安装方法比较简单。

下面开始介绍如何一步一步搭建vpn (centos版本):

centos安装服务端

  • 我的服务器是centos 6.8版本的,亲测6.4无法安装openvpn,亲测5不能运行安装脚本
  • 服务器并且拥有固定的内网ip, 和一个外网ip
  • 然后在网上找了一大坨安装文档,第一感觉是太复杂,后面发现在github上有一键安装的脚本:https://github.com/Nyr/openvpn-install
  • 果断clone之,然后把shell放到服务器上进行执行,(1)输入ip地址:由于服务器上只能获得到内网ip,所以这里填写内网ip,(2)输入端口,有默认端口:1194(首先确保该端口已经允许访问,我安装的时候因为1194未开放,所以导致客户端无法连接vpn)(3)如果有外网ip,并且和内网ip不一致,程序会提示要你输入外网ip,输入回车就可以了,否则没有这一步。
  • 安装完成以后会生成一个.ovpn结尾的文件,这个文件是给客户端使用的。
  • 看一下1194端口是否被启动(netstat -anp | grep 1194),如果启动了就证明openvpn的服务端顺利启动了,接下来就是安装客户端了。

安装客户端

mac用户请自行下载Tunnerblick,安装完成之后,将服务端生成的rrjf.ovpn文件导入(此文件名是我自己设定的)。

windows用户请下载OpenVPN,安装完成之后将rrjf.ovpn复制到OpenVPN的安装目录的config中,例如:“C:\Program Files\OpenVPN\config”。导入完成之后,以“管理员身份运行”即可。

启动openvpn的客户端进行连接(无法连接原因如下:1、udp方式不允许,可修改为tcp方式 2、上面的默认端口未开放,更换开放的端口)

顺利的话就应该可以通过内网ip进行访问服务器了。

设置用户名/密码登录即User/Pass登录

  • 修改openvpn的配置文件,即安装目录里面的server.conf,在配置文件里面添加如下几行:
  1. auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env  
  2. client-cert-not-required  
  3. username-as-common-name  
  4. script-security 3 
  • 添加完毕之后请重启openvpn服务,sercice openvpn restart (不同的centos系统,命令不一样,具体请自行百度)
  • 添加验证脚本checkpsw.sh,下载后添加到步骤一第一行你设定的目录中。注意修改PASSFILE、LOG_FILE这两个参数,PASSFILE路径保持和server.conf在同一级目录即可,LOG_FILE这个参数推荐使用默认参数
  • chmod +x /etc/openvpn/checkpsw.sh,# 给脚本添加执行权限
  • mkdir -p /var/log/openvpn touch /var/log/openvpn/openvpn-password.log # 创建目录以及日志文件,用来记录用户名密码认证产生的日志
  • echo “test 123456” >>/etc/openvpn/psw-file chmod 400 /etc/openvpn/psw-file # 创建用户名密码文件,并修改权限
  • 修改客户端文件 注释掉cert和key(客户端不需要crt和key文件,但是需要服务器的CA证书);cert eva.crt ;key eva.key(如果在客户端配置中没有找到则不用修改)在最后一行添加如下内容 auth-user-pass

过程中遇到的坑

  • 使用client去连接server端发现能够连上vpn,但是连不上internet。是因为此脚本默认的dns是读取服务器上/etc/resolv.conf的内容,如果安装完毕之后不能上网,自行修改server.conf为如下即可 (push “dhcp-option DNS 8.8.8.8” push “dhcp-option DNS 8.8.4.4”)。
  • udp方式无法连接,采用的tcp方式。原因未知,可能是防火墙问题
  • 日志写入问题 checkpsw.sh 脚本是用来读取用户名和密码以及写入登录日志,当一切都搞定之后发现无法写入日志,修改权限即可(因为不知道当前操作用户,所以赋予了最高权限)

原文链接:https://fed.renren.com/2017/09/26/openvpn/

【本文是51CTO专栏作者“人人网FED”的原创稿件,转载请通过51CTO联系原作者获取授权】

戳这里,看该作者更多好文

【编辑推荐】

  1. 外媒速递:六步走战略为你的小型企业构建起服务器机房
  2. 玩转Hadoop分布式集群搭建
  3. 日均采集1200亿数据点,腾讯千亿级服务器监控数据存储实践
  4. 如何搭建大规模机器学习平台?以阿里和蚂蚁的多个实际场景为例
  5. 完全控制映射到外网的内网web服务器
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

× Python最火的编程语言