【干货】ECS服务器OPENVPN搭建,方便管理所有内网服务器

使用场景 一台有外网的ECS服务器+N台无外网的ECS服务器,使用OPENVPN管理全部的ECS服务器(包括无外网的ECS服务器). 
鉴于ECS服务器的带宽成本比较高的问题,撸主采用的是SLB(外网,据说最近计费方式变多了)+N台ECS服务器集群(包括一台2M外网ECS)+内网RDS服务来提供线上服务,但是客服沟通过得到的答案是只能在控制台用VNC来管理(客服MM确认可以自行搭建VPN来管理),对于熟悉习惯使用SSH的人来说使用管理控制台的那个VNC非常蛋疼,BUT关于内网服务器集群管理的方面的教程阿里没提供完整的配置文档,论坛也只是零星的帖子,这个教程是撸主花了2天时间汇总整理出来的教程,确保能正常使用,旨在方便有这方面需求的兄弟少走弯路. 
 
 
最后吐槽一下云监控竟然不支持内网ECS服务器..... 
 
 

引用
#1.安装基础包

引用
yum install openssl-devel pam-devel gcc -y

引用
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz 
tar xvfz openssl-1.0.1g.tar.gz  
cd openssl-1.0.1g 
./config --prefix=/usr/local 
make && make installs

引用
#2.安装lzo 软件包

引用
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz 
tar zxvf lzo-2.06.tar.gz 
cd lzo-2.06 
./configure --prefix=/usr/local 
make && make install

引用
#3.安装openvpn服务端

引用
openvpn的下载地址已被墙,安装包自行解决下载(本文采用的是openvpn-2.3.4.tar.gz) 
tar xvfz openvpn-2.3.4.tar.gz 
cd openvpn-2.3.4 
./configure --prefix=/usr/local/openvpn 
make && make install

引用
#4.openvpn服务端配置

引用
下载easy-rsa 附上gihub(https://github.com/OpenVPN/easy-rsa) 
解压zip到 /usr/loacal下 
cd /usr/local/easy-rsa-master/easyrsa3 
mv vars.example vars 
vim vars  
修改如下内容(请填写自己的信息): 
set_var EASYRSA_REQ_COUNTRY     "CN" 
set_var EASYRSA_REQ_PROVINCE    "Shanghai" 
set_var EASYRSA_REQ_CITY        "Shanghai" 
set_var EASYRSA_REQ_ORG         "Chogic Co" 
set_var EASYRSA_REQ_EMAIL       "xxxxx@xxxx.cn
set_var EASYRSA_REQ_OU          "System Admin"

引用
#5.初始化配置

引用
./easyrsa init-pki 
如果成功的话,会在当前目录下创建pki/{reqs,private}目录,用于保存证书文件。


引用
6.7.8.9步会让频繁输入密码,请自行记录

引用
#6.创建根证书

引用
./easyrsa build-ca 
创建过程中需要输入根证书的密码以及`Common Name`。如果创建成功,则会在`pki/private/`目录下创建`ca.key`私钥文件以及`pki/`目录下创建`ca.crt`证书文件。

引用
#7.创建服务器证书

引用
./easyrsa build-server-full server 
创建过程和根证书创建类似,需要输入证书的密码以及上一个步骤创建根证书的密码。     
如果创建成功,则会在`pki/private`目录创建`server.key`私钥文件。在`pki/issued`目录创建`server.crt`证书文件。 

引用
#8.创建dh证书

引用
./easyrsa gen-dh 
DH parameters of size 2048 created at /usr/local/easy-rsa-master/easyrsa3/pki/dh.pem

引用
#9.创建客户端证书

引用
./easyrsa build-client-full yourclientname (你的用户名)
引用
前面两次是输入你的用户密码,第三次是输入ca证书的密码(第#6步的密码)

引用
#10.配置服务端

引用
cd /usr/local/openvpn/ 
mkdir keys 
cd keys  
#把上述步骤创建的ca.crt,server.crt,server.key,dh.pem拷贝到keys目录 
cp /usr/local/easy-rsa-master/easyrsa3/pki/ca.crt . 
cp /usr/local/easy-rsa-master/easyrsa3/pki/issued/server.crt . 
cp /usr/local/easy-rsa-master/easyrsa3/pki/private/server.key . 
cp /usr/local/easy-rsa-master/easyrsa3/pki/dh.pem . 
 
创建或者编辑/usr/local/openvpn/server.conf文件,内容如下: 
vim /usr/local/openvpn/server.conf 
 
##openvpn的server.config 
#local 是阿里ECS的外网IP 
local 你的外网ECS服务器地址(ifconfig eth1对应的IP地址) 
port 1194 
proto udp 
dev tun 
#修下下面的4个文件路径 
ca /usr/local/openvpn/keys/ca.crt 
cert /usr/local/openvpn/keys/server.crt 
key /usr/local/openvpn/keys/server.key 
dh /usr/local/openvpn/keys/dh.pem 
#openvpn的地址 
server 10.8.0.0 255.255.255.0 
ifconfig-pool-persist ipp.txt 
client-to-client 
keepalive 10 120 
comp-lzo 
user nobody 
group nobody 
persist-key 
persist-tun 
status openvpn-status.log 
#这个日志目录需要手创建 
log /data/logs/openvpn/openvpn.log 
verb 3 
#重要,保证客户端的连接能正常的访问10.162.*.*网段 ,下面的网段请自行根据自己的内网服务器所在的网段添加 
push "route 10.162.59.0 255.255.255.0" 
push "route 10.162.91.0 255.255.255.0"

引用
#11.Centos系统配置修改


引用
#打开服务器的路由功能

vim /etc/sysctl.conf 
修改以下内容: 
net.ipv4.ip_forward = 1 
# 然后使内核参数生效: 
sysctl -p  

引用
#添加NAT  10.8.0.0/24是OPENVPN的地址 10.162.xxx.xxx是阿里ECS的内网地址(ifconfig eth0) 
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 10.162.xxx.xxx 
#保存iptables 
service iptables save

引用
#启动openvpn

引用
/usr/local/openvpn/sbin/openvpn --daemon --config /usr/local/openvpn/server.conf 
###################附加客户端配置文件##################### 
请自行根据各自的操作系统及对应的OPENVPN客户端来处理,但是无论什么客户端配置文件应该是一致的。 
客户端需要使用easyrsa生成的 ca.crt,gair.key以及gair.crt文件。 
###################客户端配置################### 
配置文件config.ovpn 
client 
dev tun 
proto udp 
remote 218.244.147.198 1194 
remote-cert-tls server 
resolv-retry infinite 
nobind 
persist-key 
persist-tun 
ca ca.crt 
cert yourclientname.crt 这里修改为上面输入的名字 
key yourclientname.key 这里修改为上面输入的名字 
;ns-cert-type server   # 该行需注释,不然服务端有报错 TLS: Initial packet from 
comp-lzo 
verb 3

【干货】ECS服务器OPENVPN搭建,方便管理所有内网服务器的更多相关文章

  1. ECS上nginx搭建反向代理通过内网访问阿里云OSS服务

    对于付不起钱的小伙计,为了给公司省钱,想尽一切招数.今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法. 简介 阿里云OSS 阿里云提供的一种文件存储方案,和我们以前接触的百度云B ...

  2. 烂泥:openvpn双网卡客户端与内网机器通信

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 前段时间写了一篇有关openvpn搭建与内网机器通信的文章,那篇文章是基于服务器单网卡 ...

  3. phpMyAdmin搭建及管理多台数据库服务器

    phpMyAdmin搭建及管理多台数据库服务器 环境说明: 系统版本    CentOS 6.9 x86_64         软件版本    nginx-1.12.2        php-5.5. ...

  4. centos7下安装openvpn,访问内网服务器 (二) windows访问

    一.简介 在上一章中已经安装好了openvpn,并且已经启动成功,现在就可以通过openvpn的客户端进行连接访问内网服务器了. 二.安装openvpn客户端 下载地址: https://www.te ...

  5. 典型案例收集-使用OpenVPN连通多个机房内网(转)(静态路由)

    说明: 1.这篇文章主要是使用静态路由表实现的多个机房通过VPN连接后的子网机房互通. 2.OpenVPN使用的是桥接模式(server-bridge和dev tap),这个是关键点,只有这样设置才可 ...

  6. CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网

    自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...

  7. 内网服务器离线编译安装mysql5.7并调优

    目录 内网服务器离线编译安装mysql5.7并调优 前言 关于MySQL 一.MySQL安装篇 部署环境 前期准备工具 挂载系统ISO镜像,配置yum源 二.MySQL调优篇 1.对MySQL进行安全 ...

  8. OpenWRT DNS无法解析WAN连接的内网服务器域名

    系统版本OpenWrt Chaos Calmer 15.05.1,网络连接为:WAN口连接内网10.x.x.x网段,WAN口设置为静态IP.设置L2TP接口,通过L2TP访问外网.问题出现于,所有外网 ...

  9. H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器

    H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器 ------------------------------------------------------------ ...

随机推荐

  1. 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

    从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position ...

  2. ansible的使用技巧

    #查看ansible的帮助 $ ansible -h   #ansible 指定不通的模块执行 $ ansible -i /etc/ansible/hosts  docker -u root -m c ...

  3. ProgressBar样式(转)

    普通圆形ProgressBar 该类型进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中. 一般只要在XML布局中定义就可以了. <progressBar and ...

  4. 第一节 HTML网页和CSS样式

    1. 第一行 <!DOCTYPE html> 表明网页使用的是HTML5版本 2. 网页的head内容,包含了 title,meta. 3. 网页的标题 title,注意这个显示在浏览器的 ...

  5. bootstrap-carousel

    功能:轮播插件carousel, 主要用于首页大图片的显示与左右按钮的点击滑动图片 插件:carouse.js 要点:class="carousel slide"里的data-sl ...

  6. 【转】 GridView 72般绝技

    说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...

  7. BZOJ4514——[Sdoi2016]数字配对

    有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci×cj 的 ...

  8. C++ 模板函数与模板类

    一.模板函数 函数模板提供了一类函数的抽象,即代表了一类函数.当函数模板被实例化后,它会生成具体的模板函数.例如下面便是一个函数模板:

  9. PYTHON 文件操作

    对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 Beautiful is better than ugly. 优美胜于丑陋 Explicit i ...

  10. UDS帧传输

    说明 在UDS协议中,其中有一点我视作为基础,即帧传输.也即是数据传输这一块,在UDS的帧传输中,分为4种: SF单帧 FF第一帧 CF连续帧 FC流控制帧 首先,我们抛开以上的东西,假设一个销售商( ...