企业VPN办公环境搭建(阿里云ECS上搭建OpenVPN服务器)
应用环境
办公地点A:主要办公地点,市场统一管理,8:30-18:00开门供电,配置有电信50M宽带
办公地点B:公司仓库,24小时供电区,配置2M铁通宽带,工作时间为9:00-18:30
办公地点C:辅助办公地点,安全可靠,24小时供电区,配置100M移动宽带,无外网IP地址,工作时间无限制
服务器:办公ERP服务器物理机一台,阿里云ECS服务器一台(4M电信宽带)
之前办公:
由于网络环境的因素,ERP服务器只能放在A区才能通过外网IP的方式让A、B、C三区都能正常连接ERP服务器进行办公,但由于工作时间的不同,会导致其它办公区不能按工作时间使用ERP系统
改造后要实现的目标:
ERP系统要24小时能访问,同时要保证ERP系统的安全,让员工只在指定的机器上进行连接访问。
方案:
阿里云ECS上安装OpenVPN服务器,将ERP服务器放置到C区,服务器和所有员工使用的电脑通过VPN证书连接虚拟网络,这样就可以通过VPN穿透移动宽带的内网和铁通宽带的线路限制。
VPN网络搭建
1)ECS环境(操作系统为CentOS 7.x)
ECS服务器上要配置epel软件源,由于阿里云ECS上已经配置了epel源,此处不用配置,没有配置的主参考以下链接:
http://mirrors.aliyun.com/help/epel
安装OpenVPN所需软件
yum -y install openvpn easy-rsa iptables-services
2)拷贝easy-rsa脚本到/etc/openvpn
cp -r /usr/share/easy-rsa/ /etc/openvpn
进入easy-rsa目录并编辑vars文件
cd /etc/openvpn/easy-rsa/2.0 vim vars export KEY_SIZE=2048 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="CN" export KEY_PROVINCE="YN" export KEY_CITY="Kunming" export KEY_ORG="MYORG" export KEY_EMAIL="wanglu@example.com" export KEY_OU="MyOrgUnit" export KEY_NAME="EasyRSA"
让上面修改的变量生效
source ./vars
运行clean-all心确保工作区的干净
./clean-all
现在可以开始生成证书了,生成过程中会在交互界面要你输入一些参数,由于之前在vars中设置过了,这里全部按回车就行
./build-ca
此命令生成的ca.crt和ca.key会保存在/etc/openvpn/easy-rsa/2.0/keys/目录下
3)生成服务器端证书和密钥
./build-key-server server
运行该命令后会提示输入一些参数,此处我全部留空,但要注意,提示输入[y/n]时输入y,这样就完成服务器端证书生成了
4)生成一个Diffie-Hellman交换密钥
./build-dh
5)生成客户端证书
./build-key client1
该命令和生成服务端证书步骤一样
6)将ca.crt、server.crt、server.key、dh2048.pem拷贝到/etc/openvpn目录下
cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/ cp /etc/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/ cp /etc/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/ cp /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem /etc/openvpn/
配置OpenVPN服务器
拷贝示例配置文件到/etc/openvpn目录下
cp /usr/share/doc/openvpn-2.3.8/sample/sample-config-files/server.conf /etc/openvpn/
修改配置如下:
# 填写OpenVPN要使用的IP地址 # 这里我写ECS服务器的外网IP # 具体IP根据自己的服务器来写 local xxx.xxx.xxx.xxx # 使用的端口,记住防火墙要打开1194端口 port 1194 # 使用的协议,保持默认 proto udp # "dev tun" will create a routed IP tunnel, dev tun # 生成的证书相关的配置 ca ca.crt cert server.crt key server.key dh dh2048.pem # 网络拓扑,为了让所有客户端在同一子网内,打开此选项 topology subnet # 配置使用的IP地址 # 下面的设置,些服务器会自动使用10.8.8.1做为自己的IP地址 server 10.8.8.0 255.255.255.0 # 如果要固定客户端的IP地址,请打开此选项,否则不要打开 client-config-dir ccd # 此选项必须打开 push "redirect-gateway def1 bypass-dhcp" # 网络相关的设置,此处用DNSPOD的DNS push "dhcp-option DNS 119.29.29.29" push "dhcp-option DNS 182.254.116.116" # 让客户端之间可以相互通讯 client-to-client # 第20秒会进行ping测试,如果120秒没有回应会断线 keepalive 20 120 comp-lzo max-clients 20 # 为了安全 user nobody group nobody persist-key persist-tun # 开启日志 log-append /var/log/openvpn.log # 设置日志等级 verb 3
因为我在配置文件中配置了client-config-dir ccd,所以我要继续设置客户端IP(没有打开的可以不用设置,DHCP服务器会自动分配)
首先在/etc/openvpn下建立ccd目录
mkdir /etc/openvpn/ccd
这里我将之前生成的client1的客户端IP设置为如下10.8.8.101,子网掩码为255.255.255.0
vi /etc/openvpn/ccd/client1
配置文件如下:
ifconfig-push 10.8.8.101 255.255.255.0
禁用firewalld启用iptables
为了有效的进行数据转发,要关闭CentOS 7默认的firewalld开启iptables
#关闭firewalld systemctl stop firewalld #禁用firewalld systemctl disable firewalld #启用iptables systemctl enable iptables #启动iptables systemctl start iptables
禁用SELINUX,并重启服务器
vi /etc/selinux/config # 更改配置文件中的参数如下 SELINUX=disabled
修改linux内核参数,开发端口功能
vi /etc/sysctl.conf # 修改如下参数 net.ipv4.ip_forward = 1 # 让内核参数更新 sysctl -p
在iptables中增加一条转发规则
# 注意规则中eth1,这个是对应server.conf中配置的外网IP地址所在的网络接口 iptables -t nat -A POSTROUTING -s 10.8.8.0/24 -o eth1 -j MASQUERADE # 保存规则 iptables-save > /etc/sysconfig/iptables
启动OpenVPN服务器
systemctl start openvpn@server
至此,OpenVPN服务器搭建完成
使用效果:
A、B、C三处所有的电脑,包括ERP服务器,通过OpenVPN客户端连接到OpenVPN服务器,这样,A、B、C三地的电脑和服务器就都在10.8.8.0这个网段,从而实现了内网穿透和运营商线路限制,最终实现了ERP系统24小时安全访问。
OpenVPN客户端配置使用:https://wanglu.info/2015/11/1010.html
遇到喷子了,还在评论里骂人。我不敢说100%的原创,但我只想说,在ECS上搭建起OpenVPN我自认没有能力不做任何参考就可以轻松完成。因为参考的文章太多(当然,大多数是Google出来的英文文档),故原文没有做任何说明,在此补充说明。另外,出于对个人网络配置的隐私性,将自己使用的ECS上的IP和客户证书名字给模糊处理了,不排除处理没对应好的地方。
至于问我是不是真在ECS上操作过,我只送3个字:正在用!
除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址
一整套做下来systemctl start openvpn@server是成功的,好像没什么问题,测试不知道成不成功,先评论再说
NONONO,跟着教程走到,./clean-all: 没有那个文件或目录,./build-ca: 没有那个文件或目录
时间有点久,相关的工具包失效了,教程也一直没有更新。
感谢老哥回复
推荐作者再更新一些客户端的连接方式就完整了,比如Windows或者macos,Linux的
好建议!倒是有单独写windows下的连接方式,在文章最下方有链接。
现在这么用心写文章的人太少了,给作者一个赞!
请问这个能支持sourcetree 的git指令吗?就是连接VPN以后,我的sourcetree提交或者其他app,像QQ什么的也是走VPN吗?还是只有浏览器走VPN
这种是系统全局的,就是连接上后,所有流量都是通过VPN的,有点像拨号上网的意思。
的确缺东西,启动不了
可以把你发现的错误指出一下吗?时间有点长了,我好更新解决下!
Good! 问一下,可靠性怎么考虑,如果Open VPN server端挂了,能快速倒换吗?谢谢。
好问题,server端挂掉的问题还没有去研究试验过,找个时间找资料学习看看。
明显不对,好吗,你自己真的在ECS上做过??神人!
和骂人的那条评论是同一个人吧?至于有没有真的在ECS上做过,抱歉,正在用!
妈的,就知道抄袭!!
非100%原创,但你联系邮箱都不愿意留下,喷完就走,有意思吗?
不用鸟这种喷子!没意思!