SWAN之ikev2协议dhcp-dynamic配置测试

IPSecurity 专栏收录该内容
89 篇文章 4 订阅

本测试主要验证网关moon通过DHCP协议由服务器获取地址,并分配给远程客户端carol和dave的功能,以及moon网关上farp插件的arp代理功能。DHCP服务器为主机venus(10.1.0.20),其IP池的范围是:10.1.0.50到10.1.0.60。本次测试拓扑如下:

在这里插入图片描述

carol主机配置

carol的配置文件:ikev2/dhcp-dynamic/hosts/carol/etc/ipsec.conf,内容如下,注意其中leftsourceip字段指定为%config,意味值将向对端请求IP地址信息。

config setup

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev2

conn home
        left=PH_IP_CAROL
        leftsourceip=%config
        leftcert=carolCert.pem
        leftid=carol@strongswan.org
        leftfirewall=yes
        right=PH_IP_MOON
        rightsubnet=10.1.0.0/16
        rightid=@moon.strongswan.org
        auto=add

以下carol主机的strongswan配置文件:ikev2/dhcp-dynamic/hosts/carol/etc/strongswan.conf,此处增加了resolve插件的加载,用于操作DNS相关文件,如:/sbin/resolvconf。

charon {
  load = random nonce aes sha1 sha2 md5 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default updown resolve
}

主机dave的配置与carol基本相同。以下为moon网关的配置文件:ikev2/dhcp-dynamic/hosts/moon/etc/ipsec.conf,注意这里的rightsourceip字段指定为%dhcp,将为连接的客户端使用dhcp服务器分配地址。

config setup

conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev2
        left=PH_IP_MOON
        leftsubnet=10.1.0.0/16
        leftcert=moonCert.pem
        leftid=@moon.strongswan.org
        leftfirewall=yes

conn rw
        right=%any
        rightsourceip=%dhcp
        auto=add

网关moon的配置文件:ikev2/dhcp-dynamic/hosts/moon/etc/strongswan.conf,内容如下,相关的插件由farp和dhcp,前者用于arp代理,后者支持DHCP协议相关操作(DHCP客户端)。DHCP的服务器地址指定为广播地址:10.1.255.255。

charon {
  load = random nonce aes sha1 sha2 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default updown attr farp dhcp

  plugins {
    dhcp {
      server = 10.1.255.255
    }
  }
}

网关moon的配置文件:ikev2/dhcp-dynamic/hosts/moon/etc/iptables.rules,内容如下。由于要使用DHCP服务,这里在INPUT和OUTPUT链上运行bootpc和bootps报文通过,另外在INPUT链允许eth1接口的目的地址为10.1.255.255的广播报文,因为DHCP的offer和ack报文可能已广播的形式返回。

# allow bootpc and bootps
-A OUTPUT -p udp --sport bootpc --dport bootps -j ACCEPT
-A INPUT  -p udp --sport bootps --dport bootps -j ACCEPT

# allow broadcasts from eth1
-A INPUT -i eth1 -d 10.1.255.255 -j ACCEPT

DHCP配置

DHCP服务器配置在venus主机(10.1.0.20)上,其配置文件如下。定义的可分配的IP地址范围:10.1.0.50到10.1.0.60,在本次测试中使用了两台客户端(carol和dave),依次分配的地址为:10.1.0.50和10.1.0.51。

# cat /etc/dhcp/dhcpd.conf 
# dhcpd configuration file

ddns-update-style none;

subnet 10.1.0.0 netmask 255.255.0.0 {
  option domain-name          "strongswan.org";
  option domain-name-servers   10.1.0.20;
  option netbios-name-servers  10.1.0.10;
  option routers               10.1.0.1;
  option broadcast-address     10.1.255.255;
  next-server                  10.1.0.20;

  range 10.1.0.50 10.1.0.60;
}

测试准备阶段

配置文件:ikev2/dhcp-dynamic/pretest.dat,除了通常的ipsec连接的启动的语句外,需要注意的是在venus主机上启动dhcp服务。

venus::cat /etc/dhcp/dhcpd.conf
venus::service isc-dhcp-server start 2> /dev/null

测试阶段

配置文件:ikev2/dhcp-dynamic/evaltest.dat。以下测试语句检查carol主机上连接的建立情况。之后,在内部主机alice上使用ping命令测试到主机10.1.0.50的连通性,10.1.0.50为分别配给carol主机的虚拟IP地址。以及在carol主机上ping主机alice。

carol::ipsec status 2> /dev/null::home.*ESTABLISHED.*carol@strongswan.org.*moon.strongswan.org::YES
carol::ipsec status 2> /dev/null::home.*INSTALLED, TUNNEL::YES
alice::ping -c 1 10.1.0.50::64 bytes from 10.1.0.50: icmp_.eq=1::YES
carol::ping -c 1 PH_IP_ALICE::64 bytes from PH_IP_ALICE: icmp_.eq=1::YES

以下为carol主机在连接建立节点IKE_AUTH消息中发送的CFG_REQUEST载荷:

在这里插入图片描述

以下为moon网关回复的CFG_REPLY载荷,其中分配的IP地址为10.1.0.50,DNS服务器为10.1.0.20和10.1.0.10。

在这里插入图片描述

在moon网关回复carol主机之前,其先要向DHCP服务器venus请求IP地址,如下为交互报文。DHCP在分配地址(如10.1.0.50)之前,先使用ARP确认此地址没有在使用,由于此操作耗时较长,导致carol主机又发送了IKE_AUTH Initiator请求消息。最后,moon主机回复了两个IKE_AUTH Responder Response消息。

在这里插入图片描述

由下图可见,在alice主机发送arp请求时,moon网关回复了自身eth1接口的MAC地址。以至alice主机将ping报文发送对moon网关,经过加密之后发送给carol主机,回复报文经过相反的路径。

在这里插入图片描述

strongswan测试版本: 5.8.1

END

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值