使用setkey手工配置IPSec

需要在两个节点之间配置IPSec,由于对端A节点将IPSec命令封装了,所以本端B节点没有使用racoon自动协商生成IPsec SA,而采用setkey手工配置SA。如果两端都需要初始配置,这种方法也适用。

 

关键在于,1)两端的mode、加密方式、key、spi要一致 2)配置setkey.conf文件

 

mode分为传输模式(transport)和隧道模式(tunnel),传输模式适合end-to-end,隧道模式适合site-to-site(也支持end-to-end或者end-to-site),所以隧道模式更加灵活。下文会分别描述如何配置。

 

1.假设A节点已配好,现在仅需要配置B节点的setkey.conf。A节点配置信息可以通过以下两个命令查询

setkey -D, 检查配置的SAD (安全联盟数据库)

setkey -DP, 检查配置的SPD (用来存放IPSec 的规则,规则定义哪些流量需要走IPSec)

B节点要安装ipsec-tools,可以找rpm包安装,装好包后相关文件会放在/etc/racoon下,手工配置可在这个路径下新建文件setkey.conf

 

2.配置B节点的setkey.conf

A节点:10.166.22.22/22   B节点:10.188.11.11/22 

(1)如果采用传输模式,则不需要关注子网掩码,B节点的setkey.conf类似如下配置

#!/usr/sbin/setkey -f

# Flush the SAD and SPD

flush;         #效果等同于在命令行执行setkey -F, 即清除SAD信息

spdflush;   #效果等同于在命令行执行setkey -FP, 即清除SPD信息

##配置SAD##

#A->B, spi: 29579, mode: transport, 加密方式: 3des, key: 0x9086d234780b898efab61237874345789885b87c076cccf9

#说明,模式默认为传输模式,所以-m transport 也可以省略

add 10.166.22.22 10.188.11.11 esp 29579 -m transport -E 3des-cbc 0x9086d234780b898efab61237874345789885b87c076cccf9;

#B->A, spi: 29578, mode: transport, 加密方式: 3des, key: 0x9086d234780b898efab61237874345789885b87c076cccf8

add 10.188.11.11 10.166.22.22 esp 29578 -m transport -E 3des-cbc 0x9086d234780b898efab61237874345789885b87c076cccf8;

##配置SPD##

#定义A->B的流量走IPSec

spdadd 10.166.22.22 10.188.11.11 any -P in ipsec esp/transport//require;

#定义B->A的流量走IPSec

spdadd 10.188.11.11 10.166.22.22 any -P out ipsec esp/transport//require;

 

(2)如果采用传输模式,需要关注两端子网掩码信息,B节点的setkey.conf类似如下配置

#!/usr/sbin/setkey -f

# Flush the SAD and SPD

flush;         #效果等同于在命令行执行setkey -F, 即清除SAD信息

spdflush;   #效果等同于在命令行执行setkey -FP, 即清除SPD信息

 ##配置SAD##

#A->B, spi: 29579, mode: tunnel, 加密方式: 3des, key: 0x9086d234780b898efab61237874345789885b87c076cccf9

add 10.166.22.22 10.188.11.11 esp 29579 -m tunnel -E aes-cbc 0x9086d234780b898efab61237874345789885b87c076cccf9;

#B->A, spi: 29578, mode: tunnel, 加密方式: 3des, key: 0x9086d234780b898efab61237874345789885b87c076cccf8

add 10.188.11.11 10.166.22.22 esp 29578 -m tunnel -E aes-cbc 0x9086d234780b898efab61237874345789885b87c076cccf8;

 ##配置SPD##

#定义A->B的流量走IPSec,10.166.22.22/22 10.188.11.11/22也可以换成节点所在安全网关

spdadd 10.166.22.22/22 10.188.11.11/22 any -P in ipsec esp/tunnel/10.166.22.22-10.188.11.11/use;

#定义B->A的流量走IPSec,10.188.11.11/22 10.166.22.22/22也可以换成节点所在安全网关

spdadd 10.188.11.11/22 10.166.22.22/22 any -P out ipsec esp/tunnel/10.188.11.11-10.166.22.22/use;

 

3.激活配置,B节点执行

setkey -f /etc/racoon/setkey.conf

 

4.检查配置

(1)检查配置的SAD

[root@server1111 ~]# setkey -D

10.188.11.11 10.166.22.22

        esp mode=transport spi=29578(0x0000738a) reqid=0(0x00000000)

        E: 3des-cbc 9086d234 780b898e fab61237 87434578 9885b87c 076cccf8

……

10.166.22.22 10.188.11.11

        esp mode=transport spi=29579(0x0000738b) reqid=0(0x00000000)

        E: 3des-cbc 9086d234 780b898e fab61237 87434578 9885b87c 076cccf9

……

(2)检查配置的SPD

[root@server1111 ~]# setkey -DP

10.188.11.11[any] 10.166.22.22[any] 255

        out prio def ipsec

        esp/transport//require

……

10.166.22.22[any] 10.188.11.11[any] 255

        in prio def ipsec

        esp/transport//require

……

 

5.验证IPSec

(1)互相ssh、sftp等能通

注意:如果仅一端配了IPSec,两端就不能互相ssh了,等到另一端也配好了对应的IPSec,就能恢复ssh、sftp等。

           如果ssh希望看到更多信息, ssh -v 是debug模式。

(2)抓包看是否加密

tcpdump src host <ip of the other end>  抓包看信息是加密的(带ESP)。

如果需要写入文件加上选项“-w”, tcpdump src host <ip of the other end>  -w somefile.pcap,可以用Wireshark查看。

注意:

没有配置IPSec可以这样抓基于udp的包   tcpdump udp port 162 and src host <some ip>,但是配置完IPSec后这样是抓不到的,因为协议是ESP(封装好的加密负载),端口也发生了变化。

 

参考资料:

IPSec-Tools配置   https://blog.csdn.net/zt698/article/details/4811604

使用racoon setkey搭建IPsec VPN环境   https://blog.csdn.net/rosetta/article/details/8552790

使用 ipsec-tools 设置 SAD 和 SPD   https://blog.csdn.net/bytxl/article/details/42966131

IPSec VPN中隧道模式和传输模式区别 https://wenku.baidu.com/view/201cf300ff00bed5b9f31de4.html

PSec协议抓包详解和IPSec NAT穿越报文解析   https://blog.csdn.net/ever_peng/article/details/89217263

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值