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

本测试主要验证网关moon通过DHCP协议由服务器获取地址,在DHCP发现报文中携带客户端的ID信息,获取指定地址,但是本次测试虽然携带了ID字段,但是在DHCP服务器中配置了基于特定MAC地址的IP分配,分配给远程客户端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-mac/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-mac/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-mac/hosts/moon/etc/strongswan.conf,内容如下,相关的插件由farp和dhcp,前者用于arp代理,后者支持DHCP协议相关操作(DHCP客户端)。DHCP的服务器地址指定为广播地址:10.1.255.255,identity_lease设置为yes表示在DHCP发现报文中发送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-mac/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-mac/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 {
  hardware ethernet            7a:a7:51:cc:22:4a;
  fixed-address                10.1.0.30;
}

host dave {
  hardware ethernet            7a:a7:93:70:2b:21;
  fixed-address                10.1.0.40;
}

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

$ cat ikev2/dhcp-static-mac/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=7a:a7:51:cc:22:4a,10.1.0.30
dhcp-host=7a:a7:93:70:2b:21,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-mac/pretest.dat,除了通常的ipsec连接的启动的语句外,需要注意的是在venus主机上启动dhcp服务。

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

测试阶段

配置文件:ikev2/dhcp-static-mac/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网关回复carol主机认证消息之前,其先要向DHCP服务器venus请求IP地址,如下为交互报文。DHCP分配地址为10.1.0.30。

在这里插入图片描述

DHCP发现报文如下,虽然Client ID字段仍然为carol@strongswan.org,但是在DHCP服务器也将没有依据此ID分配IP的配置。本次测试设置了依据MAC的IP分配,Client MAC为:7a:a7:51:cc:22:4a。其中7a:a7为strongswan进程固定的字段,其它字段为哈希结果。

在这里插入图片描述

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

在这里插入图片描述

strongswan测试版本: 5.8.1

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值