【干货】ECS服务器OPENVPN搭建,方便管理所有内网服务器
【干货】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搭建,方便管理所有内网服务器的更多相关文章
- ECS上nginx搭建反向代理通过内网访问阿里云OSS服务
对于付不起钱的小伙计,为了给公司省钱,想尽一切招数.今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法. 简介 阿里云OSS 阿里云提供的一种文件存储方案,和我们以前接触的百度云B ...
- 烂泥:openvpn双网卡客户端与内网机器通信
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 前段时间写了一篇有关openvpn搭建与内网机器通信的文章,那篇文章是基于服务器单网卡 ...
- phpMyAdmin搭建及管理多台数据库服务器
phpMyAdmin搭建及管理多台数据库服务器 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 nginx-1.12.2 php-5.5. ...
- centos7下安装openvpn,访问内网服务器 (二) windows访问
一.简介 在上一章中已经安装好了openvpn,并且已经启动成功,现在就可以通过openvpn的客户端进行连接访问内网服务器了. 二.安装openvpn客户端 下载地址: https://www.te ...
- 典型案例收集-使用OpenVPN连通多个机房内网(转)(静态路由)
说明: 1.这篇文章主要是使用静态路由表实现的多个机房通过VPN连接后的子网机房互通. 2.OpenVPN使用的是桥接模式(server-bridge和dev tap),这个是关键点,只有这样设置才可 ...
- CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网
自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...
- 内网服务器离线编译安装mysql5.7并调优
目录 内网服务器离线编译安装mysql5.7并调优 前言 关于MySQL 一.MySQL安装篇 部署环境 前期准备工具 挂载系统ISO镜像,配置yum源 二.MySQL调优篇 1.对MySQL进行安全 ...
- OpenWRT DNS无法解析WAN连接的内网服务器域名
系统版本OpenWrt Chaos Calmer 15.05.1,网络连接为:WAN口连接内网10.x.x.x网段,WAN口设置为静态IP.设置L2TP接口,通过L2TP访问外网.问题出现于,所有外网 ...
- H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器
H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器 ------------------------------------------------------------ ...
随机推荐
- hibernate4连接mysql自动创建表之错误
我在学习Hibernate的过程中,遇到了这样一个错误:JUnit测试通过,但是数据库中却没有创建一个表,控制台的错误信息如下: HHH000388: Unsuccessful: create tab ...
- yum clean all 是什么意思
yum会将下载下来的 包文件rpm和头文件header存盘在 本地机器的硬盘 缓存中, 这个将占用 硬盘空间, 可以将这些内容清除掉, 以释放磁盘空间: yum clean headers: // 释 ...
- Job中织梦标签的调用
织梦CMS是一个好东东, 可以让一个网站更好维护和管理, 唯一让我感到忧桑的就是经常在搭后台的时候记不住那些标签,,无奈只能去看手册,有相同的案例直接COPY过来,直接用就OK~~~其实CMS这个东西 ...
- 有利于SEO优化的DIV+CSS的命名规则小结
可以先去这里温习一下CSS和HTML的知识!DIV+CSS规范命名大全集合 CSS开发技巧整理 一.CSS文件及样式命名 1.CSS文件命名规范 全局样式:global.css/master.css ...
- 【Bootstrap】Bootstrap和Java分页-第一篇
目录 关于此文 pagination BetweenIndex DefaultPagination QueryHandler BookDaoImpl BookServiceImpl BookActio ...
- 第一个C++例子
#include <iostream> using namespace std; class Time { private: int hour; int minute; int secon ...
- Ali相关面试题
接到的电话面试,人比较随和,当时IOS有一段时间没怎么碰了,因为近期一直在用C++,QT做IM.很多回答我都扯到了C++上,所以可能没戏- -! 回想一下,大概有如下几个问题:(都是很常见的问题) 1 ...
- C++实现对lua访问的封装
这是一个几年前写的对lua的访问封装,当时的项目仅提供了最基本的lua访问接口:调用lua函数,向lua注册标准格式的C++函数. 本来我想引进luabind,但luabind相对又过于复杂,并不是所 ...
- Ubuntu 12 安装 MySQL 5.6.26 及 问题汇总
参考先前的文章:Ubuntu 14 编译安装 PHP 5.4.45 + Nginx 1.4.7 + MySQL 5.6.26 笔记 安装过程: #安装依赖库 sudo apt-get install ...
- springmvc之自定义注解(annotation)
参考:日志处理 三:Filter+自定义注解实现 系统日志跟踪功能 1.项目结构 2.pom.xml,添加需要依赖 <project xmlns="http://maven.apach ...