赞
踩
本测试主要验证网关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的配置文件: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服务器配置在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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。