SWAN之ikev2协议dhcp-static-client-id配置测试

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

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

在这里插入图片描述

carol主机配置

carol的配置文件:ikev2/dhcp-static-client-id/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

主机dave的配置与carol基本相同。以下为moon网关的配置文件:ikev2/dhcp-static-client-id/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-static-client-id/hosts/moon/etc/strongswan.conf,内容如下,相关的插件由farp和dhcp,前者用于arp代理,后者支持DHCP协议相关操作(DHCP客户端)。DHCP的服务器地址指定为广播地址:10.1.255.255,identity_lease设置为yes表示启用基于ID身份的租约。

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
      identity_lease = yes
    }
  }
}

网关moon的配置文件:ikev2/dhcp-static-client-id/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),根据DHCP发现报文Discovery中的client-identifier字段的值设置了两个固定IP分配方案,一是如果ID等于carol@strongswan.org,IP地址分配为10.1.0.30。另一个是ID为dave@strongswan.org时,IP固定分配10.1.0.40。

$ cat ikev2/dhcp-static-client-id/hosts/venus/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     PH_IP_VENUS;
  option netbios-name-servers    PH_IP_ALICE;
  option routers                 PH_IP_MOON1;
  option broadcast-address       10.1.255.255;
  next-server                    PH_IP_VENUS;

  range 10.1.0.50 10.1.0.60;
}

host carol {
  option dhcp-client-identifier "carol@strongswan.org";
  fixed-address                  10.1.0.30;
}

host dave {
  option dhcp-client-identifier "dave@strongswan.org";
  fixed-address                  10.1.0.40;
}

以下为DNSMASQ的配置,其内容与以上的DHCP配置文件达到的效果一致。根据以下pretest.dat测试准备阶段的内容,本测试启动的服务为isc-dhcp-server,使用以上的配置文件。

$ cat ikev2/dhcp-static-client-id/hosts/venus/etc/dnsmasq.conf 
interface=eth0
dhcp-range=10.1.0.50,10.1.0.60,255.255.0.0,10.1.255.255
dhcp-host=id:carol@strongswan.org,10.1.0.30
dhcp-host=id:dave@strongswan.org,10.1.0.40
dhcp-option=option:router,PH_IP_MOON1
dhcp-option=option:dns-server,PH_IP_VENUS
dhcp-option=option:netbios-ns,PH_IP_ALICE
dhcp-option=option:domain-name,strongswan.org
log-dhcp

测试准备阶段

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

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

测试阶段

配置文件:ikev2/dhcp-static-client-id/evaltest.dat。以下测试语句检查carol主机上连接的建立情况。之后,在内部主机alice上使用ping命令测试到主机10.1.0.30的连通性,10.1.0.30为分别配给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.30::64 bytes from 10.1.0.30: 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载荷,ID载荷中的内容为:carol.strongswan.org,网关moon将在DHCP发现报文中携带此ID:

在这里插入图片描述

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

在这里插入图片描述

网关moon的DHCP发现报文如下,可见其中的ID字段:carol@strongswan.org。

在这里插入图片描述

在moon网关回复carol主机认证消息之前,其先要向DHCP服务器venus请求IP地址,如下为交互报文。DHCP分配地址为10.1.0.30。

在这里插入图片描述

由下图可见,在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币套餐、付费专栏及课程。

余额充值