设为首页 收藏本站
查看: 1091|回复: 0

[经验分享] CentOS 6.x搭建Open***实现双IDC互联

[复制链接]

尚未签到

发表于 2019-1-27 07:03:49 | 显示全部楼层 |阅读模式
  一、需求说明
  1、网络拓扑结构


  2、环境说明
设备名称
IP地址信息所属机房
***server  外网eth0  10.0.0.3     VMnet3
  内网eth1  192.168.1.4  VMnet4
  网关 机房默认网关
上海
***client外网eth0  10.0.0.4     VMnet3
内网eth1  172.16.1.4   VMnet5
网关 机房默认网关
北京
client1  eth0 192.168.1.5       VMnet4
  网关 192.168.1.4
上海
client2eth0 172.16.1.5        VMnet5
网关 172.16.1.4
北京
  3、实现目标

  1、实现上海IDC机房和北京IDC机房内网机器互联,即我们可以通过client1 ping通client2
  2、实现192.168.1.5和172.16.1.5互通
  在实验前,请把四台虚拟机准备好,IP配置好,其中我设置的VMnet3、4、5都是仅主机模式,大家可以先把需要安装的软件安装好在修改为仅主机,因为仅主机模式不能上互联网,给电脑的VMnet4配置一个192.168.1.11,给VMnet5配置一个172.16.1.11,然后我们就可以通过连接四台虚拟机了。
  3、环境搭建好之后我们检查一下联通性,正常情况下六个IP互通情况如下

192.168.1.5192.168.1.410.0.0.310.0.0.4172.16.1.4172.16.1.5
192.168.1.5
192.168.1.4
10.0.0.3
10.0.0.4
172.16.1.4
172.16.1.5
  这里可以使用tcpdump抓包查看过程
  4、把***Server、***Client的数据包转发打开,不然数据传输不过去
  # echo 1 > /proc/sys/net/ipv4/ip_forward
  这里可以使用tcpdump抓包查看过程
  二、Open*** Server的安装配置
  1、Open***下载

  通过官网下载最新版本的open***。http://open***.net/,有可能因为国家防火墙的原因,可能无法访问,我这里提供的下载地址是https://swupdate.open***.org/community/releases/open***-2.3.7.tar.gz
  2、Open*** Server安装
    我的系统环境是CentOS 6.3 32位最小化安装,我的上一篇文章是使用的yum安装,http://wangzan18.blog.运维网.com/8021085/1673778,使用的是epel仓库,我还是推荐大家使用yum安装,简单方便,open***依赖一些软件,openssl提供数据加密,lzo提供数据压缩,我们都可以使用yum进行安装,这里我的open***使用源码编译安装,一些依赖的软件包大家请提前下载好。
#安装依赖的软件包
yum install openssl-devel lzo-devel pam-devel gcc wget -y
#下载open***软件
wget https://swupdate.open***.org/community/releases/open***-2.3.7.tar.gz
#编译安装open***
tar xf open***-2.3.7.tar.gz
cd open***-2.3.7
./configure --prefix=/usr/local/open*** --sysconfdir=/etc/open***

  如果出现以上的内容,证明我们配置好了,下面我们就进行编译安装
make
make install
tree /usr/local/open***/  安装好的目录结构大概如下,不同版本可能有所不同

  下面我们添加open***的配置文件
mkdir /etc/open***
cp sample/sample-config-files/server.conf /etc/open***/  因为我们这个版本没有提供密钥生成更具,但是他给我们提供了默认的证书,在open***-2.3.7/sample/sample-keys目录下面
  3、我们这里现在密钥生成工具

#下载密钥生成工具
wget https://github.com/Open***/easy-rsa/archive/release/2.x.zip
unzip 2.x.zip
#复制我们的CA到open***配置目录下
cp -ra easy-rsa-release-2.x/easy-rsa/2.0 /etc/open***/easy-rsa
cd /etc/open***/easy-rsa

  根据脚本的名字我们可以猜测到工具的功能,首先我们先修改一下vars这个文件,修改成我们相关的内容。
  # vim vars

  # source vars
  # ./buile-ca

  创建服务器证书
  # ./build-key-server server

  创建客户端证书
  # ./build-key client

  创建Diffie Hellman参数
  # ./build-dh
  这一步需要的时间很长,大家可以把vars文件里面的export KEY_SIZE=2048 改为1024
  生产的证书全部放在easy-rsa目录下面的keys里面


  4、Open*** Server的配置
  我们查看一下配置文件的内容,具体每个参数的含义配置文件讲解的很详细,我这里不再陈述,为了看起来简便,我这里把注释删掉,参数不是很多,我们对其修改成我们需要的,修改后我这里是这样的。
grep -vE '^#|^;|^$' /etc/open***/server.conf

  --client-config-dir /etc/open***/ccd/
  通过该选项为存放客户端定制的配置文件指定一个目录,在一个***用户通过客户端验证之后,Open***将会查找这个目录,通过这些文件可以使用--ifconfig-push来指定一个固定的客户端IP地址,也可以使用--iroute指定一个客户端自己拥有的子网。
  --push "route 192.168.1.0 255.255.255.0"
  这项指令是把***Server后端的子网推送给***Client,要不Client不知道如何到达这个子网。
  --route 172.16.1.0 255.255.255.0
  这项指令是给***Server添加一条路由,要不***Server不知道如何到达172.16.1.0网段。
  --server 10.8.0.0 255.255.255.0
  这项指令是给***Client分配IP地址。
cat /etc/open***/ccd/client

  --iroute 172.16.1.0 255.255.255.0
  为特定的客户端生产内部路由。
  --ifconfig-push 10.8.0.4 10.8.0.5
  这条指令就是给特定客户端指定分配的IP的,可以不使用,除非客户端比较多,你有必要进行区分。
  到此服务端的配置告一段落

  三、Open*** Client的安装配置
  1、客户端的安装
  客户端的安装请安装服务端的安装,过程一样
  2、客户端的配置
  下面我把我的客户端配置文件发送一下,首先我们需要把服务器端的证书文件拷贝过来。
  # cat /etc/open***/client.conf

  客户端的配置比较简单,这里不在进行讲解。
  四、服务的启动及测试
  1、首先我们先查看一下***服务端和客户端的路由信息
  ***服务端

  ***客户端

  2、***服务端及客户端的启动
  ***服务端启动

/usr/local/open***/sbin/open*** /etc/open***/server.conf &
cat /var/log/open***/open***.log

  ***客户端启动
/usr/local/open***/sbin/open*** /etc/open***/client.conf

  3、***服务端及客户端的启动后的路由信息
  ***服务端


  我们可以看到增加了一个虚拟网卡,增加了几条路由。
  Open***默认使用的net30模式,10.8.0.1是获取的一个实际IP,接受ping,10.8.0.2是Open***内部的一个虚拟IP地址,它被用作末端路由,对于这个地址,Open***不会接受ping。
  我们可以在启动的时候增加一个参数--topology subnet让Open***工作在subnet模式下,使用此模式要去掉前面的选项--ifconfig-push,不然客户端会连接失败,具体net30和subnet模式的区别,大家可以参考官网文档(man open*** ,doc)或者参考本文附录。
  # /usr/local/open***/sbin/open*** --config /etc/open***/server.conf --topology subnet
  ***客户端

  现在***服务端和客户端都有到达对方后端子网的路由,我测试了一下,他们到对方后端子网的网络都已经联通了,我这里就不在贴图了。
  这里可以使用tcpdump抓包查看过程
  五、项目需求实现
  1、我们在client1测试

  结果显示client1可以ping通client2。
  2、在client2上面测试

  我们可以看到client2和client1也是互通的,由此证明项目成功。
  六、项目改进
  1、不修改客户机默认网关
  我们知道,上面的环境是所有的客户机网关都指向了***服务器,在很多环境场合是不允许我们修改内网客户机的网关,数量少还可以,数量多的话那就是很大的工作,并且可能会影响服务的运行,而且所有的流量都经过***也是对***服务器很大的压力。
  假设所有的客户机都是现有的默认网关,我们实现的目的就是他们到达对方子网的时候经过***服务器,而访问外网还是使用自己默认的网关,其实很简单,我们只需要在每个客户机上面添加上到对方子网的路由。
  2、如何添加路由
  对于client1,我是这样操作,我们删掉现在的默认路由,可以不设定
route del default gw 192.168.1.4ping 172.16.1.5
connect: Network is unreachable  这时候我们是无法ping通对方子网的,下面我们添加一条路由
route add -net 172.16.1.0/24 gw 192.168.1.4

  client2也是如此操作
route del default gw 172.16.1.4
route add -net 192.168.1.0/24 gw 172.16.1.4  3、如何更加了解数据传输过程

  Linux提供一个数据抓包的命令tcpdump,如果过程中哪里有问题,数据就是传输不过去,我们可以通过抓包工具一步一步抓取,我这里简单介绍一个例子,比如我们在client1 ping client2不通,我们首先在***server上面转包看看数据吧流向,然后在***client上面抓取,然后在client2上面抓取,看看数据吧是否有回包,如果没有回包很大可能的情况就是回包路由的问题。
  七、附录
  在--topology mode选项中,mode有三种取值,即net30、subnet和p2p。
  当运行在--dev tun模式下时,可以通过--topology mode选项来配置虚拟地址的拓扑结构。而对于--dev tap而言,该选项没有任何意义,因为在--dev tap模式下,总是使用子网拓扑。
  1、net30
  Open***默认的子网掩码是/30,也就是255.255.225.252。在这样的情况下,只有两个地址可以使用,一个给服务端,一个给客户端,这样地址是很浪费的。
  在Open***的2.0版本中,Open***能通过虚拟一个TUN虚拟接口处理多个客户端,要处理这种技术,可以把服务器上看到的PtP连接看作是一个操作系统和Open***之间的连接,而在Open***内部还需要为每一个客户端创建另一个PtP。如何所有的O/S在TUN接口上真正的支持PtP连接,那么这将会是的Open***服务器仅使用一个IP地址,并且一个客户端也使用一个IP地址。
  2、subnet
  subnet通过配置TUN接口的本地IP地址和子网掩码来使用一个子网,而不是点对点的拓扑结构,类似于使用--dev tap和以太网桥模式的拓扑结构。这种模式为每个客户端分配单个IP地址。
  3、p2p
  p2p模式使用点对点拓扑,仅适用于Windows系统下,现在已经不再赞成使用。
  如有什么不同意见欢迎和我交流,谢谢!




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667986-1-1.html 上篇帖子: Database Force open example 下篇帖子: too many open file
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表