热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

CentOS6.3下Openswan实现双IDC互联

一、软件说明1、Openswan简介Openswan是Linux下IPsec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。Openswan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS以及ARM。

一、软件说明

1、Openswan简介
    Openswan是Linux下IPsec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。
    Openswan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS以及ARM。
    Openswan是开源项目FreeS/WAN停止开发后的后继分支项目,其分裂为两个项目,Openswan与 Strongswan,Openswan由三个主要组件构成:配置工具(ipsec命令脚本)、Key管理工具(pluto)、
内核组件(KLIPS/26sec)
    26sec使用2.6内核内建模块Netkey,用来替代Openswan开发的KLIPS模块,2.4及以下版本内核无Netkey模块支持,只能使用KLIPS。如果你用的是2.6.9以上的内核,推荐使用26sec,可以不用给内核打Nat-T补丁就可以使用NAT,2.6.9以下版本内核的NETKEY存在Bug,推荐使用KLIPS。IPSec差不多是最老的VPN标准了,她的依然很安全,当然是在配置好以后。言下之意,她的配置比较麻烦。本文下面将做说明。 

    因为FreeS/WAN已经在2004年三月停止开发,所以我们使用她的后继项目Openswan来做我们的IPSec实验。其相比FreeS/WAN有个好处,如果使用 26sec 的时候,Openswan不用打补丁,就可以用nat。

2、Openswan的安装
    因为IPSec工作在网络层,所以需要系统内核态的支持,上面说过,有两个选择,用自带(26sec)的或用Openswan(KLIPS)的,为了方便(如何打补丁和编译内核不是本文讨论的重点),本文使用CentOS源中编译好的Openswan来进行实验。
# yum install openswan
    如果你想从源码安装,到http://www.openswan.org/code  下载软件包,然后按照包中的说明安装。由于我们使用26sec,所以只要make programs;make install就可以搞定。值得注意的是,现在的Openswan已经内建些个好用的补丁,比如x.509和NAT Traversal的支持,使用起来非常的方便。你也可以用下面的命令来检验你的安装。

# ipsec verify

3、Openswan的认证方式   

    Openswan支持许多不同的认证方式,包括RSA keys、pre-shared keys或x.509证书方式。RSA Signature比较简单。

4、Openswan的连接方式

1)  Network-To-Network方式
    Network-To-Network方式是把两个网络连接成一个虚拟专用网络。当连接建立后,每个子网的主机都可透明地访问远程子网的主机。要实现此种连接方式,要满足以下两个条件:
    I. 每个子网各自拥有一台安装有OpenSWan的主机作为其子网的出口网关或者路由;
    II.每个子网的IP段不能有叠加
2)  Road Warrior方式
    当使用Network-To-Network方式时,作为每个子网网关的主机不能像子网内部主机那样透明访问远程子网的主机,也就是说:如果你是一个使用LClient的移动用户,经常出差或是在不同的地点办公,你的LClient将不能用Network-To-Network方式与公司网络进行连接。Road Warrior方式正是为这种情况而设计的,连接建立后,你的LClient就可以连接到远程的网络了。

   更多详情请参见OpenSWan项目主页:http://www.openswan.org

 

二、环境说明

1、网络拓扑

图片1

2、实验目的

  本使用目的是为了实现client1和client2两个不同地区不同子网的互通。

3、实验环境介绍 

设备名称 IP地址信息 所属机房
vpnserver1

外网eth0  192.168.0.50     桥接

内网eth1  192.168.20.1     VMnet4

网    关  192.168.0.1

北京
vpnserver2

外网eth0  192.168.0.51     桥接

内网eth1  192.168.10.1     VMnet5

网    关  192.168.0.1

上海
client1

eth0      192.168.20.2     VMnet4

网关      192.168.20.1

北京
client2

eth0      192.168.10.2     VMnet5

网关      192.168.10.1

上海

    我本地的网络是192.168.0.0/24网段,为了让VPNServer可以上网,我这边把VPNServer的eht0设定到了192.168.0.0/24网段,并且网卡设定为桥接,其他的网络安装上面表格配置好,这样我们就可以全部远程操作了,把每个主机的主机名修改好,这样便于我们观察。

 

三、Openswan环境部署

1、开启数据转发

# vim /etc/sysctl.conf 

net.ipv4.ip_forward = 1

net.ipv4.conf.default.rp_filter = 0

2、关闭icmp重定向

sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf

# sysctl -p

3、关闭SELinux

# setenforce 0

4、安装openswan

# yum install openswan lsof -y

 

# rpm -ql openswan      //查看安装了那些文件。

# ipsec --version       //查看ipsec的版本

图片2

这里并没有加载任何的IPsec stack,当启动IPsec后悔自动加载系统自带的netkey。

# service ipsec start

# ipsec verify          //对ipsec进行验证

图片3

# netstat -anp

图片4

我们可以看到openswan监听在UDP的500和4500两个端口,其中500是用来IKE密钥交换协商,4500的NAT-T是nat穿透的。

四、Openswan配置(network-to-network)

1、使用pre-shared keys认证方式(PSK

在192.168.0.50上面作如下修改,里面的配置参数很多,大家可以参照man ipsec.conf里面的讲解

# vim /etc/ipsec.conf

version 2.0     

config setup

        protostack=netkey      //使用2.6内核内建模块netkey,2.6以下是KLIPS模块 

        nat_traversal=yes      //NAT-T 即NAT穿越

        virtual_private=

        oe=off

conn net-to-net

        authby=secret          //使用预共享密钥方式进行认证

        type=tunnel

        left=192.168.0.50      //一端IP地址

        leftsubnet=192.168.20.0/24      //一端内网网段地址

        leftid=@test1          //一端的标识符,可以任意填写,如果多个连接需要区分

        leftnexthop=%defaultroute

        right=192.168.0.51

        rightsubnet=192.168.10.0/24

        rightid=@test2

        rightnexthop=%defaultroute

        auto=add     //add代表只是添加,但并不会连接,如果为start则代表着启动自动连接

图片5

同样在另一台vpnserver上面配置,信息和上面一下,不需要做什么修改。

# vim /etc/ipsec.secrets

192.168.0.50 %any 0.0.0.0 : PSK "123"

 

这个文件的格式为:“Local Ip address”  “remote ip address” : PSK “your key”

在192.168.0.51上面修改成如下

# vim /etc/ipsec.secrets

192.168.0.51 %any 0.0.0.0 : PSK "123"

重启两个vpn服务

# service ipsec restart

然后启动一下我们的con

# ipsec auto --up net-to-net

图片6

当我们看到ipsec sa estabilished,就证明我们连接成功了,也可以从中看到一些加密方法,密钥交换参数,我们也可以在配置文件里面添加如下信息进行修改。

ike=aes256-sha2_256;modp2048

phase2alg=aes256-sha2_256;modp2048

然后在clinet1上面去ping对端子网的设备,可以看到如下,但是VPNServer是不能ping通对方子网的设备的。

图片7

我们可以在任意VPNServer网关上面抓包,查看数据信息

# tcpdump -i eth0 -nn

图片8

其中ESP(Encapsulating Security Payload)就是加密数据。

测试通过后,可以把连接配置中 
auto=add     更改为: 
auto=start   这样当Openswan启动时就可自动进行连接。

到此我们net-to-net基于psk模式的VPN就搭建成功了。

 

2、使用RSA Signature认证方式(RSA数字签名)

openswan的安装方式同本文第三章节一样,下面我们主要讲解配置的不同。下面提到的L-Server指的是192.168.0.50(VPNServer1),R-Server指的是192.168.0.51(VPNServer2)。

在L-Server上面进行如下操作,在操作之前,请先删掉/etc/ipsec.secrets

生成一个新的RSA密钥对
# ipsec newhostkey --output /etc/ipsec.secrets

因为这个生成过程太过缓慢,我们使用下面方面进行加速生成

# rm -rf /dev/random

# ln -s /dev/urandom /dev/random

# ipsec newhostkey --output /etc/ipsec.secrets

以上内容同样的方法在R-Server上面执行一遍

在L-Server上执行ipsec showhostkey --left得到L-Server的公钥

# ipsec showhostkey --left

图片9

在R-Server上执行ipsec showhostkey --right得到R-Server的公钥

# ipsec showhostkey --right

图片10

请记住这两个key,后面会用到。

 

L-Sserver:

编辑/etc/ipsec.conf文件


推荐阅读
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 1、打开etcsysconfiggrub,   #vimetcsysconfiggrub   内容如下: ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Linux下安装依赖包版本高解决方法
    本文介绍了在Linux系统下,当已安装的依赖包版本高于需要安装的依赖包版本时,解决方法包括欺骗安装程序和修改相关配置文件等操作。针对不同情况,提供了不同的解决方案。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
author-avatar
七锦少年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有