电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1825 人浏览分享

Centos7安装OpenVPN

[复制链接]
1825 0

最近想自己搭个VPN,搭VPN做什么大家就自己YY了,嘿嘿。在网上找了很多教程,看着别人信誓旦旦的说一定能成功,但自己总是失败,最后在阿里云找到了一篇帖子,捣鼓了一阵总算成

功。原文地址: https://help.aliyun.com/knowledge_detail/7602040.html?pos=4 ,原文有个别地方未阐述清楚,本文加入尽可能多的注释,以期让读者更易理解。

系统基于 CentOS 7.0 64位的全新系统,VPN采用OpenVPN,如果读者按着教程操作未成功,请仔细核查配置是否遗漏什么,说不定会发现什么哦,亦可留言反馈,本人Linux小白,大神勿喷。
本文为Centos7安装OpenVPN系列文章第一篇,后面会加入密码验证以及流量控制,详见csdn.zxiaofan.com。

1、安装openvpn和证书制作工具easy-rsa

  1. yum install -y openvpn
  2. yum install -y easy-rsa
复制代码


2、配置openvpn

拷贝配置文件

  1. cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf  /etc/openvpn
复制代码


编辑openvpn主配置文件

  1. vim /etc/openvpn/server.conf
复制代码


主要修改以下几个配置,把前边的分号注释去掉,其中DNS配置项,改成阿里公共DNS地址。

  1. proto tcp    #选择TCP自有妙用,允许http代理
  2. dh dh2048.pem
  3. server 192.168.1.0 255.255.255.0          #vpn的内网地址段,与NAT转发规则相对应,openvpn在使用tun路由模式时,分配给client端分配的IP地址段
  4. push "redirect-gateway def1 bypass-dhcp"    #重定向客户端的网关,在进行翻墙时会使用到
  5. push "dhcp-option DNS 223.5.5.5"
  6. push "dhcp-option DNS 223.6.6.6"
  7. user nobody    #openvpn运行时使用的用户及用户组
  8. group nobody
  9. log         openvpn.log    #log选项 ,重启服务器将导致日志清零,亦可选择log-append
  10. verb 5
复制代码


3、配置证书文件

  1. mkdir -p  /etc/openvpn/easy-rsa/keys
  2. cp  -a  /usr/share/easy-rsa/2.0/*  /etc/openvpn/easy-rsa/
  3. vi   /etc/openvpn/easy-rsa/vars
复制代码



修改以下配置的内容,自定义设置各项值就可以。

  1. export KEY_COUNTRY="CN"
  2. export KEY_PROVINCE="CA"
  3. export KEY_CITY="Bei Jing"
  4. export KEY_ORG="zxiaofan"    #定义所在的组织
  5. export KEY_EMAIL="vpn@zxiaofan.com"
  6. export KEY_OU="test"    #定义所在的单位
  7. export KEY_NAME="vpnserver"    #定义openvpn服务器的名称
  8. export KEY_CN="zxiaofan"    这行配置,前边默认的“#”号注释去掉。
复制代码


制作证书

c
  1. p  /etc/openvpn/easy-rsa/openssl-1.0.0.cnf  /etc/openvpn/easy-rsa/openssl.cnf
  2. cd /etc/openvpn/easy-rsa    #切换工作目录
  3. source ./vars    #让配置文件生效
  4. ./clean-all
  5. ./build-ca    #之前已配置好相关参数,故执行命令后,按回车键,一直到结束。
复制代码


创建服务端证书

.
  1. /build-key-server server  
复制代码


#按回车键进行,在提示输入密码的地方,设置一个密码如zxiaofan,在An optional company name处输入zxiaofan.com,最后输入两次“y”回车

创建客户端证书

.
  1. /build-dh     #创建秘钥文件,等待命令执行完。
  2. ls   /etc/openvpn/easy-rsa/keys/       #可以看到,目录中已经创建好了证书文件。
  3. cd  /etc/openvpn/easy-rsa/keys
  4. cp  dh2048.pem  ca.crt  server.crt  server.key   /etc/openvpn
  5. cd  /etc/openvpn/easy-rsa

  6. ./build-key client     
复制代码


#创建客户端证书文件,按回车进行,提示输入密码的地方,输入之前设置的证书密码,An optional company name处输入先前设置的公司名字(zxiaofan.com)。【一定要和先前输

入的一样哦.,其他参数如果前面设置了,也要保持一致噢】  #另外注意:有多少个客户端就需要./build-key client 多少次,当然client名字需不同。

  1. ls /etc/openvpn/easy-rsa/keys/    #可以看到,生成了客户端的证书文件
复制代码


4、设置iptables、路由转发

  1. yum install -y iptables-services
  2. systemctl enable iptables
  3. systemctl stop firewalld   #关闭Centos7默认的 firewall防火墙
  4. systemctl start iptables   #启动iptables
  5. iptables  -F     #清空默认的iptables规则
  6. 设置iptables NAT转发规则
  7. iptables -t nat -A POSTROUTING -s 192.168.1.0/24  -j MASQUERADE
  8. service iptables save   #保存防火墙规则
  9. echo 1 > /proc/sys/net/ipv4/ip_forward     #临时开启路由转发
  10. vi  /etc/sysctl.conf   #编辑配置文件,添加以下配置,设置永久路由转发
  11. net.ipv4.ip_forward = 1
复制代码


5、启动openvpn


  1. systemctl -f enable openvpn@server.service      #设置启动文件
  2. systemctl start openvpn@server.service          #启动openvpn的命令
复制代码


6、openvpn客户端(电脑、手机)连接vpn


把服务器上的三个客户端证书文件,下载到本地电脑配置vpn客户端。  /etc/openvpn/easy-rsa/keys/ca.crt  /etc/openvpn/easy-rsa/keys/client.crt  /etc/openvpn/easy-rsa/keys/client.key

安装好openvpn客户端软件后,把证书文件,存放到openvpn安装目录的config文件夹下。  从sample-config文件夹下,拷贝客户端的配置文件client.ovpn 到config文件夹下。  编辑config文件夹下的配置文件client.ovpn,修改remote my-server-1 1194 这行配置,指定openvpn服务器的ip地址,默认为你服务器的外网IP。

可以添加  push route 61.139.2.69 #电信DNS地址

配置好后,点击openvpn的客户端图标,连接vpn。  openvpn的图标显示绿色后,表示已经连接上vpn了。  然后在本地电脑进行测试,连接vpn后,可以访问ECS服务器的内网,通过ECS服务器连接公网。  本地电脑用浏览器上网,显示的ECS服务器的公网ip。  在客户端ping一下服务器IP,查看响应情况。  最后,百度输入IP,查看本机IP,发现你的IP已经变成服务器IP就表明VPN搭建成功了。

如果你要让别人连VPN呢?难道也把那么多配置文件发给别人,太麻烦了,所以可采取如下策略,将ca.crt、client.crt、client.key全部拷贝到Client.ovpn里,这样只需这一个文件即可连接

  1. VPN:
  2. client
  3. dev tun
  4. proto tcp
  5. remote 服务器IP 1194
  6. resolv-retry infinite
  7. nobind
  8. persist-key
  9. persist-tun
  10. comp-lzo
  11. verb 5

  12. #ca ca.crt
  13. #cert client.crt
  14. #key client.key

  15. <ca>
  16. ca.crt的内容粘贴到这里
  17. </ca>

  18. <cert>
  19. client.crt的内容粘贴到这里
  20. </cert>

  21. <key>
  22. client.key的内容粘贴到这里
  23. </key>
复制代码



您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.