将两个局域网用openvpn连接起来

考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架构安全,集群全部在内网做。还有一个优点就是做nat模式可以自由迁移电脑,搭建的集群还能运行,如果是桥接模式就不行了,现在的状况就是有两台的电脑虚拟机nat模式,如何连接起来一起工作,研究了很久,居然可以用openvpn可以解决。下面来具体介绍如何搭建openvpn

1. 制作yum源和epe源,这个就不详细说了,我用的是阿里云的源,去阿里云的帮助文档也可以找到制作方法,很简单的,别忘记了

yum clean  all

yum repolist

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

yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig openvpn easy-rsa

3、配置openvpn 拷贝配置文件

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf  /etc/openvpn/

4.编辑openvpn主配置文件

vim /etc/openvpn/server.conf

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

proto udp //使用udp协议,还有一个tcp协议,允许http代理
dev tap  //使用tap设备
server 192.168.44.0  255.255.255.0 //配置网关
push "route 192.168.43.0 255.255.255.0" //配置路由
#vpn的内网地址段,与NAT转发规则相对应,openvpn在使用tun路由模式时,分配给client端分配的IP地址段  
push "redirect-gateway def1 bypass-dhcp" //开启自动分配地址
//设置dns解析
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4" 
//设置运行时使用的用户和用户组
user nobody
group nobody
log         openvpn.log //开启日志
explicit-exit-notify 0 //默认是1 默认的意思使用udp协议,这里我们改成0

5、配置证书文件

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="BJ"
export KEY_CITY="Bei Jing"
export KEY_ORG="mabang" #定义所在的组织
export KEY_EMAIL="626612631@qq.com"
export KEY_OU="magedu"  #定义所在的单位
export KEY_NAME="vpnserver"#定义openvpn服务器的名称
export KEY_CN="magedu" 这行配置,前边默认的“#”号注释去掉。

制作证书 openvpn

cp  /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    #之前已配置好相关参数,故执行命令后,按回车键,一直到结束。

创建服务端证书

./build-key-server server   
#按回车键进行,在提示输入密码的地方,设置一个密码如123456在An optional company name处输入如:srayban
最后输入两次“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     
#创建客户端证书文件,按回车进行,提示输入密码的地方,输入之前设置的证书密码,123456
An optional company name处输入先前设置的公司名字(srayban)。
【一定要和先前输入的一样哦.,其他参数如果前面设置了,也要保持一致噢】 
#另外注意:有多少个客户端就需要
./build-key client 多少次,当然client名字需不同。

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

6、设置iptables,firewalld、路由转发

  • [ ] 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.43.0/24  -j MASQUERADE 
iptables -A INPUT -p TCP --dport 1194 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
service i.ptables save   #保存防火墙规则
echo 1 > /proc/sys/net/ipv4/ip_forward     #临时开启路由转发
vi  /etc/sysctl.conf  
#编辑配置文件,添加以下配置,设置永久路由转发
net.ipv4.ip_forward = 1
  • [√] firewalld 设置

在CentOS 7中,iptables防火墙已经被firewalld所取代,需要使用如下方法:首先启动firewalld,先查看防火墙状态

systemctl status firewalld.service
如果防火墙没有启动,启动防火墙

service firewalld start

查看有哪些服务已经在列表中允许通过:
# firewall-cmd --list-services
dhcpv6-client http https ssh



可以看到已经有了dhcpv6-client, http, https, ssh四项,接下来添加openvpn:
# firewall-cmd --add-service openvpn 
success
# firewall-cmd --permanent --add-service openvpn 
success


检查一下:
# firewall-cmd --list-services
dhcpv6-client http https openvpn ssh

最后添加masquerade:

# firewall-cmd --add-masquerade 
success
# firewall-cmd --permanent --add-masquerade 
success

以下命令用于确认masquerade是否添加成功:
# firewall-cmd --query-masquerade
yes
  • [ ] 允许IP转发

在sysctl中开启IP转发

vim /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1
  1. 启动OpenVPN服务

启动OpenVPN服务器并添加自动启动项:

sysctl -p

systemctl -f enable openvpn@server.service      #设置启动文件

systemctl start openvpn@server.service  #启动openvpn的命令
systemctl enable openvpn@server.service  #开机自启动

至此服务端搭建完成。

8、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里,
这样只需这一个文件即可连接

原创文章,作者:srayban,如若转载,请注明出处:http://www.178linux.com/74524

(10)
sraybansrayban
上一篇 2017-05-01
下一篇 2017-05-01

相关推荐

  • VIM编辑器用法及练习

    VIM编辑器用法及练习 什么是vim? vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现…

    Linux干货 2016-10-30
  • python装饰器

    装饰器本质是一个装饰器函数,在不改变一个函数的函数体本身的情况下,实现函数体本身外其他的功能 1.实现一个装饰器 def  logger(fn):                         #装饰器函数必须只能传入一个参数,那就是被装饰函数     print(‘in’)     def wrapper(*args,**kwar…

    Linux干货 2017-10-23
  • 关于大型网站技术演进的思考(十二)–网站静态化处理—缓存(4)

    原文出处: 夏天的森林   上篇我补充了下SSI的知识,SSI是一个十分常见的技术,记得多年前我看到很多门户网站页面的后缀是.shtml,那么这就说明很多门户网站都曾经使用过SSI技术,其实现在搜狐网站也还在用shtml,如下图所示: 由此可见SSI在互联网的应用还是非常广泛的。其实互联网很多网页如果我们按照动静分离策略拆分,绝…

    2015-03-11
  • Linux 环境 SSD(固态硬盘)使用指南

    原文链接:http://www.jinbuguo.com/storage/ssd_usage.html 前言 因为SSD有着诸多与传统机械式硬盘不同的特点,而且这些特点导致了SSD在实际使用中的性能和寿命与其使用方法紧密相关。所以并不是说买来一块非常牛X的SSD就万事大吉了。另一方面,SSD的性能并不像机械式硬盘那样比较稳定(浮动范围小),而是呈现出一种离散…

    Linux干货 2015-04-08
  • 第十八周

    “1、为LNMP架构添加memcached支持,并完成对缓存效果的测试报告; 架构(3台centos7) nginx与php 192.168.1.108    nginx,php-fpm,php-mysql php-pecl-memcache mysql         192…

    2017-08-21
  • iptables 入门

    iptables简单介绍    其实就是大家所熟知的基于命令行的防火墙工具,它使用规则链来允许或是阻止收发报文。当一条网络连接试图在你的系统中建立连接时,iptablels会查找其对应的匹配规则。如果找不到,iptables将对其采取默认的规则。  iptables基本的用法和常用代码 # iptables -vnL …

    Linux干货 2017-03-15

评论列表(2条)

  • PowerMichael
    PowerMichael 2017-05-02 08:15

    厉害,干货,学习了。

  • kemenkai
    kemenkai 2017-05-19 16:16

    Server端和Client端都是单网卡还是双网卡的?
    这也是点对点的连接吗?