CentOS 6.5下Openswan实现双IDC互联

一、软件说明
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、   (RSA Signature比较简单)

pre-shared keys、

xauth或x.509证书方式。.

4、Openswan的连接方式:
1)  Network-To-Network方式   本文重点是以此来完成企业需求的

Network-To-Network方式是把两个网络连接成一个虚拟专用网络。当连接建立后,每个子网的主机都可透明地访问远程子网的主机。

要实现此种连接方式,要满足以下两个条件:

I. 每个子网各自拥有一台安装有OpenSWan的主机作为其子网的出口网关或者路由;

II.每个子网的IP段不能有叠加

(2)Road Warrior方式

当使用Network-To-Network方式时,作为每个子网网关的主机(openswan server)不能像子网内部主机那样透明访问远程子网的主机,也就是说:如果你是一个使用LClient的移动用户,经常出差或是在不同的地点办公,你的LClient将不能用Network-To-Network方式与公司网络进行连接。Road Warrior方式正是为这种情况而设计的,连接建立后,你的LClient就可以连接到远程的网络了。(或者使用SSL vpn的开源产品openvpn来实现出差时候,远程拨号访问的需求)

更多详情请参见OpenSWan项目主页:http://www.openswan.org
5、本文将从以下几点进行测试
net-to-net模型  **********
1)基于pre-shared keys认证方式(PSK)
2)基于RSA Signature认证方式(RSA数字签名)
3)基于数字证书认证方式(x.509证书)
4)基于XAUTH认证方式(IPSec/Xauth PSK)
RoadWarrior
5)基于pre-shared keys认证方式(PSK)
6)基于RSA Signature认证方式(RSA数字签名)
7)基于数字证书认证方式(x.509证书)
8)基于XAUTH认证方式(IPSec/Xauth PSK)

二、环境说明
1、网络拓扑

2、实验目的

本使用目的是为了实现client1和client2两个不同地区不同子网的互通。即不同机房,不同网段的内网机器通信

3、实验环境介绍 
设备名称
IP地址信息
所属机房

北京

vpnserver1
外网eth0  192.168.2.48     桥接
内网eth1  192.168.183.1     VMnet1
网关     192.168.2.1

上海

vpnserver2

外网eth0  192.168.2.111     桥接
内网eth1  192.168.233.1     VMnet2
网关     192.168.2.1

client1    ---北京
eth0      192.168.183.44   VMnet
网关      192.168.183.1     说明,我使用的是网关路由模式,是client机器通过此网关来通信

client2    ----上海

eth0       192.168.233.44   VMnet4

网关       192.168.233.1

我本地的网络是192.168.2.0/24网段,为了让VPNServer可以上网,我这边把VPNServer的eht0设定到了192.168.2.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    (两台vpnserve上面都是同样操作)
# yum install openswan lsof -y
# rpm -ql openswan      //查看安装了那些文件。
# ipsec --version       //查看ipsec的版本

[[email protected] etc]# ipsec --version

Linux Openswan U2.6.32/K2.6.32-431.el6.x86_64 (netkey)

See `ipsec --copyright‘ for copyright information.

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

[[email protected] etc]#service ipsec start
[[email protected] etc]# ipsec verify         //对ipsec进行验证(两台vpnserve上面都是同样操作)

#################

重要说明,如果前边的步骤没做安装文档完成,汇报一下错误,导致接下来的未知错误

[[email protected] ~]# ipsec verify

Checking your system to see if IPsec got installed and started correctly:

Version check and ipsec on-path                             [OK]

Linux Openswan U2.6.32/K(no kernel code presently loaded)

Checking for IPsec support in kernel                         [FAILED]

SAref kernel support                                       [N/A]

Checking that pluto is running                               [FAILED]

whack: Pluto is not running (no "/var/run/pluto/pluto.ctl")

Two or more interfaces found, checking IP forwarding              [FAILED]

whack: Pluto is not running (no "/var/run/pluto/pluto.ctl")

Checking NAT and MASQUERADEing                               [OK]

Checking for ‘ip‘ command                                   [OK]

Checking /bin/sh is not /bin/dash                           [OK]

Checking for ‘iptables‘ command                             [OK]

cat: /etc/ipsec.d/examples/no_oe.conf: No such file or directory

cat: /etc/ipsec.d/examples/no_oe.conf: No such file or directory

Opportunistic Encryption Support

#################

所以, 确保ipsec verify的结果都是如图所示方可继续接下来的配置

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

四、Openswan配置(network-to-network)
1、基于pre-shared keys认证方式(PSK)
在vpnserver1()上面作如下修改,里面的配置参数很多,大家可以参照man ipsec.conf里面的讲解
# vim /etc/ipsec.conf

[[email protected] etc]# grep -Ev  ‘#|^$‘ ipsec.conf.psk

config setup

protostack=netkey

nat_traversal=yes

virtual_private=

oe=off

conn net-to-net

ike=aes256-sha2_256;modp2048

phase2alg=aes256-sha2_256;modp2048

authby=secret

type=tunnel

left=192.168.2.48

leftsubnet=192.168.183.0/24

[email protected]

leftnexthop=%defaultroute

right=192.168.2.111

rightsubnet=192.168.233.0/24

[email protected]

rightnexthop=%defaultroute

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

同样在另一台vpnserver2上面配置和vpnsever1一样的配置文件

即: scp ipsec.conf 192.168.2.111:/etc/ (两台vpnserve上面的ipsec.conf配置文件是一样的)

[[email protected] etc]#  vim /etc/ipsec.secrets

192.168.2.48 %any 0.0.0.0 : PSK "123"

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

在192.168.2.111(vpnserver2)上面修改成如下
[[email protected] etc]# vim /etc/ipsec.secrets
192.168.2.111 %any 0.0.0.0 : PSK "123"
重启两个vpn服务
# service ipsec restart
然后启动一下我们的con
# ipsec auto --up net-to-net  (此处由于ipsec.conf中auto=add,所以需要手动添加)

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

ike=aes256-sha2_256;modp2048
phase2alg=aes256-sha2_256;modp2048

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

client1上的操作:

route add  default gw  192.168.183.1

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

# tcpdump -i eth1 -nn

# tcpdump -i eth0 -nn

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

echo request

echo  reply

表明既可以发送请求,也可以收到回应包

测试通过后,可以把连接配置中 auto=add

更改为: auto=start

这样当Openswan启动时就可自动进行连接。
到此我们net-to-net基于psk模式的VPN就搭建成功了。


########################################################################################

二、基于RSA Signature认证方式(RSA数字签名)


注:因为我是接着上面的实验进行操作,一直有问题无法解决,后来重新安装了一下,安装下面的流程一次就成功了。
openswan的安装方式同本文刚开始安装一样,下面我们主要讲解配置的不同。

下面提到的L-Server指的是192.168.2..48(VPNServer1),

R-Server指的是192.168.2.111(VPNServer2)。

在L-Server上面进行如下操作
生成一个新的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上面执行一遍

# rm -rf /dev/random
# ln -s /dev/urandom /dev/random
# ipsec newhostkey --output /etc/ipsec.secrets

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

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

请记住这两个key,后面会用到,也可以使用重定向加到配置文件里面

L-Sserver:
编辑/etc/ipsec.conf文件
# vim /etc/ipsec.conf

# scp /etc/ipsec.conf 192.168.2.111:/etc  (同步到R-server上)
# service ipsec restart

# ipsec auto --up net-to-net

当我们看到ipsec sa estabilished,就证明我们连接成功了

测试通过后,可以把连接配置中 auto=add

更改为: auto=start

# service ipsec restart

测试:

在一端client1去ping另一端的客户机client2,然后我们在vpnserver上面抓包查看。

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

# tcpdump -i eth1 -nn

# tcpdump -i eth0 -nn

此时一切测试成功之后 
# chkconfig ipsec on

基于RSA Signature认证方式(RSA数字签名)搭建完毕。

时间: 2025-01-07 20:36:46

CentOS 6.5下Openswan实现双IDC互联的相关文章

CentOS 6.3下Openswan实现双IDC互联

一.软件说明 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由三个主要组件构成:配置工具(ip

openvpn实现双IDC互联

一.需求说明 1.网络拓扑结构 2.环境说明 设备名称 IP地址信息 所属机房 vpnserver 外网eth0  10.0.0.3 内网eth1  192.168.1.4 上海 vpnclient 外网eth0  10.0.0.4 内网eth1  172.16.1.4 北京 client1 eth0 192.168.1.5 网关 192.168.1.4 上海 client2 eth0 172.16.1.5 网关 172.16.1.4 北京 3.实现目标 实现上海IDC机房和北京IDC机房内网机

win10下安装centos7双系统

国庆最后一天了,闲来无事装个双系统,用虚拟机的linux总有些不方便. window下安装linux双系统有两中方法: 1.U盘安装 (我采用的方法,后面详述) 2.EasyBCD工具安装 (使用EasyBCD完美实现Windows7与Linux双系统) 使用U盘win10安装centos7双系统,网上的文章有很多,不一一列举,然而这并不能让我少走弯路,不知是历史遗留原因,还是系统自身原因,原本很简单的东西,愣是让网友们说的很复杂. 这里面有个最大的风险点:linux覆盖了window系统.控制

CentOS 7.0下安装小小输入法

小小输入法也叫yong输入法,是一个免费但不开源的中文输入法,其作者为dgod,2008年发布第一个版本,至今六年时间依然在不断的更新.以一人之力默默维护一个项目6年时间,不得不让人佩服. 官方网址: http://yong.dgod.net/ 下载地址: http://yongim.ys168.com/ 曾经试图在CentOS 6.5下安装该输入法,无奈CentOS 6.5的库版本太低,一直安不上.下面记录一下在CentOS 7.0下的安装过程. 从官方网站下载Linux下的最新版本yong-

CentOS 6.5实现LAMP+NFS双web服务负载均衡

CentOS 6.5实现LAMP+NFS双web服务负载均衡 环境说明: CentOS 6.5最小化安装,安装相应的组件: [[email protected] ~]# yum groupinstall -y"Development tools" [[email protected] ~]# yum groupinstall -y"Server Platform Development" 准备三台主机: httpa: 192.168.1.217  搭建web服务器

Centos 6.5下安装vsftp本地用户

Centos 6.5下安装vsftp------本地用户 准备工作: 检查防火墙和selinux,并关闭: service iptables stop    c6的版本用这个:如果要用,就开启20,21端口: chkconfig iptables off                 ; sestatus先查看selinux的状态, 如果不是disable,可用 vi/etc/selinux/config 将SELINUX=XXX -->XXX 代表级别 改为SELINUX=disabled

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

CentOS 6.5下PXE+Kickstart无人值守安装操作系统

CentOS 6.5下PXE+Kickstart无人值守安装操作系统 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivia

centos和redhat下安装postgreSQL

1.确定你要下载的版本:下载地址 2.进入你存放下载文件的目录运行wget http://yum.postgresql.org/9.2/redhat/rhel-5-i386/pgdg-centos92-9.2-6.noarch.rpm,我的是32bit的centos5,其他版本可以在上面的路径中找到相关的链接 3.运行命令 rpm -ivh pgdg-centos92-9.2-6.noarch.rpm 安装 4.运行命令 yum install postgresql92-server 安装ser