最近想自己搭个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
- yum install -y openvpn
- yum install -y easy-rsa
复制代码
2、配置openvpn
拷贝配置文件
- cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
复制代码
编辑openvpn主配置文件
- vim /etc/openvpn/server.conf
复制代码
主要修改以下几个配置,把前边的分号注释去掉,其中DNS配置项,改成阿里公共DNS地址。
- proto tcp #选择TCP自有妙用,允许http代理
- dh dh2048.pem
- server 192.168.1.0 255.255.255.0 #vpn的内网地址段,与NAT转发规则相对应,openvpn在使用tun路由模式时,分配给client端分配的IP地址段
- push "redirect-gateway def1 bypass-dhcp" #重定向客户端的网关,在进行翻墙时会使用到
- push "dhcp-option DNS 223.5.5.5"
- push "dhcp-option DNS 223.6.6.6"
- user nobody #openvpn运行时使用的用户及用户组
- group nobody
- log openvpn.log #log选项 ,重启服务器将导致日志清零,亦可选择log-append
- verb 5
复制代码
3、配置证书文件
- mkdir -p /etc/openvpn/easy-rsa/keys
- cp -a /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
- vi /etc/openvpn/easy-rsa/vars
复制代码
修改以下配置的内容,自定义设置各项值就可以。
- export KEY_COUNTRY="CN"
- export KEY_PROVINCE="CA"
- export KEY_CITY="Bei Jing"
- export KEY_ORG="zxiaofan" #定义所在的组织
- export KEY_EMAIL="vpn@zxiaofan.com"
- export KEY_OU="test" #定义所在的单位
- export KEY_NAME="vpnserver" #定义openvpn服务器的名称
- export KEY_CN="zxiaofan" 这行配置,前边默认的“#”号注释去掉。
复制代码
制作证书
c
- p /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
- cd /etc/openvpn/easy-rsa #切换工作目录
- source ./vars #让配置文件生效
- ./clean-all
- ./build-ca #之前已配置好相关参数,故执行命令后,按回车键,一直到结束。
复制代码
创建服务端证书
.
#按回车键进行,在提示输入密码的地方,设置一个密码如zxiaofan,在An optional company name处输入zxiaofan.com,最后输入两次“y”回车
创建客户端证书
.
- /build-dh #创建秘钥文件,等待命令执行完。
- ls /etc/openvpn/easy-rsa/keys/ #可以看到,目录中已经创建好了证书文件。
- cd /etc/openvpn/easy-rsa/keys
- cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
- cd /etc/openvpn/easy-rsa
- ./build-key client
复制代码
#创建客户端证书文件,按回车进行,提示输入密码的地方,输入之前设置的证书密码,An optional company name处输入先前设置的公司名字(zxiaofan.com)。【一定要和先前输
入的一样哦.,其他参数如果前面设置了,也要保持一致噢】 #另外注意:有多少个客户端就需要./build-key client 多少次,当然client名字需不同。
- ls /etc/openvpn/easy-rsa/keys/ #可以看到,生成了客户端的证书文件
复制代码
4、设置iptables、路由转发
- yum install -y iptables-services
- systemctl enable iptables
- systemctl stop firewalld #关闭Centos7默认的 firewall防火墙
- systemctl start iptables #启动iptables
- iptables -F #清空默认的iptables规则
- 设置iptables NAT转发规则
- iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
- service iptables save #保存防火墙规则
- echo 1 > /proc/sys/net/ipv4/ip_forward #临时开启路由转发
- vi /etc/sysctl.conf #编辑配置文件,添加以下配置,设置永久路由转发
- net.ipv4.ip_forward = 1
复制代码
5、启动openvpn
- systemctl -f enable openvpn@server.service #设置启动文件
- 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里,这样只需这一个文件即可连接
- VPN:
- client
- dev tun
- proto tcp
- remote 服务器IP 1194
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- comp-lzo
- verb 5
- #ca ca.crt
- #cert client.crt
- #key client.key
- <ca>
- ca.crt的内容粘贴到这里
- </ca>
- <cert>
- client.crt的内容粘贴到这里
- </cert>
- <key>
- client.key的内容粘贴到这里
- </key>
复制代码