• ipsec-tools最新版本为0.8.2,此处以0.7.3版本为例说明安装和使用过程。可参考ipsec-howto

安装步骤

ipsec-tools依赖于linux2.6版本内核,在安装ipsec-tools前需编译安装linux kernel 2.6,此处以2.6.34.1为例。

内核编译步骤
  1. 下载 linux-2.6.34.1.tar.bz2
  2. 将文件移动到 /usr/src/kernels/

    mv linux-2.6.34.1.tar.bz2 /usr/src/kernels/
  3. 解压 tar -jxvf linux-2.6.34.1.tar.bz2
  4. make menuconfig 导入加解密模块。
  • 报错: 'make menuconfig' requires the ncurses libraries.原因:在终端连接主机的情况下进行GUI菜单配置,缺失必要的包ncurses。

    解决方法:安装ncurses包,yum install ncurses-devel

    需加载或引入的模块如下:

    Networking support (NET) [Y/n/?] y

    *

    • Networking options

      PF_KEY sockets (NET_KEY) [Y/n/m/?] y

      IP: AH transformation (INET_AH) [Y/n/m/?] y

      IP: ESP transformation (INET_ESP) [Y/n/m/?] y

      IP: IPsec user configuration interface (XFRM_USER) [Y/n/m/?] y

    Cryptographic API (CRYPTO) [Y/n/?] y

    HMAC support (CRYPTO_HMAC) [Y/n/?] y

    Null algorithms (CRYPTO_NULL) [Y/n/m/?] y

    MD5 digest algorithm (CRYPTO_MD5) [Y/n/m/?] y

    SHA1 digest algorithm (CRYPTO_SHA1) [Y/n/m/?] y

    DES and Triple DES EDE cipher algorithms (CRYPTO_DES) [Y/n/m/?] y

    AES cipher algorithms (CRYPTO_AES) [Y/n/m/?] y

  1. make
  • 报错:gcc: error: elf_i386: No such file or directory

    原因:gcc 4.8不再支持linker-style架构。

    解决方法:im arch/x86/vdso/Makefile,找到DSO_LDFLAGS_vdso.lds = -m elf_x86_64,将-m elf_x86_64改为-m64,找到VDSO_LDFLAGS_vdso32.lds = -m elf_i386,将-m elf_i386改为-m32即可。
  • 报错:drivers/net/igbvf/igbvf.h:129:15: error: duplicate member ‘page’

    原因:gcc版本与内核版本冲突导致,gcc版本4.8不支持内核linux 2.6.34中在结构体和结构体外重复定义的方式。

    解决方法:更改内核源码 vim drivers/net/igbvf/igbvf.h,将129行的struct page *page改为struct page *pagep,重新编译。
  • 报错:Documentation/video4linux/v4lgrab.c:34:28: fatal error: linux/videodev.h: No such file or directory

    原因:缺失libv4l-devel包。

    解决方法:安装libv4l-devel包,yum install libv4l-devel,修改内核源码vim Documentation/video4linux/v4lgrab.c,将#include <linux/videodev.h>改为#include <libv4l1-videodev.h>,重新编译。
  1. make modules_install
  2. make install

    检查是否安装成功:awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

    0 : CentOS Linux (2.6.34.1) 7 (Core)

    1 : CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)

    2 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)

    3 : CentOS Linux (0-rescue-6c250481a09c4f48a0b2432ad5b4c8b8) 7 (Core)

    出现CentOS Linux (2.6.34.1) 7 (Core)表明内核安装成功。

ipsec-tools安装步骤
  1. 下载ipsec-tools-0.7.3.tar.gz并解压。
  2. configure

    指定内核版本为2.6

    ./configure --with-kernel-headers=/lib/modules/2.6.34.1/build/include/
  • 报错:configure: error: OpenSSL version must be 0.9.6 or higher. Aborting.

    解决方法:yum install openssl-devel
  1. make
  • 报错:token.c:(.text+0xc6d): undefined reference to 'yywrap'

    解决方法:yum install flex flex-devel bison,然后重新configure,make。
  • 报错:ipsec_doi.c:1321:24: error: argument to ‘sizeof’ in ‘memset’ call is the same expression as the destination

    解决方法:vim src/racoon/ipsec_doi.c,将1321行memset(pair, 0, sizeof(pair));中的sizeof(pair)改为sizeof(*pair),重新make。
  • 报错:/usr/include/selinux/flask.h:5:2: error: #warning "Please remove any #include's of this header in your source code." [-Werror=cpp]

    解决方法:删除第5行的#warning注释,sed -i '5d' /usr/include/selinux/flask.h,后面的warning错误,解决方法相同。
  1. make install

    检查是否安装成功

    which setkey

    /usr/local/sbin/setkey

    which racoon

    /usr/local/sbin/racoon

    出现以上信息表示ipsec-tools安装成功

配置步骤

  • 假设主机A的IP为1.1.1.1,主机B的IP为2.2.2.1,且主机A、B可互相通信。

    配置文件:在root目录下创建3个文件

    1、psk.txt (两个主机配置相同)
1.1.1.1 testkey
2.2.2.2 testkey

2、setkey.conf

主机A:

#!/usr/sbin/setkey -f
flush;
spdflush; spdadd 1.1.1.1/32[any] 2.2.2.1/32[any] any -P out ipsec
esp/tunnel/1.1.1.1-2.2.2.1/require;
spdadd 2.2.2.1/32[any] 1.1.1.1/32[any] any -P in ipsec
esp/tunnel/2.2.2.1-1.1.1.1/require;

主机B:

#!/usr/sbin/setkey -f
flush;
spdflush; spdadd 2.2.2.1/32[any] 1.1.1.1/32[any] any -P out ipsec
esp/tunnel/2.2.2.1-1.1.1.1/require;
spdadd 1.1.1.1/32[any] 2.2.2.1/32[any] any -P in ipsec
esp/tunnel/1.1.1.1-2.2.2.1/require;

3、racoon.conf

主机A:

#!/usr/local/bin/racoon
path pre_shared_key "/root/psk.txt";
listen {
isakmp 1.1.1.1 [500];
}
remote 2.2.2.1 {
exchange_mode main, aggressive;
my_identifier address 1.1.1.1;
peers_identifier address 2.2.2.1;
initial_contact on;
proposal_check obey;
proposal {
encryption_algorithm aes 256;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group 2;
}
}
sainfo address 1.1.1.1 any address 2.2.2.1 any{
encryption_algorithm des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
sainfo address 2.2.2.1 any address 1.1.1.1 any{
encryption_algorithm des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}

主机B:

#!/usr/local/bin/racoon
path pre_shared_key "/root/psk.txt";
listen {
isakmp 2.2.2.1 [500];
}
remote 1.1.1.1 {
exchange_mode main, aggressive;
my_identifier address 2.2.2.1;
peers_identifier address 1.1.1.1;
initial_contact on;
proposal_check obey;
proposal {
encryption_algorithm aes 256;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group 2;
}
}
sainfo address 2.2.2.1 any address 1.1.1.1 any{
encryption_algorithm des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
} sainfo address 1.1.1.1 any address 2.2.2.1 any{
encryption_algorithm des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}

启动IPsec:

1、setkey setk.conf

此时使用setkey -DP命令可以看到SPD数据

2、/usr/local/sbin/racoon -f racoon.conf -ddddddd -l /tmp/ipsec-log.txt -v

可以在/tmp/ipsec-log.txt中查看日志,方便调试

测试:

在主机A上 ping 主机B,并在主机B上抓取esp报文

主机B:tcpdump -i eth0 -n src 1.1.1.1 and esp

主机A能ping通主机B,且在主机B上抓取到来自主机A的esp报文,说明隧道成功建立。

ipsec-tools安装教程的更多相关文章

  1. VMware Tools安装教程

    安装依赖: sudo yum install eject 步骤: 确保 Linux 虚拟机已打开电源. 如果正在运行 GUI 界面,请打开命令 shell. 注意:以 root 用户身份登录,或使用 ...

  2. FreeBSD虚拟机 VMware Tools 安装教程

    对于 FreeBSD 虚拟机,您可以使用命令行工具手动安装或升级 VMware Tools 前提条件 开启虚拟机. 确认客户机操作系统正在运行. 因为 VMware Tools 安装程序是使用 Per ...

  3. [最直白版]一步一步教你用VMware Workstation12安装Ubuntu 16.04和VMware Tools的教程

    [最直白版]Win10下一步一步教你用 VMware Workstation12安装Ubuntu 16.04和VMware Tools的教程 安装过程中使用的软件(要保证电脑里面有下列三个东西): 1 ...

  4. Pro Tools安装图文教程

    Pro Tools安装图文教程   Avid Pro Tools是Digidesign公司出品的一款音质最佳.音频制作强大的软件,能够在Mac或PC上为影片编曲.录制.编辑和混制高品质音乐或声音,生成 ...

  5. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

  6. Windows环境下Android Studio v1.0安装教程

    Windows环境下Android Studio v1.0安装教程 准备工具 JDK安装包. 要求:JDK 7以及以上版本. Android Studio安装文件. Windows: exe(包含SD ...

  7. Android笔记——Windows环境下Android Studio v1.0安装教程

    本文主要讲解Windows环境下Android Studio的安装教程,Mac的Android Studio安装与此类似不在赘述,另外友情提示Windows下的SDK与Mac的SDK是通用的,可以直接 ...

  8. .NET Reflector 7.6.1.824 Edition .NET程序反编译神器(附插件安装教程2012-10-13更新) 完全破解+使用教程

    原文来自VAllen cnblogs 一.使用教程1.解压后,双击Reflector.exe,如果有选择默认版本的.Net Framework,根据需要选择即可.你选择的版本不同则出现的默认程序集也不 ...

  9. 【转】Windows环境下Android Studio v1.0安装教程

    原文网址:http://ask.android-studio.org/?/article/9 http://android-studio.org/index.php/docs/experience/1 ...

  10. Red Gate系列之五 .NET Reflector 7.6.1.824 Edition .NET程序反编译神器(附插件安装教程2012-10-13更新) 完全破解+使用教程

    原文:Red Gate系列之五 .NET Reflector 7.6.1.824 Edition .NET程序反编译神器(附插件安装教程2012-10-13更新) 完全破解+使用教程 Red Gate ...

随机推荐

  1. java词频统计——web版支持

    需求概要: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件. 2.用户直接输入要统计的文本,服务器返回结果 3.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经 ...

  2. 浅谈JavaSript中的this

    JavaScript的this对初学者来说一直是一个很头疼的问题,因为它的指向刚刚接触的时候往往觉得有点莫名奇妙,这篇博客用实例来概括一下,this代表什么以及如何改变函数的this. 在<Ja ...

  3. 拿到一个崭新的Linux!

    买了服务器,这次买了半年,不能浪费了! 0.准备工作: l查看Ip:ifconfig  ip addr 不能上网? 执行以下: vi /etc/sysconfig/network-scripts/if ...

  4. 【题解】 [ZJOI2009]假期的宿舍 (二分图匹配)

    懒得复制题面,戳我 Solution: 处理出床位.要留校的人(注意来访问的人一定住校),和人与人的关系(连边) 再接着就是二分图. 注意的就是连向的人必须是有床位的 还要注意的就是只用判断住校的同学 ...

  5. THUWC2019爆零记

    Day -1 现在在机房里,准备敲敲板子什么的. 今天晚上放假诶,要好好睡一下.好好睡是不可能的,这辈子不可能的. Day 0 现在在酒店,\(lwh\)神仙在超越,我打了个\(treap\)的板子就 ...

  6. 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  7. 【转】 CRC循环冗余校验码

    1.CRC CRC循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性. 2.模2除法 ①不 ...

  8. 解析word公式的解决方案(office插入和wps插入不同的解决方案)

    这几天在公司的项目有个需求就是数学公式的导入,而对于word来说,插入的公式xml格式,需要转换为mathML,借用插件MathJax来进行展示,而对于wps插入的公式来说,获取到的是一个wmf图片, ...

  9. 位运算的一种应用 和 hiho1516过河解题报告

    初始i=s 每次:i=(i-1) & s 直到i=0 etc.11000100000100000000 10000=10001 & 1100001000=01111 & 110 ...

  10. 函数和常用模块【day06】:json模块(十一)

    本节内容 1.dumps序列化和loads反序列化 2.dump序列化和load反序列化 3.序列函数 1.dumps序列化和loads反序列化 dumps()序列化 1 2 3 4 5 6 7 8 ...