IPsec in linux-2.6(一)

1. 理解 IPsec

IPsec 是一种建立在 Internet 协议 (IP) 层之上的协议。 它能够让两个或更多主机以安全的方式来通讯 (并因此而得名)。
IPsec 包括了两个子协议:
    *Encapsulated Security Payload (ESP) , 保护 IP 包数据不被第三方介入, 通过使用对称加密算法 (例如 Blowfish、 3DES)。
    * Authentication Header (AH) , 保护 IP 包头不被第三方介入和伪造, 通过计算校验和以及对 IP 包头的字段进行安全散列来实现。随后是一个包含了散列值的附加头, 以便能够验证包。

ESP 和 AH 可以根据环境的不同, 分别或者一同使用。
IPsec 既可以用来直接加密主机之间的网络通讯 (也就是 传输模式 ); 也可以用来在两个子网之间建造 “虚拟隧道” 用于两个网络之间的安全通讯 (也就是 隧道模式 )。 后一种更多的被称为是 虚拟专用网 (VPN) 。

2. Linux 下测试

我们这里需要下载ipsec-tools 来测试,主页:
http://ipsec-tools.sourceforge.net/

 

kernel 的配置选项:

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

 

我们测试用例,假设有两台主机:
28.224.158.202128.224.165.156

通过ipsec 来建立通讯通道。
128.224.158.202 主机上:
创建/etc/setkey.conf配置文件,其内容如下:

#!/sbin/setkey -f
flush;
spdflush;

# AH
add 128.224.165.156 128.224.158.202 ah 15700 -A hmac-md5 "1234567890123456";
add 128.224.158.202 128.224.165.156 ah 24500 -A hmac-md5 "1234567890123456";

# ESP
add 128.224.165.156 128.224.158.202 esp 15701 -E 3des-cbc "123456789012123456789012";
add 128.224.158.202 128.224.165.156 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 128.224.158.202 128.224.165.156 any -P out ipsec
           esp/transport//require
           ah/transport//require;

spdadd 128.224.165.156 128.224.158.202 any -P in ipsec
           esp/transport//require
           ah/transport//require;

执行以下命令:
 1. setkey -f /etc/setkey.conf
 2. setkey -D
 3. setkey -DP

128.224.165.156 主机上:
创建/etc/setkey.conf配置文件,其内容如下:
#!/sbin/setkey -f
flush;
spdflush;

# AH
add 128.224.165.156 128.224.158.202 ah 15700 -A hmac-md5 "1234567890123456";
add 128.224.158.202 128.224.165.156 ah 24500 -A hmac-md5 "1234567890123456";

# ESP
add 128.224.165.156 128.224.158.202 esp 15701 -E 3des-cbc "123456789012123456789012";
add 128.224.158.202 128.224.165.156 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 128.224.165.156 128.224.158.202 any -P out ipsec
           esp/transport//require
           ah/transport//require;

spdadd 128.224.158.202 128.224.165.156 any -P in ipsec
           esp/transport//require
           ah/transport//require;

执行以下命令:
 1. setkey -f /etc/setkey.conf
 2. setkey -D
 3. setkey -DP

128.224.165.156 主机上执行:
1. ping 128.224.158.202&
2. tcpdump | grep 128.224.158.202
可以看到如下结果:
01:30:06.384668 IP octeon > 128.224.158.202:
AH(spi=0x00003d54,seq=0x399): ESP(spi=0x00003d55,seq=0x399), length 88
01:30:06.385113 IP 128.224.158.202 > octeon:
AH(spi=0x00005fb4,seq=0x1e7): ESP(spi=0x00005fb5,seq=0x1e7), length 88
01:30:07.389619 IP octeon > 128.224.158.202:
AH(spi=0x00003d54,seq=0x39a): ESP(spi=0x00003d55,seq=0x39a), length 88
01:30:07.394661 IP 128.224.158.202 > octeon:
AH(spi=0x00005fb4,seq=0x1e8): ESP(spi=0x00005fb5,seq=0x1e8), length 88
01:30:08.393231 IP octeon > 128.224.158.202:

IP octeon 的ip 就是128.224.165.156。
由tcpdump 抓的包可以看出:128.224.165.156
发给128.224.158.202的包全部在IP pakcet 头加了 AH 和 ESP 加密信息,而且两者之间可以正常通讯。

另外如果执行:setkey -f /etc/setkey.conf 时,碰到这样的错误提示:pfkey_open: Address family not supported by protocol
一般就是由于没有加载Kernel IPsec 相关的modlue.如果IPsec相关的代码被编译成module 形式,用需要手动加载相关ipsec module:
modprobe af_key

 

参考:

1. http://www.ipsec-howto.org/

2. http://www.shorewall.net/IPSEC-2.6.html

3. http://zh.wikipedia.org/wiki/IPsec

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值